人和公司的mySQL联系表

时间:2017-10-23 23:27:57

标签: mysql

我有两张桌子:personcompany 我想创建一个表address知道:

  • person可以有零个,一个或多个address
  • company可以有零个,一个或多个address
  • address的基本行与personcompany的基本行相同

解决方案1 ​​

  • 创建一个包含所有地址行(街道,城市......)的表address(无外键)
  • 使用外键person_addressaddress_id
  • 创建person_id
  • 使用外键company_addressaddress_id
  • 创建company_id

=> personcompany可以共享相同的地址(好)而不会重复(好) =>有点麻烦:我不得不创建adress然后person/company_address

解决方案2

  • 使用外键person_adress 和所有地址行创建一个表person_id
  • 创建一个包含外键company_adress 的表格company_id以及所有地址行

=>地址信息的行定义了两次

解决方案3?

有没有办法创建唯一表adress ,可以引用personcompany

1 个答案:

答案 0 :(得分:0)

感谢Jacob Barnes的链接:
Foreign Key to multiple tables

创建一个"父表" entity person可以是companyadressentity然后引用0.8.2.0