西华师范大学计算机学院
第五章 关系数据理论
第五章 关系数据理论
5.1 问题的提出
5.2 规范化
5.3 小结
5.1 问题的提出
关系数据库逻辑设计
– 针对具体问题, 如何构造一个适合于它的数
据模式
– 数据库逻辑设计的工具 ──关系数据库的规
范化理论
问题的提出
一、概念回顾
二、关系模式的形式化定义
三、什么是数据依赖
四、关系模式的简化定义
五、数据依赖对关系模式影响
一、概念回顾
? 关系,描述实体、属性、实体间的联系。
– 从形式上看,它是一张二维表,是所涉及属性的笛
卡尔积的一个子集。
? 关系模式,用来定义关系。
? 关系数据库,基于关系模型的数据库,利用关系来描
述现实世界。
– 从形式上看,它由一组关系组成。
? 关系数据库的模式,定义这组关系的关系模式的全体。
二、关系模式的形式化定义
关系模式由五部分组成,即它是一个五元组:
R(U,D,DOM,F)
R,关系名
U,组成该关系的属性名集合
D,属性组 U中属性所来自的域
DOM:属性向域的映象集合
F,属性间数据的依赖关系集合
三、什么是数据依赖
客观世界的事务间有着错综复杂的联系。 实体间的联
系有两类,一类是实体与实体之间的联系; 另一类是实体内
部各属性间的联系。
属性间的联系可分为以下三类:
? 一对一关系 ( 1∶ 1)
以职工模式为例,职工 ( 职工号,姓名,职称,部门 ),如果该
企业 ( 或单位 ) 中职工无重名,则属性职工号与姓名之间是
1∶ 1关系 。 一个职工号唯一地决定一个姓名,一个姓名也可
决定唯一的职工号 。
设 X,Y是关系 R的两个属性 ( 集 ) 。 如果对于 X中的
任一具体值,Y中至多有一个值与之对应,且反之亦然,则称 X、
Y两属性间是一对一关系 。
? 一对多关系 ( 1∶ m)
职工模式中,职工号和职称间是一对
多关系 。 一个职工号只对应一种职称
( 如胡一民只能对应工程师 ),但一种职
称却可对应多个职工号 ( 如工程师可对
应多名职工 ) 。
设 X,Y是关系 R的两个属性 ( 集 ) 。
如果对于 X中的任一具体值,Y中至多有一
个值与之对应,而 Y中的一个值却可以和 X
中的 n个值 ( n≥0) 相对应,则称 Y对 X是一
对多关系 。
? 多对多关系 ( m∶ m)
在职工模式中,职称和部门之间是多
对多关系 。 一种职称可分布在多个部门
中 ( 如每一个部门中均可有工程师 ),而
一个部门中也可有多个职称 。
设 X,Y是关系 R的两个属性 ( 集 ) 。
如果对于 X中的任一具体值,Y中有 m
( m≥0) 个值与之对应,而 Y中的一个值也
可以和 X中的 n个值 ( n≥0) 相对应,则称 Y
对 X是多对多关系 。
什么是数据依赖
上述属性间的三种关系实际上是属性值之间相互
依赖又相互制约的反映,称为属性间的数据依赖。
2,数据依赖
? 是通过一个关系中属性间值的相等与否体现出来的数
据间的相互关系
? 是现实世界属性间相互联系的抽象
? 是数据内在的性质
? 是 语义 的体现
什么是数据依赖(续)
3,数据依赖的类型
? 函数依赖( Functional Dependency,简记为 FD)
? 多值依赖( Multivalued Dependency,简记为 MVD)
? 连接依赖( Join Dependency,简称 JD)
其中最重要的是函数依赖和多值依赖。
四、关系模式的简化表示
● 关系模式 R( U,D,DOM,F)
简化为一个三元组:
R( U,F)
● 当且仅当 U上的一个关系 r 满足 F时,r称为关
系 模式 R( U,F)的一个 关系
五,数据依赖对关系模式的影响
例:描述学校的数据库:
学生的学号( Sno)、所在系( Sdept)
系主任姓名( Mname)、课程名( Cname)
成绩( Grade)
单一 的关系模式, Student <U,F>
U ={ Sno,Sdept,Mname,Cname,Grade }
数据依赖对关系模式的影响(续)
学校数据库的语义:
⒈ 一个系有若干学生,一个学生只属于一个系;
⒉ 一个系只有一名主任;
⒊ 一个学生可以选修多门课程,每门课程有若干学
生选修;
⒋ 每个学生所学的每门课程都有一个成绩。
数据依赖对关系模式的影响(续)
属性组 U上的一组函数依赖 F:
F ={ Sno → Sdept,Sdept → Mname,
(Sno,Cname) → Grade }
Sno Cname
Sdept Mname
Grade
用 有向图 表示属性间函数依赖,
结点表示属性,方框包含若干
结点表示属性组合,有向箭头
表示 函数依赖 。
关系模式 Student<U,F>中存在的问题
⒈ 数据冗余太大
– 浪费大量的存储空间
例:每一个系主任的姓名重复出现
⒉ 更新异常( Update Anomalies)
– 数据冗余, 更新数据时,维护数据完整性代价大。
例:某系更换系主任后,系统必须修改与该系学生有
关的每一个元组
关系模式 Student<U,F>中存在的问题
⒊ 插入异常( Insertion Anomalies)
– 该插的数据插不进去
例,如果一个系刚成立,尚无学生,我们就无法把这
个系及其系主任的信息存入数据库。
⒋ 删除异常( Deletion Anomalies)
– 不该删除的数据不得不删
例,如果某个系的学生全部毕业了,我们在删除该系
学生信息的同时,把这个系及其系主任的信息也丢掉
了。
数据依赖对关系模式的影响(续)
结论:
? Student关系模式不是一个好的模式。
?,好”的模式:
不会发生插入异常、删除异常、更新异常,
数据冗余应尽可能少。
原因,由存在于模式中的 某些数据依赖 引起的
解决方法,通过 分解 关系模式来消除其中不合适
的数据依赖。
5.2 规范化
规范化理论 正是用来改造关系模式,通
过分解关系模式来消除其中不合适的数
据依赖,以解决插入异常、删除异常、
更新异常和数据冗余问题。
5.2.1 函数依赖
一、函数依赖
二、平凡函数依赖与非平凡函数依赖
三、完全函数依赖与部分函数依赖
四、传递函数依赖
一、函数依赖
函数依赖是属性之间的一种联系。 假设给定一个属性的
值,就可以唯一确定(查到)另一个属性的值。 例如,知道职工
号的值,可以得出其对应的职称的值。 如果这种情况成立,就
可以说职称函数依赖于职工号。
定义 5.1 设 R(U)是一个属性集 U上的关系模式,X和 Y是 U的子
集。
若对于 R(U)的 任意 一个可能的关系 r,r中不可能存在两个元组
在 X上的属性值相等,而在 Y上的属性值不等,则称, X函
数确定 Y” 或, Y函数依赖于 X”,记作 X→Y。
X称为这个函数依赖的 决定属性集 (Determinant)。
Y=f(x)
说明:
1,函数依赖不是指关系模式 R的某个或某些关系实例满足的
约束条件,而是指 R的 所有关系实例 均要满足的约束条件。
2,函数依赖是 语义范畴 的概念。只能根据数据的语义来确定
函数依赖。
例如“姓名 →年龄”这个函数依赖只有在不允许有同名人
的条件下成立
3,数据库设计者可以对现实世界作强制的规定。例如规定不
允许同名人出现,函数依赖“姓名 →年龄”成立。所插入
的元组必须满足规定的函数依赖,若发现有同名人存在,
则拒绝装入该元组。
函数依赖(续)
例, Student(Sno,Sname,Ssex,Sage,Sdept)
假设不允许重名,则有,
Sno → Ssex,Sno → Sage,Sno → Sdept,
Sno ←→ Sname,Sname → Ssex,Sname → Sage
Sname → Sdept
但 Ssex →Sage
若 X→Y,并且 Y→X,则记为 X←→ Y。
若 Y不函数依赖于 X,则记为 X─→Y。
前面讨论的属性间的三种关系,并不是每
一种关系中都存在函数依赖 。
? 如果两属性集 X,Y间是 1∶ 1关系,则存在函
数依赖,X Y。 如职工关系模式中, 如果
不允许同名职工存在,则有,。
? 如果两属性集 X,Y间是 1∶ m关系,则存在函
数依赖,Y→X。 如,职工号 →职称,职工号
→部门 。
? 如果两属性集 X,Y间是 m∶ n关系,则不存在
函数依赖 。 如职称与部门之间即如此 。
?
?
二、平凡函数依赖与非平凡函数依赖
在关系模式 R(U)中,对于 U的子集 X和 Y,
如果 X→Y,但 Y ? X,则称 X→Y是 非平凡的函数依赖
若 X→Y,但 Y ? X,则称 X→Y是 平凡的函数依赖
例:在关系 SC(Sno,Cno,Grade)中,
非平凡函数依赖,(Sno,Cno) → Grade
平凡函数依赖,(Sno,Cno) → Sno
(Sno,Cno) → Cno
平凡函数依赖与非平凡函数依赖(续)
– 对于任一关系模式,平凡函数依赖都是必然
成立的,它不反映新的语义,因此若不特别
声明,我们总是讨论非平凡函数依赖。
– 注,在函数依赖中有两种特殊的函数依赖:
X→Φ和 Φ→Y,它们对于任意关系都是成立
的 。 在后面的介绍中我们不考虑这样的函数
依赖 。
三、完全函数依赖与部分函数依赖
定义 5.2 在关系模式 R(U)中,如果 X→Y,并且对于 X
的任何一个真子集 X’,都有
X’ Y,则称 Y完全函数依赖于 X,记作 X f Y。
若 X→Y,但 Y不完全函数依赖于 X(X’ Y),则称 Y
部分函数依赖 于 X,记作 X P Y。
完全函数依赖与部分函数依赖(续)
例, 在关系 SC(Sno,Cno,Grade)中,
由于,Sno →Grade,Cno → Grade,
因此,(Sno,Cno) f Grade
四、传递函数依赖
定义 5.3 在关系模式 R(U)中,如果 X→Y,Y→Z,
且 Y ?X,Y→X,则称 Z传递函数依赖 于 X。
注, 如果 Y→X,即 X←→Y,则 Z直接依赖 于 X。
例, 在关系 Std(Sno,Sdept,Mname)中,有:
Sno → Sdept,Sdept → Mname
Mname传递函数依赖于 Sno
5.2.2 码
定义 5.4 设 K为关系模式 R<U,F>中的属性或属性组合。若 K f U,
则 K称为 R的一个 侯选码 ( Candidate Key)。若关系模式 R有多
个候选码,则选定其中的一个做为 主码 ( Primary key)。
例,Student(Sno,Sname,Ssex,Sage,Sdept)
假设不允许重名,则有,Sno→Ssex,Sno→Sage,Sno→Sdept,
Sno←→ Sname,Sname→Ssex,Sname→Sage,Sname→ Sdept,
但 Ssex →Sage
? 主属性与非主属性
– 包含在任一候选码中的属性,叫做主属性
– 不包含在任何码中的属性称为非主属性
? ALL KEY:整个属性组是码,称为全码
? 例如:有关演员,制片公司,电影的一关系模
式如下:
签约 ( 演员名,制片公司名,电影名 )
该关系模式反映了某个演员为某部电影与某
制片公司的签约情况 。 由于一个制片公司可以为
一部电影和多个演员签约,一个演员可以和多个制
片公司签约饰演多部电影中的角色,一部电影可由
不同的制片公司制作 。 所以此关系模式的码为
( 演员名,制片公司名,电影名 ),即全码 。
外部码
定义 5.5 关系模式 R 中属性或属性组 X 并非 R的码,但 X 是
另一个关系模式的码,则称 X 是 R 的 外部码( Foreign key)
也称外码
设有如下两个关系模式:
职工 ( 职工号,姓名,性别,职称,部门号 )
部门 ( 部门号,部门名,电话,负责人 )
其中部门号不是职工表的码,但是部门表的码,所以部门号
在职工表中称为外码 。
? 主码和外部码一起提供了表示关系间联系的手段。
– 例如要查询某个职工所在部门的详细情况,只需查询部门表
中的部门号与该职工部门号相等的记录。
5.2.3 范式
? 范式是符合某一种级别的关系模式的集合。
? 关系数据库中的关系必须满足一定的要求。满
足不同程度要求的为不同范式。
? 范式的种类:
第一范式 (1NF)
第二范式 (2NF)
第三范式 (3NF)
BC范式 (BCNF)
第四范式 (4NF)
第五范式 (5NF)
5.2.3 范式
? 各种范式之间存在联系:
? 某一关系模式 R为第 n范式,可简记
为 R∈ nNF。
NF5NF4BC N FNF3NF2NF1 ?????
5.2.4 2NF
? 1NF的定义
如果一个关系模式 R的所有属性都是 不可分的
基本数据项,则 R∈ 1NF。
? 第一范式是对关系模式的最起码的要求。不满
足第一范式的数据库模式不能称为关系数据库。
? 但是满足第一范式的关系模式并不一定是一个
好的关系模式。
2NF
例, 关系模式 SLC(Sno,Sdept,Sloc,Cno,Grade)
Sloc为学生住处,假设每个系的学生住在同一个
地方。
? 函数依赖包括:
(Sno,Cno) f Grade
Sno → Sdept
(Sno,Cno) P Sdept
Sno → Sloc
(Sno,Cno) P Sloc
Sdept → Sloc
2NF
? SLC的码为 (Sno,Cno)
? SLC满足第一范式。
? 非主属性 Sdept和 Sloc部分函数依赖于码 (Sno,Cno)
Sno
Cno
Grade
Sdept
Sloc
SLC
SLC不是一个好的关系模式
(1) 插入异常
假设 Sno= 95102,Sdept= IS,Sloc= N的学生还未
选课,因课程号是主属性,因此该学生的信息无法
插入 SLC。
(2) 删除异常
假定某个学生本来只选修了 3号课程这一门课。现在
因身体不适,他连 3号课程也不选修了。因课程号
是主属性,此操作将导致该学生信息的整个元组都
要删除。
SLC不是一个好的关系模式
(3) 数据冗余度大
如果一个学生选修了 10门课程,那么他的 Sdept和
Sloc值就要重复存储了 10次。
(4) 修改复杂
例如学生转系,在修改此学生元组的 Sdept值的同时,
还可能需要修改住处( Sloc)。如果这个学生选修
了 K门课,则必须无遗漏地修改 K个元组中全部
Sdept,Sloc信息。
2NF
? 原因
Sdept,Sloc部分函数依赖于码。
? 解决方法
SLC分解为两个关系模式,以消除这些部分函数依赖
SC( Sno,Cno,Grade)
SL( Sno,Sdept,Sloc)
2NF
? SLC的码为 (Sno,Cno)
? SLC满足第一范式。
? 非主属性 Sdept和 Sloc部分函数依赖于码 (Sno,Cno)
Sno
Cno
Grade
Sdept
Sloc
SLC
2NF
函数依赖图,
Sno
Cno
Grade
SC SL
Sno
Sdept
Sloc
2NF
? 2NF的定义
定义 5.6 若关系模式 R∈ 1NF,并且每一个 非主 属性
都 完全 函数依赖于 R的码,则 R∈ 2NF。
例,SLC(Sno,Sdept,Sloc,Cno,Grade) ∈ 1NF
SLC(Sno,Sdept,Sloc,Cno,Grade) ∈ 2NF SC
( Sno,Cno,Grade) ∈ 2NF
SL( Sno,Sdept,Sloc) ∈ 2NF
第二范式(续)
? 采用投影分解法将一个 1NF的关系分解为多个
2NF的关系,可以在一定程度上减轻原 1NF关
系中存在的插入异常、删除异常、数据冗余度
大、修改复杂等问题。
? 将一个 1NF关系分解为多个 2NF的关系,并不
能完全消除关系模式中的各种异常情况和数据
冗余。
5.2.5 3NF
例,2NF关系模式 SL(Sno,Sdept,Sloc)中
? 函数依赖:
Sno→Sdept
Sdept→Sloc
Sno→Sloc
Sloc传递函数依赖于 Sno,即 SL中存在非
主属性对码的传递函数依赖。
3NF
函数依赖图,
SL
Sno
Sdept
Sloc
3NF
? 解决方法
采用投影分解法,把 SL分解为两个关系模式,以消
除传递函数依赖:
SD( Sno,Sdept)
DL( Sdept,Sloc)
SD的码为 Sno,DL的码为 Sdept。
3NF
SD的码为 Sno,DL的码为 Sdept。
Sno Sdept
SD
Sdept Sloc
DL
3NF
? 3NF的定义
定义 5.8 关系模式 R<U,F> 中若不存在这样的
码 X、属性组 Y及 非主属性 Z( Z ? Y),使得
X→Y,Y → X,Y→Z,成立,则称 R<U,F>
∈ 3NF。
例,SL(Sno,Sdept,Sloc) ∈ 2NF
SL(Sno,Sdept,Sloc) ∈ 3NF
SD( Sno,Sdept) ∈ 3NF
DL( Sdept,Sloc) ∈ 3NF
3NF
? 若 R∈ 3NF,则 R的每一个 非主属性 既不部分函数依赖于
候选码也不传递函数依赖于候选码。
? 如果 R∈ 3NF,则 R也是 2NF。
? 采用投影分解法将一个 2NF的关系分解为多个 3NF的关系,
可以在一定程度上解决原 2NF关系中存在的插入异常、删
除异常、数据冗余度大、修改复杂等问题;但不能完全消
除关系模式中的各种异常情况和数据冗余。
5.2.6 BC范式( BCNF)
? 定义 5.9 设关系模式 R<U,F>∈ 1NF,如果对于 R的 每个
函数依赖 X→Y,Y不是 X的子集,X必含有候选码,那么
R∈ BCNF。
若 R∈ BCNF
? 每一个决定属性集(因素)都包含(候选)码
? R中的 所有属性 (主,非主属性)都 完全函数依赖 于码
? R∈ 3NF
? 若 R∈ 3NF,则 R不一定 ∈ BCNF
BCNF
例:在关系模式 STJ( S,T,J)中,S表示学生,
T表示教师,J表示课程。
? 每一教师只教一门课。每门课由若干教师教,某一学
生选定某门课,就确定了一个固定的教师。某个学生
选修某个教师的课就确定了所选课的名称,
(S,J)→T,(S,T)→J,T→J
5.2.6 BCNF
S
J
T
S
T
J
STJ
BCNF
STJ∈ 3NF
? (S,J)和 (S,T)都可以作为候选码
? S,T,J都是主属性
STJ∈ BCNF
? T→J,T是决定属性,但 T不是候选码
BCNF
解决方法:将 STJ分解为二个关系模式:
SJ(S,J) ∈ BCNF,TJ(T,J)∈ BCNF
没有 任何属性 对码的部分函数依赖和传递函数依赖
S J
ST
T J
TJ
3NF与 BCNF的关系
? 如果关系模式 R∈ BCNF,
必定有 R∈ 3NF
? 如果 R∈ 3NF,且 R只有一个候选码,
则 R必属于 BCNF。
BCNF的关系模式所具有的性质
⒈ 所有 非主属性 都完全函数依赖于每个候选码
⒉ 所有 主属性 都完全函数依赖于每个不包含它的候
选码
⒊ 没有任何属性完全函数依赖于 非码 的任何一组属

