2011-10-11 71 views
0

我正在创建一个网站,人们可以租出他们的房子。我目前在我的数据库中有两个表。如何将多个条目关联到另一个表中的另一个条目?

属性
  - PROPERTY_ID
  - 地址
  - 城市

设施
  - amenity_id
  - amenity_name

站点管理员有权添加阿们的能力访问数据库。房东登录该网站,在那里他们有能力选择他们的财产有哪些设施(例如:宠物,家具)。

我想找出一种方法将一个或多个设施关联到一个单一的属性。我猜我需要第三个表格,它会以某种方式跟踪哪些设施与属性相关联。

如何将多个amenity_id关联到一个property_id?

回答

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 

在上述例子中,属性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 
+0

+1只是输入相同的答案:) – vascowhite

+0

首先,感谢您的帮助! 我有点理解你在说什么,但我很难想象它的一切。请给我看一个具有不同表格的值的例子,这样我就可以看到它们是如何相互关联的?此外,什么是需要选择所有设施的特定属性的SQL语句?我不完全理解你提供的代码示例。 – zeckdude

+0

@zeckdude,我用例子更新了我的帖子。 – mike01010

相关问题