2011-10-11 74 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

相關問題