【问题标题】:Cardinality/multiplicity in ERD?ERD中的基数/多重性?
【发布时间】:2013-12-31 23:06:04
【问题描述】:

客户应该只有一个地址。当我检查我们的设计师做的模型时,我发现了这样的东西:

我不是技术人员,但这不是说很多客户都有一个地址吗?我知道这是规范化,因此地址与使用 FK 的客户相关联。

【问题讨论】:

    标签: database-design data-modeling modeling erd


    【解决方案1】:

    ER 图与规范化无关。

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

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

    它们的不同之处在于您考虑开始更改/更新客户地址时最有可能 (*) 会发生什么。如果客户当前有一个与其他客户共享的地址,而您更新了前者的地址,是否也希望后者的地址也自动更改?

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

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

    【讨论】:

      【解决方案2】:

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

      是的,许多客户可以共享一个地址。

      【讨论】:

      • 所以这是标准化的(它只是对 addresa 的 FK 和从 Addresa 的其他 FK 将转到 Street 和 City 实体,这是正确的吗?)
      • 我不知道您的架构的其余部分。通常,街道、城市、邮政编码等字段会在地址表中。
      猜你喜欢
      • 2013-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-19
      • 2012-09-08
      • 2014-01-31
      • 1970-01-01
      相关资源
      最近更新 更多