我正在尝试创建一个包含两个主要实体的联系人应用程序 - 个人和公司。一个人可以有许多电子邮件、号码和地址。一家公司也可以有许多电子邮件、号码和地址。我正在尝试确定适合这种情况的设计。
选项 #1 - 多个外键
电子邮件、号码和地址将有两列称为 person_id 和 company_id。根据数据所属的实体,一个将为空,另一个将包含一个链接回父级的 id。
选项 #2 - 每个实体每个类型一个表
我复制每个表,因此会有一个 company_addresses 表和一个 person_addresses 表。我会有两倍多的表,但这是目前最有意义的解决方案。
选项 #3 - 一个链接表
我创建一个表 - “链接”。该表将包含四列:source_id、source_entity、dest_id、dest_entity。因此,如果一家公司获得一个新号码,您将有如下一行:1,号码,2,公司。
选项 #4 - 多个链接表
我为每种类型的链接(company_address、person_address、company_email、person_email 等)创建一个表
你会选择哪个选项?