Database 如何共享一对多表

Database 如何共享一对多表,database,database-design,Database,Database Design,我试图创建一个数据库来保存我的通讯录,但遇到了一个小问题。 我的数据库应该保存个人联系人和公司联系人。这是一个条目,可以是个人条目,也可以是公司条目。正如你们所知,个人和公司都有地址,我希望个人和地址以及公司和地址之间有一对多的关系 所以一个人可以有很多地址 一个公司可以有很多地址 问题是,在尝试设计模式时,我不确定这里的最佳方法是什么。我应该在地址表中放置两个外键,一个用于个人地址,一个用于公司地址,还是应该为每个个人到地址和公司到地址的关系创建一个链接表 外键听起来很简单,但不知道这是否是正

我试图创建一个数据库来保存我的通讯录,但遇到了一个小问题。 我的数据库应该保存个人联系人和公司联系人。这是一个条目,可以是个人条目,也可以是公司条目。正如你们所知,个人和公司都有地址,我希望个人和地址以及公司和地址之间有一对多的关系

所以一个人可以有很多地址 一个公司可以有很多地址

问题是,在尝试设计模式时,我不确定这里的最佳方法是什么。我应该在地址表中放置两个外键,一个用于个人地址,一个用于公司地址,还是应该为每个个人到地址和公司到地址的关系创建一个链接表

外键听起来很简单,但不知道这是否是正确的方法,链接似乎是正确的方法,但不知道这是否有点过分,因为它们主要用于多对多关系


想法?

有各种方法……我们采用的方法是有一个“姓名”表,相当于您的联系人表;地址表和电话号码表

地址和电话号码表都有一个外键指向names表。names表中有一个“type”字段,这样我们就可以知道该名称是否是个人、公司、独资企业主等的名称


电话号码表中也有一个类型字段,因此我们可以判断电话号码是否是工作、家庭、手机等。此外,我们允许用户在名称表中存储一个电话号码的副本,作为主要电话号码。

有多种方法可以做到这一点……我们采取的方法是使用“姓名”表,相当于您的联系人表;地址表和电话号码表

地址和电话号码表都有一个外键指向names表。names表中有一个“type”字段,这样我们就可以知道该名称是否是个人、公司、独资企业主等的名称

电话号码表中也有一个类型字段,因此我们可以判断电话号码是否为工作、家庭、手机等。此外,我们允许用户在名称表中存储一个电话号码的副本,作为主要电话号码