2.5. ERD 关系类型¶
Relationship Types 指:实体间的关联类型。
关系类型可以具有属性; 例如 ,WORKS_ON 关系的 HoursPerWeek 属性;该属性对每个关系实例的值描述了员工每周在某个 PROJECT 上工作的小时数。HoursPerWeek 属性既不描述员工也不描述项目,但它描述了它们之间的关系(WORKS_ON)。
E-R 图中的关系起着至关重要的作用,因为它们有助于将任何 E-R 图转换为与数据库相关的表。
关系约束 ________________________
约束用于对实体间关系的限制进行建模。
实体关系模型存在两种约束( 基数比 与 参与 )。
2.5.1. 关系基数¶
2.5.2. 关系参与¶
下方的可视化展示了如何使用 Chen、Crow's Foot 和 Min-Max 符号在 ER 模型中表达基数和参与约束。
关系度 ___________________
关系的度是参与(关联)该关系的实体类型的数量。(即,连接到该关系的实体类型的数量是该关系的度)
我们拥有以下关系等级:
一元
二元
三元
N 元
注意 1: 既然所有的关系概念(度数、基数和参与)都已清楚,现在是时候了解如何将任意度数的 ERD 关系映射到关系模式图了。为了实现这一目标,后续所有部分将逐一讨论每个度数及其所有基数约束选项。
注意 2: 你应该知道,下面的示例不仅展示了正确且直接的案例,还通过展示错误的映射技术来揭示其缺陷。随后,会向读者提供正确的映射过程,以便清晰地理解映射规则。
2.5.3. 一元(递归)关系(度为 1)¶
在递归(一元)关系中,两个参与者都是同一实体类型,但处于不同的角色。
例如 ,SUPERVISION 关系存在于 EMPLOYEE(担任主管或老板角色)与(另一个)EMPLOYEE(担任下属或工人角色)之间。
在实体关系图中,应显示角色名称以区分实体的参与情况。
一对一单值关系:
一对一单关系:
多对多一元关系:
一元关系示例结论:(映射规则)
1- 一元 1:1,FK 被添加到原始实体中,FK 可以引用两个角色中的任意一个。
2- 一元 1:M,FK 被添加到原始实体中,但 FK 应引用 (1) 侧的角色。
3- 一对多 N:M,添加一个额外的表,该表由两个外键组成,每个外键都引用角色。这两个外键共同充当新桥接表的复合主键。
4- 最后,任何属性都可以添加到关系中,在这种情况下,属性被插入到外键存在的位置。
2.5.4. 二元关系(度为 2)¶
当且仅有两个实体类型参与时,存在二元关系。当存在此类关系时,我们称其度为 2。
这是最常见的亲属关系程度。
处理此类关系很容易,因为它们可以轻松转换为关系表。
例如, 存在两个实体类型“医生”和“病人”,其中医生通过治疗关系连接到病人。
一对一二元关系:
一对多二元关系:
多对多二元关系:
用于概念说明的额外二元关系示例:
您应该知道,关系基数取决于问题规范(应用域需求)。针对特定实体,不存在给定关系类型的标准基数。
下面的可视化示例显示了同一实体之间相同二元关系类型的五种不同基数情况。(基数根据问题陈述而不同)
二元关系示例结论:(映射规则)
1- Binary1:1,任何实体的主键可以插入为另一个实体的外键。
2- Binary1:M,实体在 (1) 侧的主键作为外键插入到实体表中 (M) 侧旁边。
3- BinaryN:M,添加了由两个实体的两个外键组成的附加桥接表。两个外键共同作为新桥接表的复合主键。
4- 最后,任何属性都可以添加到关系中,在这种情况下,属性被插入到外键存在的位置。
2.5.5. 三元关系(度为 3)¶
当且仅当恰好三个实体类型参与时,存在三元关系。当存在此类关系时,我们说度为 3。
随着实体在关系中的数量增加,将其转换为关系表变得复杂。
例如 ,有三个实体类型“Employee”、“Project”和"Equipment"。这些实体之间的关系被定义为一个员工在特定项目中工作,并使用某种设备。
三元关系示例结论:
1- 任何三元关系,无论其基数如何,都需要一个桥接表来收集三个相关实体的外键。
2- 查看下方图像以了解所有基数情况下的 PK 映射规则。
3- 在现实生活中的三元关系示例中,使用最广泛的基数情况是 N:M:P。
4- 一般来说,三元关系不等价于 3 个二元关系。 (V.V.I)
5- 任何关系属性都应添加到桥接中。

