弱实体集是数据库设计中一种特殊的实体集,与强实体集相比,弱实体集没有足够的属性来形成一个完整的主键。它依赖于另一个称为强实体集(owner entity set)来唯一标识其实例。弱实体集通常用于表示那些必须依赖于其他实体的存在而存在的实体。
1. 弱实体集的特点
- 没有主键:弱实体集自身没有足够的属性形成主键,因此它无法独立存在。
- 依赖强实体集:弱实体集的存在依赖于某个强实体集,它通过与强实体集的外键引用来确保其实例的唯一性。
- 识别关系(Identifying Relationship):强实体集与弱实体集之间的关系称为识别关系。该关系用于帮助弱实体集通过强实体集的主键和自身的部分标识符来唯一标识实例。
- 部分标识符(Partial Key):弱实体集通常会有一个部分标识符,即可以在依赖的强实体的范围内唯一标识弱实体的属性。强实体的主键加上弱实体的部分标识符共同构成弱实体的主键。
2. ER图中如何表示弱实体集
在ER图中,弱实体集与强实体集以及它们之间的关系通常通过以下方式表示:
-
弱实体集的符号:弱实体集用双矩形表示。与之相对,强实体集用单矩形表示。
-
识别关系的符号:强实体集与弱实体集之间的关系(识别关系)用双菱形表示。普通的关系用单菱形表示。
-
外键依赖性:在ER图中,弱实体集的关系必须是完全参与(Total Participation)关系,意味着每一个弱实体必须与某个强实体相关联。这通常用粗线条来表示。
-
部分标识符的符号:弱实体集的部分标识符属性用虚线下划线表示。
3. 示例
以“订单”和“订单项”为例:
订单项
(弱实体)依赖于订单
(强实体)来唯一标识。假设一个订单有多个订单项,但是订单项无法单独存在,必须属于某个订单。这里,“订单项”的部分标识符可以是“商品ID”,而“订单”的主键是“订单ID”。“订单ID + 商品ID”共同组成订单项的复合主键。
在ER图中的表示:
订单
(强实体)用一个单矩形表示。订单项
(弱实体)用一个双矩形表示。- 它们之间的“包含”关系(识别关系)用双菱形表示。
- “订单项”的“商品ID”属性下方会有虚线下划线,表示这是一个部分标识符。
ER图的图示总结:
- 弱实体集:用双矩形表示。
- 强实体集:用单矩形表示。
- 识别关系:用双菱形表示。
- 部分标识符:用虚线下划线标注。
- 完全参与:弱实体集通过与强实体集的完全参与关系连接,通常用粗线表示。
图示大致如下:
+-----------+ +=====================+
| 订单 | ------------- | 订单项 |
+-----------+ +=====================+
| (商品ID, 部分标识符)
(1:N)
在这个示例中,订单项依赖于订单,而无法单独存在,它们通过一个识别关系联系在一起,形成一个有效的实体关系图。
通过这些符号和关系,ER图可以清晰地描述出弱实体集与强实体集的依赖关系。