【问题标题】:Weak entity with unique Number ID具有唯一编号 ID 的弱实体
【发布时间】:2016-08-30 05:49:05
【问题描述】:
这是一个鸟类观察者数据库示例。假设您有三个实体,BirdSpecies、Location 和 Observer。要拥有一个实体Observation,您需要所有这三个。没有它们就没有观察。
我的理解是上述要求使Observation 成为一个弱实体。但是,如果同一个人可以在同一地点多次发现同一物种怎么办?那么这个条目就不是唯一的了。
因此,我的问题是,您能否有一个 Observation 的主键,它只是一个数字,每次观察顺序增加,而实体仍然是一个弱实体?
【问题讨论】:
标签:
sql
relational-database
entity-relationship
er-diagrams
weak-entity
【解决方案1】:
我认为新实体的弱点取决于它的关系,现在不管它的主键是什么。
要理解这一点,请想象一下,您有一个日期时间,而不是一个顺序递增的数字,每个观察结果都是独一无二的。这不会改变这样一个事实,即如果您删除三个实体之一,则没有观察到。
【解决方案2】:
弱实体由单个父实体的主键和另一个属性标识。弱实体通常是整体的一部分。 Observation(不引入代理键)是三元关系,不是弱实体。
要记录同一地点同一物种的同一个人的多次观察,我会在 Observation 关系和主键中包含一个日期/时间值,或者一个非素数列来记录数字的观察。请记住,关系不能有重复的条目,因此没有区分列的风险不是唯一性,而是您记录多个条目的能力。但是,SQL DBMS 的关系不正确,会让您自取其辱。
一旦您引入代理键,您就可以将关系具体化为关联实体。由代理键标识的实体始终是强实体,因为它们是由它们自己的属性标识的。代理键允许您记录否则重复的条目,这就是为什么代理键通常与其他属性上的唯一键相补充。