我应该合并两个具有相同列但每个表与不同表有关系的表吗?

时间:2015-04-01 22:17:50

标签: mysql database database-design

我有以下架构:

SINGLE_CLIENTS:

id - firstname - lastname - email - address - job

COMPANY_CLIENTS:

id - 姓名 - 地址 - 网站 - 电子邮件

我需要在两个表中添加电话号码,其中每个实体可以有多个电话号码,每个电话号码由(id - 号码类型 - 国家代码 - 号码)组成。

我应该使用两个表(即SINGLE_CLIENTS_PHONES,COMPANY_CLIENTS_PHONES),只使用一个表(即PHONES)还是应该将它们存储在类似于数组的字符串中?为什么??

2 个答案:

答案 0 :(得分:0)

我会把它们放在一张桌子里。这样,只允许一个公司和个人共享的电话号码记录,或​​者使用您的应用程序中对客户或公司一无所知的电话号码。

使用查找表将每个客户端类型与电话号码相关联,因为这可能是多对多的关系。

答案 1 :(得分:0)

摆脱FOREIGN KEYs。摆脱“电话号码只能属于一个客户(单个客户或公司)”的限制。

但是,只要您有两种类型的客户端,就需要两个Phone表。这将允许“客户”拥有多部电话(传真,移动电话,固定电话等)。这是因为client_id需要在Phone表中,而不是相反。