ERD中的基数/多重性?

时间:2013-12-13 08:29:23

标签: database-design data-modeling modeling erd

客户应该只有一个地址。当我检查设计师完成的模型时,我发现了类似的东西:

enter image description here

我不是技术人员,但这并不意味着很多客户都有一个地址吗?我知道这是规范化的,所以地址与使用FK的客户联系在一起。

2 个答案:

答案 0 :(得分:1)

这意味着客户只有一个地址,而地址可以属于许多客户。外键将在customer表中。

所以,很多客户可以共享一个地址。

答案 1 :(得分:0)

ER图与标准化无关。

评估逻辑设计的正常形式需要详细说明所有适用的功能依赖性。 ER图不是一个逻辑设计(它们是一个概念设计,而且是一个不同的野兽),而且最重要的是它们根本无法指定适用的FD。

也就是说,您所面临的设计满足了“每个客户只有一个地址”的要求。但这不是满足给定要求的唯一可能的设计。单表设计(客户,ID,地址)具有完全相同的属性,因此就给定的要求而言,两者都同样好。

它们的不同之处在于您何时考虑最有可能(*) - 当您开始更改/更新客户地址时会发生这种情况。如果客户当前拥有与其他客户共享的地址,并且您更新了前者的地址,您是否希望后者的地址也自动更改?

在您面临的设计中,很可能会出现这种副作用。在单表设计中,它不会。问问自己是否需要它。

(*)总是可以通过抛出额外的代码来解决问题。但额外的代码意味着程序员可以花费额外的时间来编写和测试它,并为客户支付额外的费用。