如何将多个条目与另一个表中的另一个条目相关联?

时间:2011-10-11 04:54:49

标签: php mysql database

我正在创建一个人们可以出租房屋的网站。我目前在我的数据库中有两个表。

属性
- property_id
- 地址
- 城市

设施
- amenity_id
- amenity_name

网站管理员可以向数据库添加便利设施。房东登录该网站,在那里他们有能力选择他们的财产有哪些设施(例如:宠物,带家具)。

我正试图找出一种方法将一种或多种设施与一个单一的财产联系起来。我猜我需要第三张桌子,以某种方式跟踪哪些设施与房产相关联。

如何将多个amenity_id与一个property_id相关联?

1 个答案:

答案 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