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