1

所以我有三个表和三个模型:

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

考虑到每个人或公司可以有多个地址,如何将它们连接在一起,但由于地址格式相同,我想使用一个“地址”表,因此可以通过单个地址完成交易/管理地址模型?

因为这个结构:

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

对我来说似乎有点格格不入。基本上这是现在的结构。“foreign_model”字段是一个字符串,它指定地址属于哪个模型(即公司或个人)。

所有这些都在 Cakephp 下,但是我对这个结构有很多问题,我应该改用什么?

4

1 回答 1

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 还是人员
ID --> companyid 或 poepleid

于 2012-09-11T08:44:01.170 回答