第8章 实体-联系模型
1. 数据库设计
- 数据库设计的目标是为用户和各种应用系统提供一个信息基础设施和高效率的运行环境
1. 1 数据库设计流程
- 数据库设计分6个阶段
- 需求分析阶段
- 是否做得充分与准确,决定了构建数据库的速度和质量
- 概念结构设计阶段
- 通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型
- 概念结构设计阶段的主要工具--E-R模型
- 逻辑结构设计阶段
- 逻辑结构设计是将概念结构转换为DBMS支持的逻辑模型,并以数据库设计理论为依据,对其进行优化,形成数据库的全局逻辑结构和每个用户的局部逻辑结构
- 关系规范化理论用于指导逻辑结构设计阶段的优化工作
- 数据库物理结构设计阶段
- 数据库物理设计是为逻辑模型设计适合应用环境的物理结构,包括存储结构和存取方法
- 数据库实施阶段
- 数据库实施阶段是将数据库逻辑设计和物理设计的结果在计算机上加以实现,包括编程、测试和试运行
- 数据库运行和维护阶段
- 经过试运行后即可投入正式运行
- 在运行过程中必须不断对其进行评估、调整与修改
2. 基本的实体-联系模型
- 概念模型的表示方法很多,如实体-联系方法(Entity-Relationship Approach)以及对象管理组织提出的统一建模语言(United Modeling Language,UML)
2.1 基本概念
2.1.1 实体
- 实体-联系模型用实体表示物体,用联系表示物体之间的关系
- 实体是现实世界具体的事物,具有相同性质的实体组成了实体型,实体-联系模型的“实体”二字实际上是指实体型
2.1.2 属性
- 每个实体型都有一组属性,表示实体型的性质和特征。
- 每个属性都有一个名称,常用名词作为名称。
- 每个属性都有一个取值范围,叫作域。
- 实体型的每个属性在其域上取一个值,就得到了一个实体。
2.1.3 码
- 如果实体型的所有实体在一组(或一个)属性上的取值各不相同,则这组属性叫作码(Key),即唯一标识实体的一组(或一个)属性。
- 唯一性:学生的学号属性是码,因为学校保证给每个学生一个唯一的编号,
- 最小性:从码中去掉任何一个属性后就不再具有唯一性
- 包含码的任意属性组的取值肯定是唯一的,但不具有最小性,不是码,叫做超码
- 如果一个实体型有多个码,则从中选取一个作为实体型的码,叫作主码,其他的码叫作候选码
2.1.4 E-R图
- 一般用矩形表示实体型,矩形框内写明实体型的名称,用单椭圆形表示单值属性,双椭圆表示多值属性,码加下划线

2.1.5 联系和联系型
1. 联系型
- E-R图用菱形表示联系型
- 联系描述实体之间的关系,联系型描述实体型之间的关系
- 例如,学生和班级之间联系型从属于:

2. 联系型的属性
- 联系型像实体型一样具有属性和码 ,一般情况下,联系型的码由参与联系的实体型的码合并而成

3. 联系型的度
- 联系型关联的实体型的个数叫作联系型的度。
- 只关联一个实体型的联系型叫作一元联系型,有两个实体型参与的联系型叫作二元联系型,……,以此类推。

2.1.6 联系的分类
- 两个实体型之间的联系可以分为3种:一对一、一对多、多对多
1. 一对一联系(1∶1)
- 如果对于实体型A的每一个实体,实体型B至多有一个(也可以没有)实体与之联系,反之亦然,则称实体型A与实体型B具有一对一联系。

2. 一对多联系(1:n)
- 如果对于实体型A 的每一个实体,实体型B 有n个实体(n≥0)与之联系,反之,对于实体型B的每一个实体,实体型A至多只有一个实体与之联系,则称实体型A与实体型B有一对多联系。实体型A为一端,实体型B为多端

- 一个学生在一个班级,一个班级被n个学生选
3. 多对多联系(m:n)
- 如果对于实体型A的每一个实体,实体型B有n 个实体(n≥0)与之联系,反之,对于实体型B的每一个实体,实体型A也有m 个实体(m≥0)与之联系,则称实体型A与实体型B具有多对多联系。

