【发布时间】:2012-09-04 03:43:12
【问题描述】:
所以我有三个表和三个模型:
Company (table: companies)
Person (table: people)
Address (table: addresses)
如何将这些连接在一起,考虑到每个人或公司可以有多个地址,但由于地址格式相同,我想使用一个“地址”表,因此可以完成交易/管理地址通过单一模型?
因为这个结构:
companies(id, name, ...)
people(id,name, ... )
addresses(id, foreign_id, foreign_model, ...)
对我来说似乎有点不合适。基本上这是现在的结构。 “foreign_model”字段是一个字符串,它指定地址属于哪个模型(即公司或个人)。
这一切都在Cakephp下,但是我这个结构有很多问题,我应该用什么来代替?
【问题讨论】:
-
我认为你需要更多的表,因为你有“许多”关系。您可以有一个 CompanyAdresses 表,其中包含 Company 和 Address 的键,PersonAdresses 也是如此。
-
感谢 Mikael,这确实是我首先想到的,但我真的试图避免它。我的意思是我们可以添加具有地址的新实体,然后每次都需要添加一个连接表?
-
np,是的,每个公司地址组合都会有一行。
-
您打算将其他东西与公司或个人联系起来吗?例如将商品卖给公司或个人?
标签: sql database-design normalization