我正在创建一个人们可以出租房屋的网站。我目前在我的数据库中有两个表。
属性
- property_id
- 地址
- 城市
设施
- amenity_id
- amenity_name
网站管理员可以向数据库添加便利设施。房东登录该网站,在那里他们有能力选择他们的财产有哪些设施(例如:宠物,带家具)。
我正试图找出一种方法将一种或多种设施与一个单一的财产联系起来。我猜我需要第三张桌子,以某种方式跟踪哪些设施与房产相关联。
如何将多个amenity_id与一个property_id相关联?
答案 0 :(得分:4)
创建一个只有两列的PropertyAmenity表:
property_id
amenity_id
主键应该是property_id和amenity_id的组合。您可能还想添加user_id和update_date字段,审核非常重要。
这将允许您将房产与许多便利设施相关联。
外键关系应该介于:之间Properties.property_id and PropertyAmentity.property_id
Amentities.amenity_id and PropertyAmenity.amenity_id
示例:
Property:
property_id address city
100 Property 1 St. NY
101 Property 2 St. NY
Amenity:
amenity_id amenity_name
100 Central Air
200 Swimming Pool
PropertyAmenity
property_id amenity_id
100 100
100 200
101 100
在上面的例子中,Property 1既有中央空调,也有游泳池,而2号楼只有中央空调。
要选择给定属性的设施,您可以编写如下的SQL:
Select a.* from Property p, PropertyAmenity pa, Amenity a
where p.property_id = pa.property_id
and pa.amenity_id = a.amenity_id
and p.property_id = 100