弱实体vs子类,有什么区别?

时间:2015-10-13 12:39:03

标签: database database-design entity relational-database

弱实体和子类之间有什么区别?

提前谢谢!

2 个答案:

答案 0 :(得分:3)

在支持子类化的扩展ER模型中,您正在寻找的答案可能与每种情况下关于键的一些假设有关:

  • 如果实体A是子类,则A的键(或 a 键)由与另一个实体B中的键完全相同的属性组成。

  • 如果实体A是弱实体,则A的密钥(或 a 密钥)的某些子集包含与另一个密钥相同的属性实体B.

与ER建模的大部分内容一样,这些内容是符号的惯例,并不总是非常精确地定义或一致使用。术语子类的使用甚至可能有问题 - 许多ER模型的用户将使用术语子类型。

您使用relational-database标记了您的问题,但这些肯定不是关系模型概念,它们是ER建模概念。

答案 1 :(得分:0)

在所有可用文献中,对此的答案并不统一。这是我学习它的方式。

弱实体需要与另一个实体建立关系才能拥有身份。我们在订单中接受订单和订单项。仅使用自然键,订单项的标识是订单号和行号,例如订单54321第3行。您不能拥有不属于订单的订单项,因为它没有标识。

当然,您可以始终使用DBMS的自动编号功能在插入时为每一行指定一个明显的标识。但这并不能证明该实体在现实世界中具有身份。

子类不是单独的实体,而是某个其他实体中的实例的子集。考虑宠物,狗和猫。可能存在属于狗但不属于猫的属性,反之亦然。 (除了狗和猫之外,还有很多宠物的子类,但我只是保持简单)。