5.2.5 多值依赖与第四范式( 4NF)
例, 学校中某一门课程由多个教师讲授,他们
使用相同的一套参考书。
关系模式 Teaching(C,T,B)
课程 C、教师 T 和 参考书 B
……

课 程 C 教 员 T 参 考 书 B
物理
数学
计算数学
李 勇
王 军
李 勇
张 平
张 平
周 峰
普通物理学
光学原理
物理习题集
数学分析
微分方程
高等代数
数学分析
表 5.1
普通物理学
光学原理
物理习题集
普通物理学
光学原理
物理习题集
数学分析
微分方程
高等代数
数学分析
微分方程
高等代数

李 勇
李 勇
李 勇
王 军
王 军
王 军
李 勇
李 勇
李 勇
张 平
张 平
张 平

物 理
物 理
物 理
物 理
物 理
物 理
数 学
数 学
数 学
数 学
数 学
数 学

参考书 B教员 T课程 C
用二维表表示 Teaching
多值依赖与第四范式(续)
? Teaching∈ BCNF:
? Teach具有唯一候选码 (C,T,B),即全码
? Teaching模式中存在的问题
(1)数据冗余度大:有多少名任课教师,参考书
就要存储多少次
多值依赖与第四范式(续)
(2)插入操作复杂:当某一课程增加一名任课教师时,
该课程有多少本参照书,就必须插入多少个元组
例如物理课增加一名教师刘关,需要插入三个元组:
(物理,刘关,普通物理学)
(物理,刘关,光学原理)
(物理,刘关,物理习题集)
多值依赖与第四范式(续)
(3) 删除操作复杂:某一门课要去掉一本参考书,
该课程有多少名教师,就必须删除多少个元组
(4) 修改操作复杂:某一门课要修改一本参考书,
该课程有多少名教师,就必须修改多少个元组
? 产生原因
存在多值依赖
一、多值依赖
? 定义 5.10
设 R(U)是一个属性集 U上的一个关系模式,X,Y和 Z
是 U的子集,并且 Z= U- X- Y,多值依赖 X→→Y成
立当且仅当对 R的 任一关系 r,r在( X,Z)上的每个
值对应一组 Y的值,这组值仅仅决定于 X值而与 Z值无

