弱实体:如何在ORM中表达?
Weak entities: how to express in ORM?
在实体关系图中,存在一种弱实体类型,即没有键属性的实体。我想知道等效的对象角色建模是什么。
如果实体 A 不能独立于另一个实体 B 而存在,并且 B 的标识属性构成 A 的标识属性的一部分,则该实体 A 是 弱。在这种情况下,A 和 B 之间的关系被称为 identifying。这并不意味着 A 没有关键属性。 A 确实有一个键,但它的键属性包括引用 B 的(主)键的属性。
在 ORM 中,可以使用 A 和 B 之间的强制角色对这种情况进行建模。在 Terry Halpin 的 "brown book" 第 307 页 [1] 中有一个示例。
ORM 表示法比弱实体的 ER 概念更具表现力。在 ER 建模中,仅当实体类型的 首选标识符 引用另一个实体类型时,通常才认为依赖实体是弱的。在 ORM 中,您可以独立于 A 和 B 的标识方案来表达依赖约束 "A cannot exist without B"。考虑表示一夫一妻制异性婚姻的丈夫和妻子实体的示例。一个人不能没有另一个人存在,但是一个配偶的首选身份识别方案不必包括另一个人的身份识别信息。
[1] Halpin,信息建模和关系数据库,第 2 版。
您对弱实体类型的定义不正确。在 ER 中,每个实体类型在任何情况下都必须有一个主键。弱实体类型在其自己的主键中具有强制外键。
在 ORM 中也是一样,但更通用。包含任何强制角色的实体类型只有在相应角色被填充时才可能存在,因此它依赖于角色扮演者的存在。该角色是否由另一个实体类型扮演,或者扮演该角色的对象类型是否映射到另一个 table 都无关紧要。强制角色是否是任何标识符(包括首选标识符)的一部分也无关紧要,尽管这是可能使用描述 "weak" 的情况。但是,"weak" 的想法对 ORM 来说是不必要的,不应该使用。
请注意,外星人 与 ER 实体 不同,并非所有外星人都必须映射到 table。
在实体关系图中,存在一种弱实体类型,即没有键属性的实体。我想知道等效的对象角色建模是什么。
如果实体 A 不能独立于另一个实体 B 而存在,并且 B 的标识属性构成 A 的标识属性的一部分,则该实体 A 是 弱。在这种情况下,A 和 B 之间的关系被称为 identifying。这并不意味着 A 没有关键属性。 A 确实有一个键,但它的键属性包括引用 B 的(主)键的属性。
在 ORM 中,可以使用 A 和 B 之间的强制角色对这种情况进行建模。在 Terry Halpin 的 "brown book" 第 307 页 [1] 中有一个示例。
ORM 表示法比弱实体的 ER 概念更具表现力。在 ER 建模中,仅当实体类型的 首选标识符 引用另一个实体类型时,通常才认为依赖实体是弱的。在 ORM 中,您可以独立于 A 和 B 的标识方案来表达依赖约束 "A cannot exist without B"。考虑表示一夫一妻制异性婚姻的丈夫和妻子实体的示例。一个人不能没有另一个人存在,但是一个配偶的首选身份识别方案不必包括另一个人的身份识别信息。
[1] Halpin,信息建模和关系数据库,第 2 版。
您对弱实体类型的定义不正确。在 ER 中,每个实体类型在任何情况下都必须有一个主键。弱实体类型在其自己的主键中具有强制外键。
在 ORM 中也是一样,但更通用。包含任何强制角色的实体类型只有在相应角色被填充时才可能存在,因此它依赖于角色扮演者的存在。该角色是否由另一个实体类型扮演,或者扮演该角色的对象类型是否映射到另一个 table 都无关紧要。强制角色是否是任何标识符(包括首选标识符)的一部分也无关紧要,尽管这是可能使用描述 "weak" 的情况。但是,"weak" 的想法对 ORM 来说是不必要的,不应该使用。
请注意,外星人 与 ER 实体 不同,并非所有外星人都必须映射到 table。