在实体关系图中,有一个弱实体类型,它是一个没有关键属性的实体。我想知道对象角色建模等价物是什么。
2 回答
如果一个实体 A不能独立于另一个实体 B 存在,那么它就是弱的,并且 B 的标识属性构成 A 的标识属性的一部分。在这种情况下,A 和 B 之间的关系被称为是标识的。这并不意味着 A 没有关键属性。A 确实有一个键,但它的键属性包括引用 B 的(主)键的属性。
在 ORM 中,可以使用 A 和 B 之间的强制角色来模拟这种情况。在 Terry Halpin 的“褐皮书”第 307 页 [1] 中有一个示例。
ORM 符号比弱实体的 ER 概念更具表现力。在 ER 建模中,依赖实体通常仅在实体类型的首选标识符引用另一个实体类型时才被视为弱实体。在 ORM 中,您可以独立于 A 和 B 的标识方案来表达依赖约束“A 不能没有 B 存在”。考虑代表一夫一妻异性婚姻的 Husband 和 Wife 实体的示例。没有另一个就不能存在,但是一个配偶的首选身份识别方案不必包括另一个配偶的标识符。
[1] Halpin,信息建模和关系数据库,第 2 版。
您对弱实体类型的定义不正确。在 ER 中,每种实体类型在任何情况下都必须有一个主键。弱实体类型在其自己的主键中具有强制外键。
在 ORM 中也是如此,但更通用。包含任何强制角色的实体类型只有在对应的角色被填充时才可能存在,因此它依赖于角色扮演者的存在。该角色是否由另一个实体类型扮演,或者扮演该角色的对象类型是否被映射到另一个表是无关紧要的。强制角色是否是任何标识符(包括首选标识符)的一部分也无关紧要,尽管在这种情况下可能会使用“弱”描述。但是,“弱”的概念对于 ORM 来说是不必要的,也不应该使用。
请注意,ET与 ER 实体不同,并非所有 ET 都必须映射到表。