数据库笔记CH7 数据库设计和E-R模型
7.1设计过程概览
- 了解并完整刻画用户需求
- 概念设计(实体联系模型)
- 功能需求说明(操作和事务)
- 逻辑设计(将概念模式映射到数据模型中)
- 物理设计(文件组织格式和索引结构等)
数据库设计过程尽量避免冗余和不完整
7.2实体-联系模型(E-R图)
- 实体 entity :现实存在且可区别于其他事物的对象
- 属性 attributes :实体拥有属性且通过属性来表示,每个属性都有一个value
- 实体集entity set :具有相同属性或性质的实体的集合
-
联系 relationship : 多个实体间的相互关联
- 例如:学生A和老师B之间存在联系advisor,说明老师B是学生A的导师
-
联系集 relationship set :相同类型联系的集合
- 如果E1,E2,E3…En是实体集,则联系集R是{(e1, e2, … en) | e1 ∈ E1, e2 ∈ E2, …, en ∈ En}的子集,例如(A,B)∈advisor
- 联系集可以具有属性,该属性使得该联系更具描述性
-
每个属性都有一个可取值的集合,叫做属性的域Domain 或者值集
- 简单和复合属性:简单属性不可继续划分,复合属性表示可以继续划分
- 单值和多值属性:例如一个教师只能有一个ID,一个教师可以有多个电话号码
7.3约束
映射基数 Mapping Cardinality:表示一个实体通过一个联系集能关联到的实体的个数
对于二元联系集而言,有4种映射基数:
-
一对一:A中的一个实体至多与B中的一个实体相关联,并且B中的一个实体也至多与A中的一个实体相关联
-
一对多:A中的一个实体可与B中任意个实体相关联,并且B中的一个实体至多与A中的一个实体相关联
-
多对一:A中的一个实体至多可与B中一个实体相关联,并且B中的一个实体可与A中任意个实体相关联
-
多对多:A中的一个实体可与B中任意个实体相关联,并且B中的一个实体可与A中任意个实体相关联
-
如果实体集E中的每个实体都参与到联系集R中的至少一个联系中,则实体集E在联系集R中的参与是全部的;如果E中只有部分参与到R中,则称实体集E到联系集R的参与是部分的。
实体的属性值必须可以唯一标识该实体,即不同实体不能在每个属性上取值均相同
- 超码:由一个或多个属性组成的可以唯一标识该实体的属性集
- 候选码:最小的超码
- 联系集的属性
- 如果学生到老师的映射是多对一的,则advisor的主码就是学生的主码
- 如果学生到老师的映射是一对多的,则advisor的主码就是老师的主码
- 如果学生到老师的映射是多对多的,则advisor的主码就是老师和学生的主码的并集
- 如果学生到老师的映射是一对一的,则advisor的主码可以是学生或老师的主码
7.5实体联系图
- 分成两部分的矩形代表实体集,包括实体集名称和属性名称,主码用下划线表明
- 菱形代表联系集
- 未分割的矩形代表联系集的属性
- 线段将实体集连接到联系集
- 虚线将联系集属性连接到联系集
- 双线表示参与度
复杂属性的写法:
映射基数的画法:有向线段 -> 指向 one , 无向线段指向 – many
- one to one:
- one to many:
- many to one:
- many to many:
三元联系集的ER图:
- 弱实体集:没有足够的属性以形成主码的实体集
- 强实体集:由主码的实体集
- 弱实体集必须与标识主体关联,即存在依赖于标识实体集
- 弱实体集和标识实体集相联的联系称为标识性练习,是多对一的,且弱实体集的参与是全部的。
- 在ER图中,弱实体集的属性用虚线标识,且联系集用双菱形表示
大学的E-R图:
E-R图表示法中的符号: