文档介绍:第5章完整性约束与模式参考书目:《数据库系统概论》萨师煊王珊,高等教育出版社
1
本章概要
本章讲述完整性约束和关系数据库规范化理论,这是数据库逻辑设计的理论依据。
深刻理解完整性约束的基本概念;
要求了解规范化理论的研究动机及其在数据库设计中的作用;
掌握函数依赖的有关概念;
理解第一范式、第二范式、第三范式的定义,
重点掌握并能够灵活运用关系模式规范化的方法和关系模式分解的方法,这也是本章的难点。
2
为了维护数据库中数据与现实世界的一致性,对关系数据库的插入、删除和修改操作必须有一定的约束条件,这就是关系模型的三类完整性:
实体完整性
参照完整性
用户定义的完整性
1. 实体完整性(Entity Integrity)
实体完整性是指主码的值不能为空或部分为空。
例如,“学号”不能为空;选课关系中的主码“学号+课程号”不能部分为空,即“学号”和“课程号”两个属性都不能为空。
关系模型的完整性
3
2.  参照完整性(Referential integrity)
如果关系R2的外部关系码X与关系R1的主码相符,则X的每个值或者等于R1中主码的某一个值,或者取空值。
,,学生关系中某个学生(如s1或s2)“系别”的取值,必须在参照的系别关系中主码“系别”的值中能够找到,否则表示把该学生分配到一个不存在的部门中,显然不符合语义。
如果某个学生(如s11)“系别”取空值,则表示该学生尚未分配到任何一个系。否则,它只能取专业关系中某个元组的专业号值。
4
S(学生关系) D(系别关系)
S表(学生表)
D表(系别表)
SNO
学号
SN
姓名
SEX
性别
AGE
年龄
DEPT
系别
S1
赵亦
女
17
计算机
S2
钱尔
男
18
信息
…
…
…
…
…
S11
王威
男
19
DEPT
系别
ADDR
地址
计算机
1号楼
信息
1号楼
…
…
自动化
3号楼
5
实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作关系的两个不变性。任何关系数据库系统都应该支持这两类完整性。
除此之外,不同的关系数据库系统由于应用环境的不同,往往还需要一些特殊的约束条件,这就是用户定义完整性。
3. 用户定义完整性(User-defined Integrity)
用户定义完整性是针对某一具体关系数据库的约束条件。它反映某一具体应用所涉及的数据必须满足的语义要求。
例如,属性值根据实际需要,要具备一些约束条件,如选课关系中成绩不能为负数;某些数据的输入格式要有一些限制,关系模型应该提供定义和检验这类完整性的机制,以便用统一的、系统的方法处理它们,而不要由应用程序承担这一功能。
6
规范化问题的提出
规范化理论的主要内容
关系数据库的规范化理论主要包括三个方面的内容:
函数依赖
范式(Normal Form)
模式设计
其中,函数信赖起着核心的作用,是模式分解和模式设计的基础,范式是模式分解的标准。
7
关系模式的存储异常问题
数据库的逻辑设计为什么要遵循一定的规范化理论?
什么是好的关系模式?
某些不好的关系模式可能导致哪些问题?
下面通过例子进行分析:
例如:要求设计教学管理数据库,其关系模式SCD如下:
SCD(SNO,SN,AGE,DEPT,O,SCORE)
其中,SNO表示学生学号,SN表示学生姓名,AGE表示学生年龄,DEPT表示学生所在的系别,O表示课程号,SCORE表示成绩。
8
根据实际情况,这些数据有如下语义规定:
一个系有若干个学生,但一个学生只属于一个系;
一个系只有一名系主任,但一个系主任可以同时兼几个系的系主任;
一个学生可以选修多门功课,每门课程可有若干学生选修;
每个学生学习某门课程有一个成绩。
在此关系模式中填入一部分具体的数据,则可得到SCD关系模式的实例,即一个教学管理数据库,。
9
关系SCD
SNO
SN
AGE
DEPT
MN
CNO
SCORE
S1
赵亦
17
计算机
刘伟
C1
90
S1
赵亦
17
计算机
刘伟
C2
85
S2
钱尔
18
信息
王平
C5
57
S2
钱尔
18
信息
王平
C6
80
S2
钱尔
18
信息
王平
C7
70
S2
钱尔
18
信息
王平
C5
70
S3
孙珊
20
信息
王平
C1
0
S3
孙珊
20
信息
王平
C2
70
S3
孙珊
20
信息