2012-09-11 81 views
1

所以我有三個表,隨後三個型號,以及:這3個表的歸一化數據庫形式是什麼?

Company (table: companies) 
Person (table: people) 
Address (table: addresses) 

如何將這些連接在一起,考慮到每一個個人或公司可以有多個addressess,但由於地址是相同的格式我想喜歡使用單個「地址」表,所以處理/管理地址可以通過單個模型完成?

由於這種結構:

companies(id, name, ...) 
people(id,name, ...) 
addresses(id, foreign_id, foreign_model, ...) 

似乎有點格格不入我。基本上這是目前的結構。 'foreign_model'字段是一個字符串,它指定了該地址屬於哪個模型(即公司或人員)。

所有這在Cakephp下,但我有這個結構很多問題,我應該用什麼?

+0

我認爲你需要更多的表sinc你有'多'關係。您可以在CompanyAdresses表中使用公司和地址的鍵,PersonAdresses也是如此。 –

+0

感謝Mikael,這確實是我的第一想法,但我真的試圖避免它。我的意思是我們可以添加具有地址的新實體,然後我們每次都需要添加一個連接表? – Opi

+0

np,是的,每個公司地址組合都會有一行。 –

回答

1

如何生根粉這一點:

companies(id, name, address_id,..) 
people (id,name, address_id,...) 
addresses(id,...) 

企業和人民指向地址表的地址。 這裏你沒有存儲任何重複的地址如有

編輯:如果兩家公司,人們可以有多個地址

然後保存映射表

companies(id, name,..) 
people (id,name, ...) 
addresses(id,...) 

Address_map(id,address_id,type) 

其中type表示其是否一個公司或一個人
id - > companyid或poepleid

+0

嘿喬感謝,但公司和人們可以有很多地址(如公司有很多地址,你運送產品等),所以基本上這是一個一對多的連接。 – Opi

+0

@Opi:請檢查我的更新回答 –

+0

謝謝,這是有道理的 – Opi

相關問題