【问题标题】:Weak entity with unique Number ID具有唯一编号 ID 的弱实体
【发布时间】:2016-08-30 05:49:05
【问题描述】:

这是一个鸟类观察者数据库示例。假设您有三个实体,BirdSpeciesLocationObserver。要拥有一个实体Observation,您需要所有这三个。没有它们就没有观察。

我的理解是上述要求使Observation 成为一个弱实体。但是,如果同一个人可以在同一地点多次发现同一物种怎么办?那么这个条目就不是唯一的了。

因此,我的问题是,您能否有一个 Observation 的主键,它只是一个数字,每次观察顺序增加,而实体仍然是一个弱实体?

【问题讨论】:

    标签: sql relational-database entity-relationship er-diagrams weak-entity


    【解决方案1】:

    我认为新实体的弱点取决于它的关系,现在不管它的主键是什么。

    要理解这一点,请想象一下,您有一个日期时间,而不是一个顺序递增的数字,每个观察结果都是独一无二的。这不会改变这样一个事实,即如果您删除三个实体之一,则没有观察到。

    【讨论】:

    • 弱实体不是由它们的关系定义的,而是依赖于父实体的密钥来确定其身份。请参阅en.wikipedia.org/wiki/Weak_entity 或最好阅读 Peter Chen 的 The entity-relationship model - toward a unified view of data
    【解决方案2】:

    弱实体由单个父实体的主键和另一个属性标识。弱实体通常是整体的一部分。 Observation(不引入代理键)是三元关系,不是弱实体。

    要记录同一地点同一物种的同一个人的多次观察,我会在 Observation 关系和主键中包含一个日期/时间值,或者一个非素数列来记录数字的观察。请记住,关系不能有重复的条目,因此没有区分列的风险不是唯一性,而是您记录多个条目的能力。但是,SQL DBMS 的关系不正确,会让您自取其辱。

    一旦您引入代理键,您就可以将关系具体化为关联实体。由代理键标识的实体始终是强实体,因为它们是由它们自己的属性标识的。代理键允许您记录否则重复的条目,这就是为什么代理键通常与其他属性上的唯一键相补充。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-05
      • 1970-01-01
      相关资源
      最近更新 更多