我正在集思广益,如何重组数据库的联系信息。如您所知,电话号码可以链接到某个人(手机),家庭(家庭电话),组织/企业等。逻辑上,电话号码是电话号码是电话号码。手机号码和家庭电话号码之间没有真正的区别。一个人可以拥有多部手机,一个家庭可以拥有多条电话线,一个组织可以拥有许多电话线。
通常,在设计表时,这意味着应该有一个电话号码表。它应该与人或家庭或组织中的一对多联系起来。问题是,有人会如何强制执行电话记录仅由单个父记录拥有,无论该记录是个人记录,家庭记录还是组织记录?
在我看来,我发现的唯一两种方法是kludges。我想要一个优雅的解决方案。
首先是创建3个表,PersonPhones,FamilyPhones和OrganizationPhones。然后你有3个表,其任务是存储基本相同的数据。
第二种是创建一个具有奇怪结构的单个电话表。它将具有电话号码,用于个人ID的可空字段,用于家庭ID的另一个字段和用于组织ID的第三个字段。然后添加一个约束,强制执行这3个中的2个为NULL。
有什么想法吗?
答案 0 :(得分:0)
您的PhoneTable中可以有3列(Person_Id,Phone_Number和Phone_Details)。在Phone_Details列中,您可以提及其手机,家庭或组织。然后,您可以在Person_Id和Phone_Details的组合上定义唯一键。
答案 1 :(得分:0)
通常有两种方法可以解决这种情况:
两者都不理想,您必须决定哪一种更适合您的需求。