例 Teaching( C,T,B)
对于 C的每一个值,T有一组值与之对应,而不论 B取
何值
一、多值依赖
? 在 R( U)的任一关系 r中,如果存在元组 t,s 使得
t[X]=s[X],那么就必然存在元组 w,v? r,( w,v可以与
s,t相同),使得 w[X]=v[X]=t[X],而 w[Y]=t[Y],
w[Z]=s[Z],v[Y]=s[Y],v[Z]=t[Z](即交换 s,t元组的 Y值
所得的两个新元组必在 r中),则 Y多值依赖于 X,记为
X→→Y。 这里,X,Y是 U的子集,Z=U-X-Y。
t x y1 z2
s x y2 z1
w x y1 z1
v x y2 z2
多值依赖(续)
? 平凡多值依赖和非平凡的多值依赖
– 若 X→→Y,而 Z= φ,则称
X→→Y为 平凡的多值依赖
– 否则称 X→→Y为 非平凡的多值依赖
下面再举一多值依赖的例子 。
? 例,关系模式,供应 ( 项目,供应商,零件 ),
假设一个项目可由不同的供应商供应该项目
所需要的多种零件,一个供应商可为多个项
目供应多种零件,如下表所示 。
对于项目中的每一个 Ii,都有一完整的供
应商集合与之对应,同时交换供应商和零件
的值所得的新元组必在原关系中 。 因此有,
项目 →→ 供应商,项目 →→ 零件 。
供应表
多值依赖的性质
( 1)多值依赖具有对称性
若 X→→Y,则 X→→Z,其中 Z= U- X- Y
多值依赖的对称性可以用完全二分图直观地
表示出来。
( 2)多值依赖具有传递性
若 X→→Y,Y→→Z,则 X→→Z -Y
多值依赖的对称性
Xi
Zi1 Zi2 … Zim
Yi1 Yi2 … Yin
多值依赖的对称性


