具有相同内容的两个表会破坏数据规范化吗?

时间:2019-06-03 14:38:23

标签: sql database-normalization

[假设个人与地址之间存在一对多的关系,并假定代理与地址之间存在一对多的关系。]

给出以下表格结构:

enter image description here

您是否不想将两个地址表合并在一起,而不是在每个表中都使用外键来使用关系表? 像这样: enter image description here

它们都对标准化有效还是只对一个有效?

1 个答案:

答案 0 :(得分:1)

取决于您要做什么。

在第二个使用联系表的示例中,如果我想向客户发送邮件,则我的查询必须转到代理联系表以排除任何代理地址。

当然,您可以使用一个地址类型列来进行区分,但随后您会对插入语句有一个更复杂的查询。

因此,尽管“地址”是一个全球性的想法,但有时按上下文将其分隔会更容易。

其次,您的客户数据变化通常比代理商数据变化大得多。围绕个人数据的存储可能还存在组织上和法律上的要求,以便更好地将两者分开。

例如在健康记录系统中,我希望能够轻松提取/限制客户端数据,并使我的配置或调试数据保持独立。

因此,在我使用的所有客户端系统中,该模型都倾向于是您描述的第一个模型,而不是第二个。