- 一个学生选修n门课程,一门课程被m个学生选修
2.1.7 基数约束
- 基数约束是为了更精确地描述实体型的一个实体可以在一个联系中出现的次数,是对一对一、一对多、多对多联系的细化
- 基数约束用一个数对min..max表示,0≤min≤max。例如,0..1,1..3,1..* ,其中,* 代表无穷大。另外,0..* 可以简写为*,n..n 可以简写为n,如1..1可以表示为1。
- 强制参与约束:min=1的约束,被施加基数约束的实体型的每个实体都要参与联系。
- 非强制参与约束:min=0的约束,被施加基数约束的实体型的实体可以出现在联系中,也可以不出现在联系中。


- 教师实体型的每个实体在联系型“教学”的实例中要出现1-3次,即每位教师必须给学生上课,但不会超过3门课;学生在学期间要选修20-30门课程;课程在联系中可以出现任意多次
2.2 常见问题及解决方法
2.2.1 正确使用属性和联系
- 多值属性和复合多值属性经常被表示成一个联系型



2.2.2 不要缺失某个联系
- 不要缺失某个联系

2.2.3 增加时间属性
- 使用多值属性

2.2.4 实体型之间可以有多种联系
- 在某些特殊情况下,需要在相同的实体型之间建立多个联系

3. 扩充的实体-联系模型(了解)
3.1 IsA联系
3.1.1 概述
- IsA联系描述某些实体型是其他实体型的子类型。
- IsA联系的一个最重要性质是子类型实体型继承了父类型实体型的所有属性
- IsA联系描述了对一个实体型的实体的一种分类方法

3.1.2 分类属性
- 分类属性是父实体型的一个属性,可以根据这个属性的值把父实体型的实体
分派到子实体型。

3.1.3 不相交约束
- 不相交约束说明了父实体型的一个实体能否同时是多个子实体型的实体,如果可以的话,则子实体型互相相容,否则,子实体型互斥。 加了个❌

3.1.4 完备性约束
- 完备性约束约定父实体型的一个实体是否必须是某一个子类型实体型的实体,如果是,则叫作完全特化,否则,叫作部分特化。完备性约束可以用文字说明。
3.2 Part-of联系
3.2.1 概述
- Part-Of联系即部分联系,它表明某个实体型是另外一个实体型的一部分
- 独占:必须作为一个整体存在
- 非独占:即使整体被破坏,部分仍然可以独立存在
3.2.2 弱实体类型和识别联系的特殊方法表示独占联系
- 弱实体型:依附于其他实体型
- 识别联系:弱实体型与其所依赖的实体型之间的联系
- E-R图用弱实体类型和识别联系的特殊方法表示独占联系,双矩形表示弱实体型,双菱形表示识别联系

3.2.3 通过基数约束表达非独占联系

4. 例子






5. 实体-联系模型转换为关系模型
- 实体-联系模型是概念模型,需要转换为DBMS所支持的逻辑模型
- 转换为关系模型的一般的处理方法:
- 实体型转换为关系模式
- 联系型转换为关系模式
5.1 实体型转换为关系
- 实体型对应于关系模式,实体型的名称和属性构成了关系模式
- 实体型的实体集合是相应关系模式的一个关系实例。
- 一般情况下,实体型的码就是关系模式的码。
- 如果实体型有复合属性,则用若干原子属性替代复合属性。


5.2 联系型转换为关系
- 联系型一般也要转换成关系模式,联系型的名称作为关系名,属性构成了关系的属性
5.2.1 1:1 联系型
-
把联系型转换为关系模式
关系模式包括联系型自身的属性和两端实体型的码,两个实体型的码的组合作为关系的码,从联系型得到的关系和实体型构成的关系存在引用关系,因此要建立参照完整性。
-
把联系型和非强制参与一端的实体型合并,共同建立一个关系,
关系属性包括实体型的属性、联系型的属性以及另一端实体型的码,
实体型的码作为关系的码。


5.2.2 1:n 联系型


5.2.3 m:n 联系型






浙公网安备 33010602011771号