我正在集思广益如何重组数据库的联系信息。如您所知,电话号码可以与个人(手机)、家庭(家庭电话)、组织/企业等相关联。从逻辑上讲,电话号码就是电话号码。手机号码和家庭电话号码之间没有真正的区别。一个人可以拥有多部手机,一个家庭可以拥有多条电话线,一个组织可以拥有多条电话线。
通常,在设计表格时,这意味着应该有一个电话号码表。它应该以一对多的方式链接到个人或家庭或组织。问题是,有人将如何强制电话记录仅由单个父记录拥有,无论该记录是个人记录、家庭记录还是组织记录?
在我看来,我想出的唯一两种方法是kludges。我想要一个优雅的解决方案。
首先是创建 3 个表,PersonPhones、FamilyPhones 和 OrganizationPhones。然后你有 3 个表,它们的任务是存储基本相同的数据。
第二个是创建一个结构怪异的电话表。它将有电话号码,一个可空字段用于个人 ID,另一个用于家庭 ID,第三个用于组织 ID。然后添加一个约束,强制这 3 个中的 2 个为 NULL。
有任何想法吗?