将关系映射到地址以及人员和公司

时间:2013-10-20 16:04:07

标签: mysql database database-design

我怀疑如何在我的问题中映射关系

我必须向实体personcompany提供存储地址的字段,因此我对映射的最佳方式存有疑问。

个人和公司可以共享相同的地址。

我正在使用mysql工作台来创建图表并创建数据库。

那我该怎么办?

2 个答案:

答案 0 :(得分:1)

定义名为address的新实体,并将其指定为personcompany表中的外键约束。如果地址相同,则personcompany通过外键具有相同的地址。

答案 1 :(得分:0)

某个人/公司可以有多个地址吗? 如果没有,您可以将FK密钥放在个人和公司表中;

 Person Table
   AddressId (FK)

 Company Table
   AddressId (FK)

或者您可以在地址表中拥有2个FK,一个到一个人,一个到公司。

 Address Table
   PersonId (FK, Nullable)
   CompanyId (FK, Nullable)

如果是的话,你需要做很多关系。 你还需要2个桌子。

 PersonToAddress Table
   PersonId  (FK to Person)      
   AddressId (FK to Address)
   *Compound PK (PersonId, AddressId)

 CompanyToAddress Table
   CompanyId  (FK to Company)      
   AddressId (FK to Address)
   *Compound PK (CompanyId, AddressId)