普通物理学 光学原理 物理习题集
李勇 王军
多值依赖(续)
( 3)函数依赖是多值依赖的特殊情况。
若 X→Y,则 X→→Y。
( 4)若 X→→Y,X→→Z,则 X→→Y? Z。
( 5)若 X→→Y,X→→Z,则 X→→Y∩Z。
( 6)若 X→→Y,X→→Z,则 X→→Y-Z,X→→Z
-Y。
? 一般来讲,当关系至少有三个属性,其中的两个是多值,
且它们的值只依赖于第三个属性时,才会有多值依赖 。
即对于关系 R( A,B,C),如果 A决定 B的多个值,A决定
C的多个值,B和 C相互独立,这时才存在多值依赖 。
多值依赖与函数依赖的区别
(1) 有效性
? 多值依赖的有效性与属性集的范围有关
若 X→→Y在 U上成立,则在 W( X Y ? W ? U)上一
定成立;反之则不然,即 X→→Y在 W( W ? U)
上成立,在 U上并不一定成立
– 多值依赖的定义中不仅涉及属性组 X和 Y,而且涉
及 U中其余属性 Z。
– 一般地,在 R( U)上若有 X→→Y在 W( W ? U)
上成立,则称 X→→Y为 R( U)的嵌入型多值依赖
多值依赖与函数依赖的区别
? 只要在 R( U)的任何一个关系 r中,元组在 X
和 Y上的值满足定义 5.l(函数依赖),
则函数依赖 X→Y在任何属性集 W( X Y ? W
?U)上成立 。
多值依赖(续)
(2)
– 若函数依赖 X→Y在 R( U)上成立,则对于任何 Y'?Y均
有 X→Y'成立
– 多值依赖 X→→Y若在 R(U)上成立,不能断言对于任何
Y'?Y有 X→→Y'成立
? 函数依赖可看成是多值依赖的特例,即函数依赖一定
是多值依赖; 多值依赖是函数依赖的概括,即存在
多值依赖的关系,不一定存在函数依赖。
二、第四范式( 4NF)
? 定义 5.10 关系模式 R<U,F>∈ 1NF,如果对于
R的每个非平凡多值依赖 X→→Y( Y ? X),
X都含有候选码,则 R∈ 4NF。
( X→Y)
? 如果 R ∈ 4NF,则 R ∈ BCNF
不允许 有非平凡且非函数依赖的 多值依赖
允许 的是 函数依赖 (是非平凡多值依赖)
第四范式(续)
例,Teach(C,T,B) ∈ 4NF
存在非平凡的多值依赖 C→→T,且 C不是候选码
? 用投影分解法把 Teach分解为如下两个关系模式:
CT(C,T) ∈ 4NF
CB(C,B) ∈ 4NF
C→→T,C→→B是平凡多值依赖
5.2 规范化
5.2.1 第一范式( 1NF)
5.2.2 第二范式( 2NF)
5.2.3 第三范式( 3NF)
5.2.4 BC范式( BCNF)
5.2.5 多值依赖与第四范式( 4NF)
5.2.6 规范化
5.2.6 规范化
? 关系数据库的规范化理论是数据库逻辑
设计的工具。
? 一个关系只要其分量都是不可分的数据
项,它就是规范化的关系,但这只是最
基本的规范化。
? 规范化程度可以有多个不同的级别
规范化(续)
? 规范化程度过低的关系不一定能够很好地描述
现实世界,可能会存在插入异常、删除异常、
修改复杂、数据冗余等问题
? 一个低一级范式的关系模式,通过模式分解可
以转换为若干个高一级范式的关系模式集合,
这种过程就叫 关系模式的规范化
规范化(续)
? 关系模式规范化的基本步骤
1NF
↓ 消除非主属性对码的部分函数依赖
消除决定属性 2NF
集非码的非平 ↓ 消除非主属性对码的传递函数依赖
凡函数依赖 3NF
↓ 消除主属性对码的部分和传递函数依

BCNF
↓ 消除非平凡且非函数依赖的多值依赖
4NF
规范化的基本思想
– 消除不合适的数据依赖的各关系模式达到某
种程度的“分离”
– 采用“一事一地”的模式设计原则
让一个关系描述一个概念、一个实体或者实
体间的一种联系。若多于一个概念就把它
“分离”出去
– 所谓规范化实质上是概念的单一化
规范化(续)
? 不能说规范化程度越高的关系模式就越好
? 在设计数据库模式结构时,必须对现实世界的
实际情况和用户应用需求作进一步分析,确定
一个合适的、能够反映现实世界的模式
? 上面的规范化步骤可以在其中任何一步终止
规范化(续)
? 规范化的基本原则是,由低到高,逐步规范,权衡利
弊,适可而止 。 通常,以满足第三范式为基本要求 。
? 把一个非规范化的数据结构转换成第三范式,
一般经过以下几步:
– 把该结构分解成若干个属于第一范式的关系 。
– 对那些存在组合码,且有非主属性部分函数依赖的关系必
须继续分解,使所得关系都是属于第二范式 。
– 若关系中有非主属性传递依赖于码,则继续分解之,使得关
系都属于第三范式 。
规范化(续)
? 关系模式的规范化过程是通过投影分解实现
的,即用投影运算把一个模式分解成若干个高
一级的关系模式。 这种投影分解不是唯一的
。 在分解时应注意满足以下三个条件:
– 分解是无损连接分解,分解后既不丢失又不增加信
息 。
– 分解所得的所有关系都是高一级范式的。
– 分解所得关系的个数最少。
小结 (续 )
? 规范化理论为数据库设计提供了理论的指南和工具
– 也仅仅是指南和工具
? 并不是规范化程度越高, 模式就越好
– 必须结合应用环境和现实世界的具体情况合理地选择数
据库模式
? 事实上,规范化理论是在与 SQL编程语言结合时产生
的 。 关系理论的基本原则指出,数据库被规范化后,
其中的任何数据子集都可以用基本的 SQL操作符获
取 。 这就是规范化的重要性所在 。 数据库不进行
规范化,就必须通过编写大量复杂代码来查询数据 。