本节内容
E-R模型及其向关系模式的转换
E-R模型
设计过程
需求分析 -> 概念数据库设计 -> 逻辑数据库设计 -> 物理数据库设计
数据库的设计原则:避免冗余,避免不完整,选择好的设计
实体-联系模型(E-R模型)
-
实体:客观存在并可相互区分的事物。用矩形表示
- 实体型:实体名与其属性名集合共同构成实体型。
- 实体集:同型实体的集合称为实体集。
-
属性:实体所具有的某一特性称为实体的属性。用椭圆表示
- 域:属性的取值范围,即值集。
- 简单属性(不可再分的属性)与复合属性(可以划分为更小的属性)
- 单值属性(每一个特定的实体在该属性上的取值唯一)与多值属性(某个特定的实体在该属性上有多于一个的取值,用双椭圆表示)
- 派生属性(可以从其他相关的属性或实体派生出来的属性值,用虚椭圆表示)与基属性
数据库一般只存基属性值,而派生属性只存其定义或依赖关系,用到时再从基属性中计算出来
-
联系:多个实体之间的相互关联。用菱形表示
- 联系集:同类联系的集合。
- 联系的元或度:参与联系的实体集的个数称为联系的元。
- 角色:实体在联系中的作用称为实体的角色。
-
码
- 超码:能唯一标识实体的属性或属性组。
- 候选码:其任意真子集都不能成为超码的最小超码。
- 主码:从所有候选码中选定一个用来区别同一实体集中的不同实体。下划线来标明
-
参与:实体集之间的关联。(实体参与联系)用连线表示
- 完全参与:如果实体集E中的每个实体都参与到联系集R中的至少一个联系,则称E全部参与R。
- 部分参与:如果实体集E中只有部分实体参与到联系集R的联系中,则称E部分参与R。用双线连接表示
-
存在依赖:如果实体x的存在依赖于实体y的存在,则称x存在依赖于y。
- y称作支配实体,x称作从属实体。
- 设有 A R B,若 A 存在依赖于B, 则A全部参与联系R。
-
映射的基数:实体之间的联系的数量,即一个实体通过一个联系集能与另一实体集相关联的实体的数目。
- 一对一(1:1):E1中的一个实体与E2中至多一个实体相联系,并且E2中的一个实体与E1中至多一个实体相联系。
- 一对多(1:m):E1中的一个实体与E2中n(n≥0)个实体相联系,并且E2中的一个实体与E1中至多一个实体相联系。
- 多对多(m:n):E1中的一个实体与E2中n(n≥0)个实体相联系,并且E2中的一个实体与E1中m(m≥0)个实体相联系。
- 一对一(1:1):E1中的一个实体与E2中至多一个实体相联系,并且E2中的一个实体与E1中至多一个实体相联系。
-
弱实体集:一个实体集的所有属性都不足以形成主码。使用双线矩形表示。优点:避免数据冗余
弱实体集必然存在依赖于强实体集。 -
分辨符(部分码):弱实体集中用于区别依赖于某个特定强实体集的属性集合。使用虚线表示。
E-R图表示汇总:
E-R模型向关系模式的转换
- 实体 -> 关系模式
- 属性 -> 关系的属性
- 复合属性 -> 展开:将每个组合属性作为复合属性所在实体的属性
- 多值属性 -> 新的关系+所在实体的码
- 联系
- 一对一联系:两个实体分别转换为关系模式,将任意一个关系模式的码和联系的属性加入到另一个关系模式中。若联系双方均部分参与,则将联系定义为一个新的关系,属性为参与双方的码。
- 一对多联系:将一方实体的码加入到多方参与实体的属性中(作为外键)。
- 多对多联系: 将联系定义为新的关系,属性为参与双方的码。
- 弱实体集:所对应的关系的码由弱实体集本身的分辨码再加上所依赖的强实体集的码
About this Post
This post is written by Holger, licensed under CC BY-NC 4.0.