【发布时间】:2013-12-31 23:06:04
【问题描述】:
客户应该只有一个地址。当我检查我们的设计师做的模型时,我发现了这样的东西:
我不是技术人员,但这不是说很多客户都有一个地址吗?我知道这是规范化,因此地址与使用 FK 的客户相关联。
【问题讨论】:
标签: database-design data-modeling modeling erd
客户应该只有一个地址。当我检查我们的设计师做的模型时,我发现了这样的东西:
我不是技术人员,但这不是说很多客户都有一个地址吗?我知道这是规范化,因此地址与使用 FK 的客户相关联。
【问题讨论】:
标签: database-design data-modeling modeling erd
ER 图与规范化无关。
评估逻辑设计的正常形式需要明确所有适用的功能依赖关系。 ER 图不是一个逻辑设计(它们是一个概念设计,这是一个不同的野兽),最重要的是,它们根本无法指定适用的 FD。
也就是说,您面临的设计满足“每个客户只有一个地址”的要求。但这并不是满足给定要求的唯一可能设计。单表设计(客户、ID、地址)具有完全相同的属性,因此就给定的需求而言,两者都一样好。
它们的不同之处在于您考虑开始更改/更新客户地址时最有可能 (*) 会发生什么。如果客户当前有一个与其他客户共享的地址,而您更新了前者的地址,是否也希望后者的地址也自动更改?
在您面临的设计中,这种副作用很可能会发生。在单表设计中,它不会。问问自己是否想要。
(*) 总是可以通过添加额外的代码来解决问题。但是额外的代码意味着程序员需要额外的时间来编写和测试它,并且需要客户支付额外的费用。
【讨论】:
这意味着一个客户只有一个地址,而一个地址可以属于多个客户。外键将在客户表中。
是的,许多客户可以共享一个地址。
【讨论】: