An Introduction to Database System
中国人民大学信息学院数据库系统概论
An Introduction to Database System
第六章 关系数据理论
An Introduction to Database System
第六章 关系数据理论
6.1 问题的提出
6.2 规范化
6.3 数据依赖的公理系统
*6.4 模式的分解
6.5 小结
An Introduction to Database System
6.1 问题的提出关系数据库逻辑设计
针对具体问题,如何构造一个适合于它的数据模式
数据库逻辑设计的工具 ──关系数据库的规范化理论
An Introduction to Database System
问题的提出一、概念回顾二、关系模式的形式化定义三、什么是数据依赖四、关系模式的简化定义五、数据依赖对关系模式影响
An Introduction to Database System
一、概念回顾
关系
关系模式
关系数据库
关系数据库的模式
An Introduction to Database System
二、关系模式的形式化定义关系模式由五部分组成,即它是一个五元组:
R(U,D,DOM,F)
R,关系名
U,组成该关系的属性名集合
D,属性组 U中属性所来自的域
DOM,属性向域的映象集合
F,属性间数据的依赖关系集合
An Introduction to Database System
三、什么是数据依赖
1,完整性约束的表现形式
限定属性取值范围:例如学生成绩必须在 0-100之间
定义属性 值 间的相互关连(主要体现于值的 相等与否 ),这就是数据依赖,它是数据库模式设计的关键
An Introduction to Database System
什么是数据依赖(续)
2,数据依赖
一个关系内部属性与属性之间的约束关系
现实世界属性间相互联系的抽象
数据内在的性质
语义 的体现
An Introduction to Database System
什么是数据依赖(续)
3,数据依赖的类型
函数依赖( Functional Dependency,简记为 FD)
多值依赖( Multivalued Dependency,简记为 MVD)
其他
An Introduction to Database System
四、关系模式的简化表示
关系模式 R( U,D,DOM,F)
简化为一个三元组:
R( U,F)
当且仅当 U上的一个关系 r满足 F时,r称为 关系模式 R( U,
F)的一个 关系
An Introduction to Database System
五,数据依赖对关系模式的影响
[例 1]建立一个描述学校教务的数据库:
学生的学号( Sno)、所在系( Sdept)
系主任姓名( Mname)、课程名( Cname)
成绩( Grade)
单一 的关系模式,Student <U,F>
U ={ Sno,Sdept,Mname,Cname,Grade }
An Introduction to Database System
数据依赖对关系模式的影响(续)
属性组 U上的一组函数依赖 F:
F ={ Sno → Sdept,Sdept → Mname,
(Sno,Cname) → Grade }
Sno Cname
Sdept Mname
Grade
An Introduction to Database System
关系模式 Student<U,F>中存在的问题
1,数据冗余太大
2,更新异常( Update Anomalies)
3,插入异常( Insertion Anomalies)
4,删除异常( Deletion Anomalies)
An Introduction to Database System
数据依赖对关系模式的影响(续)
结论:
Student关系模式不是一个好的模式。
,好”的模式:
不会发生插入异常、删除异常、更新异常,
数据冗余应尽可能少原因,由存在于模式中的 某些数据依赖 引起的解决方法,通过 分解 关系模式来消除其中不合适的数据依赖
An Introduction to Database System
分解关系模式
把这个单一模式分成 3个关系模式:
S( Sno,Sdept,Sno → Sdept) ;
SC( Sno,Cno,Grade,( Sno,Cno) → Grade) ;
DEPT( Sdept,Mname,Sdept→ Mname)
An Introduction to Database System
第六章 关系数据理论
6.1 问题的提出
6.2 规范化
6.3 数据依赖的公理系统
*6.4 模式的分解
6.5 小结
An Introduction to Database System
6.2 规范化规范化理论 正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、
更新异常和数据冗余问题。
An Introduction to Database System
6.2 规范化
6.2.1 函数依赖
6.2.2 码
6.2.3 范式
6.2.4 2NF
6.2.5 3NF
6.2.6 BCNF
6.2.7 多值依赖
6.2.8 4NF
6.2.9 规范化小结
An Introduction to Database System
6.2.1 函数依赖
函数依赖
平凡函数依赖与非平凡函数依赖
完全函数依赖与部分函数依赖
传递函数依赖
An Introduction to Database System
一、函数依赖定义 6.1 设 R(U)是一个属性集 U上的关系模式,X和 Y是 U的子集。
若对于 R(U)的 任意 一个可能的关系 r,r中不可能存在两个元组在 X上的属性值相等,而在 Y上的属性值不等,则称,X
函数确定 Y” 或,Y函数依赖于 X”,记作 X→Y。
An Introduction to Database System
说明
1,所有关系实例 均要满足
2,语义范畴 的概念
3,数据库设计者可以对现实世界作强制的规定
An Introduction to Database System
二、平凡函数依赖与非平凡函数依赖在关系模式 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
An Introduction to Database System
平凡函数依赖与非平凡函数依赖(续)
若 X→Y,则 X称为这个函数依赖的决定属性组,也称为决定因素( Determinant)。
若 X→Y,Y→X,则记作 X←→ Y。
若 Y不函数依赖于 X,则记作 X→ Y。
An Introduction to Database System
三、完全函数依赖与部分函数依赖定义 6.2 在 R(U)中,如果 X→Y,并且对于 X的任何一个真子集 X’,都有 X’ Y,则称 Y对 X完全函数依赖,记作
X F Y。
若 X→Y,但 Y不完全函数依赖于 X,则称 Y对 X部分函数依赖,记作 X P Y。
An Introduction to Database System
完全函数依赖与部分函数依赖(续)
[例 1] 中 (Sno,Cno)→Grade是完全函数依赖,
(Sno,Cno)→Sdept是部分函数依赖因为 Sno →Sdept成立,且 Sno是( Sno,Cno)
的真子集
F
P
An Introduction to Database System
四、传递函数依赖定义 6.3 在 R(U)中,如果 X→Y,(Y?X),Y→X Y→Z,
则称 Z对 X传递函数依赖 。
记为,X → Z
注,如果 Y→X,即 X←→Y,则 Z直接依赖于 X。
例,在关系 Std(Sno,Sdept,Mname)中,有:
Sno → Sdept,Sdept → Mname
Mname传递函数依赖于 Sno
传递
An Introduction to Database System
6.2 规范化
6.2.1 函数依赖
6.2.2 码
6.2.3 范式
6.2.4 2NF
6.2.5 3NF
6.2.6 BCNF
6.2.7 多值依赖
6.2.8 4NF
6.2.9 规范化小结
An Introduction to Database System
6.2.2 码定义 6.4 设 K为 R<U,F>中的属性或属性组合。若 K U,
则 K称为 R的 侯选码 ( Candidate Key)。
若候选码多于一个,则选定其中的一个做为 主码
( Primary Key)。
F
An Introduction to Database System
码(续)
主属性与非主属性
包含在任何一个候选码中的属性,称为主属性( Prime
attribute)
不包含在任何码中的属性称为非主属性( Nonprime attribute)
或非码属性( Non-key attribute)
全码
整个属性组是码,称为全码( All-key)
An Introduction to Database System
码(续)
[例 2]
关系模式 S(Sno,Sdept,Sage),单个属性 Sno是码,
SC( Sno,Cno,Grade)中,( Sno,Cno)是码
[例 3]
关系模式 R( P,W,A)
P:演奏者 W:作品 A:听众一个演奏者可以演奏多个作品某一作品可被多个演奏者演奏听众可以欣赏不同演奏者的不同作品码为 (P,W,A),即 All-Key
An Introduction to Database System
外部码定义 6.5 关系模式 R 中属性或属性组 X 并非 R的码,但
X 是另一个关系模式的码,则称 X 是 R 的 外部码
( Foreign key) 也称外码
如在 SC( Sno,Cno,Grade)中,Sno不是码,但
Sno是关系模式 S( Sno,Sdept,Sage)的码,则
Sno是关系模式 SC的外部码
主码与外部码一起提供了表示关系间联系的手段
An Introduction to Database System
6.2 规范化
6.2.1 函数依赖
6.2.2 码
6.2.3 范式
6.2.4 2NF
6.2.5 3NF
6.2.6 BCNF
6.2.7 多值依赖
6.2.8 4NF
6.2.9 规范化小结
An Introduction to Database System
6.2.3 范式
范式是符合某一种级别的关系模式的集合
关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式
范式的种类:
第一范式 (1NF)
第二范式 (2NF)
第三范式 (3NF)
BC范式 (BCNF)
第四范式 (4NF)
第五范式 (5NF)
An Introduction to Database System
6.2.3 范式
各种范式之间存在联系:
某一关系模式 R为第 n范式,可简记为 R∈ nNF。
一个低一级范式的关系模式,通过 模式分解 可以转换为若干个高一级范式的关系模式的集合,这种过程就叫 规范化
NF5NF4B C N FNF3NF2NF1
An Introduction to Database System
6.2 规范化
6.2.1 函数依赖
6.2.2 码
6.2.3 范式
6.2.4 2NF
6.2.5 3NF
6.2.6 BCNF
6.2.7 多值依赖
6.2.8 4NF
6.2.9 规范化小结
An Introduction to Database System
6.2.4 2NF
1NF的定义如果一个关系模式 R的所有属性都是 不可分的基本数据项,
则 R∈ 1NF
第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库
但是满足第一范式的关系模式并不一定是一个好的关系模式
An Introduction to Database System
2NF(续)
[例 4] 关系模式 S-L-C(Sno,Sdept,Sloc,Cno,Grade)
Sloc为学生住处,假设每个系的学生住在同一个地方
函数依赖包括:
(Sno,Cno) F Grade
Sno → Sdept
(Sno,Cno) P Sdept
Sno → Sloc
(Sno,Cno) P Sloc
Sdept → Sloc
An Introduction to Database System
2NF(续)
S-L-C的码为 (Sno,Cno)
S-L-C满足第一范式。
非主属性 Sdept和 Sloc部分函数依赖于码 (Sno,Cno)
Sno
Cno
Grade
Sdept
Sloc
S-L-C
An Introduction to Database System
S-L-C不是一个好的关系模式(续)
(1) 插入异常
(2) 删除异常
(3) 数据冗余度大
(4) 修改复杂
An Introduction to Database System
S-L-C不是一个好的关系模式(续)
原因
Sdept,Sloc部分函数依赖于码。
解决方法
S-L-C分解为两个关系模式,以消除这些部分函数依赖
SC( Sno,Cno,Grade)
S-L( Sno,Sdept,Sloc)
An Introduction to Database System
2NF(续)
函数依赖图:
Sno
Cno
Grade
SC S-L
Sno
Sdept
Sloc
关系模式 SC的码为( Sno,Cno)
关系模式 S-L的码为 Sno
这样非主属性对码都是完全函数依赖
An Introduction to Database System
2NF(续)
2NF的定义定义 6.6 若 R∈ 1NF,且每一个 非主属性 完全 函数依赖于码,则 R∈ 2NF。
例,S-L-C(Sno,Sdept,Sloc,Cno,Grade) ∈ 1NF
S-L-C(Sno,Sdept,Sloc,Cno,Grade) ∈ 2NF
SC( Sno,Cno,Grade) ∈ 2NF
S-L( Sno,Sdept,Sloc) ∈ 2NF
An Introduction to Database System
2NF(续)
采用投影分解法将一个 1NF的关系分解为多个 2NF的关系,
可以在一定程度上减轻原 1NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。
将一个 1NF关系分解为多个 2NF的关系,并不能完全消除关系模式中的各种异常情况和数据冗余。
An Introduction to Database System
6.2 规范化
6.2.1 函数依赖
6.2.2 码
6.2.3 范式
6.2.4 2NF
6.2.5 3NF
6.2.6 BCNF
6.2.7 多值依赖
6.2.8 4NF
6.2.9 规范化小结
An Introduction to Database System
6.2.5 3NF
3NF的定义定义 6.7 关系模式 R<U,F> 中若不存在这样的码 X、属性组 Y及非主属性 Z( Z? Y),使得 X→Y,Y→Z成立,
Y → X,则称 R<U,F> ∈ 3NF。
若 R∈ 3NF,则每一个 非主属性 既不部分依赖 于码 也不传递依赖 于码。
An Introduction to Database System
3NF(续)
例,2NF关系模式 S-L(Sno,Sdept,Sloc)中
函数依赖:
Sno→Sdept
Sdept → Sno
Sdept→Sloc
可得:
Sno→Sloc,即 S-L中存在非主属性对码的传递函数依赖,S-L ∈ 3NF
传递
An Introduction to Database System
3NF(续)
函数依赖图:
S-L
Sno
Sdept
Sloc
An Introduction to Database System
3NF(续)
解决方法采用投影分解法,把 S-L分解为两个关系模式,以消除传递函数依赖:
S-D( Sno,Sdept)
D-L( Sdept,Sloc)
S-D的码为 Sno,D-L的码为 Sdept。
分解后的关系模式 S-D与 D-L中不再存在传递依赖
An Introduction to Database System
3NF(续)
S-D的码为 Sno,D-L的码为 Sdept
Sno Sdept
S-D
Sdept Sloc
D-L
S-L(Sno,Sdept,Sloc) ∈ 2NF
S-L(Sno,Sdept,Sloc) ∈ 3NF
S-D(Sno,Sdept) ∈ 3NF
D-L(Sdept,Sloc)∈ 3NF
An Introduction to Database System
3NF(续)
采用投影分解法将一个 2NF的关系分解为多个 3NF的关系,可以在一定程度上解决原 2NF关系中存在的插入异常、删除异常、
数据冗余度大、修改复杂等问题。
将一个 2NF关系分解为多个 3NF的关系后,仍然不能完全消除关系模式中的各种异常情况和数据冗余。
An Introduction to Database System
6.2 规范化
6.2.1 函数依赖
6.2.2 码
6.2.3 范式
6.2.4 2NF
6.2.5 3NF
6.2.6 BCNF
6.2.7 多值依赖
6.2.8 4NF
6.2.9 规范化小结
An Introduction to Database System
6.2.6 BC范式( BCNF)
定义 6.8 关系模式 R<U,F>∈ 1NF,若 X→Y且
Y? X时 X必含有码,则 R<U,F> ∈ BCNF。
等价于:每一个决定属性因素都包含码
An Introduction to Database System
BCNF(续)
若 R∈ BCNF
所有非主属性对每一个码都是完全函数依赖
所有的主属性对每一个不包含它的码,也是完全函数依赖
没有任何属性完全函数依赖于非码的任何一组属性
R ∈ BCNF R ∈ 3NF充分不必要
An Introduction to Database System
BCNF(续)
[例 5] 关系模式 C( Cno,Cname,Pcno)
C∈ 3NF
C∈ BCNF
[例 6] 关系模式 S( Sno,Sname,Sdept,Sage)
假定 S有两个码 Sno,Sname
S∈ 3NF。
S ∈ BCNF
An Introduction to Database System
BCNF(续)
[例 7]关系模式 SJP( S,J,P)
函数依赖:( S,J) →P; (J,P) →S
( S,J)与( J,P)都可以作为候选码,属性相交
SJP∈ 3NF,
SJP∈ BCNF
An Introduction to Database System
BCNF(续)
[例 8]在关系模式 STJ( S,T,J)中,S表示学生,T表示教师,J表示课程。
函数依赖:
(S,J)→T,(S,T)→J,T→J
(S,J)和 (S,T)都是候选码
An Introduction to Database System
BCNF(续)
J
S
J
T
S
T
STJ中的函数依赖
An Introduction to Database System
BCNF(续)
STJ∈ 3NF
没有任何非主属性对码传递依赖或部分依赖
STJ∈ BCNF
T是决定因素,T不包含码
An Introduction to Database System
BCNF(续)
解决方法:将 STJ分解为二个关系模式:
ST(S,T) ∈ BCNF,TJ(T,J)∈ BCNF
没有 任何属性 对码的部分函数依赖和传递函数依赖
S J
ST
T J
TJ
An Introduction to Database System
3NF与 BCNF的关系
R ∈ BCNF R ∈ 3NF
如果 R∈ 3NF,且 R只有一个候选码
R ∈ BCNF R ∈ 3NF
充分不必要充分必要
An Introduction to Database System
6.2 规范化
6.2.1 函数依赖
6.2.2 码
6.2.3 范式
6.2.4 2NF
6.2.5 3NF
6.2.6 BCNF
6.2.7 多值依赖
6.2.8 4NF
6.2.9 规范化小结
An Introduction to Database System
6.2.7 多值依赖
[例 9] 学校中某一门课程由多个教师讲授,他们使用相同的一套参考书。每个教员可以讲授多门课程,每种参考书可以供多门课程使用。
An Introduction to Database System
…… …
课 程 C 教 员 T 参 考 书 B
物理数学计算数学李 勇王 军李 勇张 平张 平周 峰普通物理学光学原理物理习题集数学分析微分方程高等代数数学分析
...…
多值依赖(续)
非规范化关系
An Introduction to Database System
普通物理学光学原理物理习题集普通物理学光学原理物理习题集数学分析微分方程高等代数数学分析微分方程高等代数

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

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

参考书 B教员 T课程 C
多值依赖(续)
用二维表表示 Teaching
An Introduction to Database System
多值依赖(续)
Teaching∈ BCNF
Teaching具有唯一候选码 (C,T,B),即全码
An Introduction to Database System
多值依赖(续)
Teaching模式中存在的问题
(1)数据冗余度大
(2)插入操作复杂
(3) 删除操作复杂
(4) 修改操作复杂存在多值依赖
An Introduction to Database System
多值依赖(续)
定义 6.9
设 R(U)是一个属性集 U上的一个关系模式,X,Y和 Z是 U的子集,并且 Z= U- X- Y。关系模式 R(U)中 多值依赖 X→→Y成立,
当且仅当对 R(U)的 任一关系 r,给定的一对( x,z)值,有一组
Y的值,这组值仅仅决定于 x值而与 z值无关
例 Teaching( C,T,B)
An Introduction to Database System
多值依赖(续)
多值依赖的另一个等价的形式化的定义:
在 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。
An Introduction to Database System
多值依赖(续)
平凡多值依赖和非平凡的多值依赖
若 X→→Y,而 Z= φ,则称
X→→Y为 平凡的多值依赖
否则称 X→→Y为 非平凡的多值依赖
An Introduction to Database System
多值依赖(续)
[例 10]关系模式 WSC( W,S,C)
W表示仓库,S表示保管员,C表示商品
假设每个仓库有若干个保管员,有若干种商品
每个保管员保管所在的仓库的所有商品
每种商品被所有保管员保管
An Introduction to Database System
多值依赖(续)
W S C
W1 S1 C1
W1 S1 C2
W1 S1 C3
W1 S2 C1
W1 S2 C2
W1 S2 C3
W2 S3 C4
W2 S3 C5
W2 S4 C4
W2 S4 C5
An Introduction to Database System
多值依赖(续)
W→→S 且 W→→C
用下图表示这种对应
An Introduction to Database System
多值依赖的性质
( 1)多值依赖具有对称性若 X→→Y,则 X→→Z,其中 Z= U- X- Y
( 2)多值依赖具有传递性若 X→→Y,Y→→Z,则 X→→Z –Y
( 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。
An Introduction to Database System
多值依赖与函数依赖的区别
(1) 多值依赖的有效性与属性集的范围有关
(2)
若函数依赖 X→Y在 R( U)上成立,则对于任何
Y'? Y均有 X→Y' 成立
多值依赖 X→→Y若在 R(U)上成立,不能断言对于任何 Y'? Y有 X→→Y' 成立
An Introduction to Database System
6.2 规范化
6.2.1 函数依赖
6.2.2 码
6.2.3 范式
6.2.4 2NF
6.2.5 3NF
6.2.6 BCNF
6.2.7 多值依赖
6.2.8 4NF
6.2.9 规范化小结
An Introduction to Database System
6.2.8 4NF
定义 6.10 关系模式 R<U,F>∈ 1NF,如果对于 R的每个非平凡多值依赖 X→→Y( Y? X),X都含有码,则
R∈ 4NF。
如果 R ∈ 4NF,则 R ∈ BCNF
不允许 有非平凡且非函数依赖的 多值依赖
允许 的非平凡多值依赖是 函数依赖
An Introduction to Database System
4NF(续)
例,Teaching(C,T,B) ∈ 4NF
存在非平凡的多值依赖 C→→T,且 C不是码
用投影分解法把 Teaching分解为如下两个关系模式:
CT(C,T) ∈ 4NF
CB(C,B) ∈ 4NF
C→→T,C→→B是平凡多值依赖
An Introduction to Database System
6.2 规范化
6.2.1 函数依赖
6.2.2 码
6.2.3 范式
6.2.4 2NF
6.2.5 3NF
6.2.6 BCNF
6.2.7 多值依赖
6.2.8 4NF
6.2.9 规范化小结
An Introduction to Database System
6.2.9 规范化小结
关系数据库的规范化理论是数据库逻辑设计的工具
目的:尽量消除插入、删除一场,修改复杂,数据冗余
基本思想:逐步消除数据依赖中不合适的部分
实质:概念的 单一化
An Introduction to Database System
规范化小结(续)
关系模式规范化的基本步骤
1NF
↓ 消除非主属性对码的部分函数依赖消除决定属性 2NF
集非码的非平 ↓ 消除非主属性对码的传递函数依赖凡函数依赖 3NF
↓ 消除主属性对码的部分和传递函数依赖
BCNF
↓ 消除非平凡且非函数依赖的多值依赖
4NF
An Introduction to Database System
规范化小结(续)
不能说规范化程度越高的关系模式就越好
在设计数据库模式结构时,必须对现实世界的实际情况和用户应用需求作进一步分析,确定一个合适的、能够反映现实世界的模式
上面的规范化步骤可以在其中任何一步终止
An Introduction to Database System
第六章 关系数据理论
6.1 问题的提出
6.2 规范化
6.3 数据依赖的公理系统
*6.4 模式的分解
6.5 小结
An Introduction to Database System
6.3 数据依赖的公理系统
逻辑蕴含定义 6.11 对于满足一组 函数依赖 F 的关系模式 R <U,F>,
其任何一个关系 r,若函数依赖 X→Y 都成立,(即 r中任意两元组 t,s,若 tX] =sX],则 tY] =sY]),则称 F逻辑蕴含 X →Y
An Introduction to Database System
1,Armstrong公理系统关系模式 R <U,F >来说有以下的推理规则:
A1.自反律 ( Reflexivity):若 Y? X? U,则 X →Y为 F所蕴含。
A2.增广律 ( Augmentation):若 X→Y为 F所蕴含,且 Z?
U,则 XZ→YZ为 F所蕴含。
A3.传递律 ( Transitivity):若 X→Y及 Y→Z为 F所蕴含,则
X→Z为 F所蕴含。
An Introduction to Database System
定理 6.1 Armstrong推理规则是正确的
( l)自反律,若 Y? X? U,则 X →Y为 F所蕴含证,设 Y? X? U
对 R <U,F> 的任一关系 r中的任意两个元组 t,s:
若 t[X]=s[X],由于 Y? X,有 t[y]=s[y],
所以 X→Y成立,自反律得证
An Introduction to Database System
定理 6.l Armstrong推理规则是正确的(续)
(2)增广律,若 X→Y为 F所蕴含,且 Z? U,则 XZ→YZ 为 F所蕴含。
证,设 X→Y为 F所蕴含,且 Z? U。
设 R<U,F> 的任一关系 r中任意的两个元组 t,s:
若 t[XZ]=s[XZ],则有 t[X]=s[X]和 t[Z]=s[Z];
由 X→Y,于是有 t[Y]=s[Y],所以 t[YZ]=s[YZ],所以
XZ→YZ为 F所蕴含,增广律得证。
An Introduction to Database System
定理 6.l Armstrong推理规则是正确的(续)
(3) 传递律:若 X→Y及 Y→Z为 F所蕴含,则
X→Z为 F所蕴含。
证,设 X→Y及 Y→Z为 F所蕴含。
对 R<U,F> 的任一关系 r中的任意两个元组 t,s:
若 t[X]=s[X],由于 X→Y,有 t[Y]=s[Y];
再由 Y→Z,有 t[Z]=s[Z],所以 X→Z为 F所蕴含,传递律得证。
An Introduction to Database System
2,导出规则
1.根据 A1,A2,A3这三条推理规则可以得到下面三条推理规则:
合并规则,由 X→Y,X→Z,有 X→YZ。
( A2,A3)
伪传递规则,由 X→Y,WY→Z,有 XW→Z。
( A2,A3)
分解规则,由 X→Y及 Z?Y,有 X→Z。
( A1,A3)
An Introduction to Database System
导出规则
2.根据合并规则和分解规则,可得引理 6.1
引理 6.l X→A1 A2…A k成立的充分必要条件是
X→Ai成立( i=l,2,…,k)
An Introduction to Database System
Armstrong公理系统
Armstrong公理系统是有效的、完备的
有效性:由 F出发根据 Armstrong公理推导出来的每一个函数依赖一定在 F+中;
完备性,F+中的每一个函数依赖,必定可以由
F出发根据 Armstrong公理推导出来
An Introduction to Database System
3,函数依赖闭包定义 6.l2 在关系模式 R<U,F>中为 F所逻辑蕴含的函数依赖的全体叫作 F的闭包,记为 F+。
定义 6.13 设 F为属性集 U上的一组函数依赖,X?U,
XF+ ={ A|X→A能由 F 根据 Armstrong公理导出 },
XF+称为属性集 X关于函数依赖集 F 的闭包
An Introduction to Database System
F的闭包
F={X?Y,Y?Z}
F+={
X?φ,Y?φ,Z?φ,XY?φ,XZ?φ,YZ?φ,XYZ?φ,
X?X,Y?Y,Z?Z,XY?X,XZ?X,YZ?Y,XYZ?X,
X?Y,Y?Z,XY?Y,XZ?Y,YZ?Z,XYZ?Y,
X?Z,Y?YZ,XY?Z,XZ?Z,YZ?YZ,XYZ?Z,
X?XY,XY?XY,XZ?XY,XYZ?XY,
X?XZ,XY?YZ,XZ?XZ,XYZ?YZ,
X?YZ,XY?XZ,XZ?XY,XYZ?XZ,
X?ZYZ,XY?XYZ,XZ?XYZ,XYZ?XYZ }
F={X?A1,……,X?An}的闭包 F+计算是一个 NP完全问题
An Introduction to Database System
关于闭包的引理
引理 6.2
设 F为属性集 U上的一组函数依赖,X,Y? U,X→Y能由 F 根据 Armstrong公理导出的充分必要条件是 Y?XF+
用途将判定 X→Y是否能由 F根据 Armstrong公理导出的问题,
转化为求出 XF+,判定 Y是否为 XF+的子集的问题
An Introduction to Database System
求闭包的算法算法 6.1 求属性集 X( X? U)关于 U上的函数依赖集 F 的闭包 XF+
输入,X,F 输出,XF+
步骤:
( 1)令 X( 0) =X,i=0
( 2)求 B,这里 B = { A |(? V)(? W)(V→W?F∧ V? X( i) ∧ A? W)};
( 3) X( i+1) =B∪ X( i)
( 4)判断 X( i+1) = X ( i) 吗?
( 5)若相等或 X( i) =U,则 X( i) 就是 XF+,算法终止。
( 6)若否,则 i=i+l,返回第( 2)步。
An Introduction to Database System
算法 6.1
对于算法 6.1,令 ai =|X( i) |,{ai }形成一个步长大于 1的严格递增的序列,序列的上界是 |
U |,因此该算法最多 |U| - |X| 次循环就会终止。
An Introduction to Database System
函数依赖闭包
[例 1] 已知关系模式 R<U,F>,其中
U={A,B,C,D,E};
F={AB→C,B→D,C→E,EC→B,AC→B}。
求( AB) F+ 。
解 设 X( 0) =AB;
(1) X( 1) =AB∪ CD=ABCD。
(2) X( 0) ≠ X( 1)
X( 2) =X( 1) ∪ BE=ABCDE。
(3) X( 2) =U,算法终止
( AB) F+ =ABCDE。
An Introduction to Database System
4,Armstrong公理系统的有效性与完备性
定理 6.2 Armstrong公理系统是有效的、完备的
证明:
1,有效性可由定理 6.1得证
2,完备性只需证明 逆否命题,若函数依赖 X→Y不能由 F
从 Armstrong公理导出,那么它必然不为 F所蕴含
An Introduction to Database System
Armstrong公理系统完备性证明
(1) 引理,若 V→W成立,且 V? XF+,则 W? XF+
(2) 构造一张二维表 r,它由下列两个元组构成,可以证明 r必是 R
( U,F)的一个关系,即 F+中的全部函数依赖在 r上成立。
XF+ U-XF+
11......1 00......0
11......1 11......1
(3) 若 X→Y 不能由 F从 Armstrong公理导出,则 Y 不是 XF+ 的子集 。
An Introduction to Database System
5,函数依赖集等价定义 6.14 如果 G+=F+,就说函数依赖集 F覆盖 G( F是 G的覆盖,或 G是 F的覆盖),或 F与 G等价 。
引理 6.3 F+ = G+ 的充分必要条件是 F? G+,和 G? F+
证,必要性显然,只证充分性。
( 1)若 F?G+,则 XF+? XG++ 。
( 2)任取 X→Y?F+ 则有 Y? XF+? XG++ 。
所以 X→Y? (G+) += G+。即 F+? G+。
( 3)同理可证 G+? F+,所以 F+ = G+。
An Introduction to Database System
6,最小依赖集定义 6.15 如果函数依赖集 F满足下列条件,则称 F为一个极小函数依赖集 。 亦称为 最小依赖集 或 最小覆盖 。
(1) F中任一函数依赖的右部仅含有一个属性 。
(2) F中不存在这样的函数依赖 X→A,使得 F与 F-{X→A}
等价 。
(3) F中不存在这样的函数依赖 X→A,X有真子集 Z使得
F-{X→A}∪ {Z→A}与 F等价 。
An Introduction to Database System
最小依赖集
[例 2] 关系模式 S<U,F>,其中:
U={ Sno,Sdept,Mname,Cno,Grade },
F={ Sno→Sdept,Sdept→Mname,(Sno,Cno)→Grade }
设 F’={Sno→Sdept,Sno→Mname,Sdept→Mname,
(Sno,Cno)→Grade,(Sno,Sdept)→Sdept}
F是最小覆盖,而 F’不是。
因为,F ’ - {Sno→Mname}与 F ’等价
F ’ - {(Sno,Sdept)→Sdept}也与 F ’等价
An Introduction to Database System
7,极小化过程定理 6.3 每一个函数依赖集 F均等价于一个极小函数依赖集 Fm。 此 Fm称为 F的最小依赖集 。
证明,构造性证明,找出 F的一个最小依赖集 。
An Introduction to Database System
极小化过程(续)
(1)逐一检查 F中各函数依赖 FDi,X→Y,若 Y=A1A2… Ak,k > 2,
则用 { X→Aj |j=1,2,…,k} 来取代 X→Y。
(2)逐一检查 F中各函数依赖 FDi,X→A,令 G=F-{X→A},
若 A?XG+,则从 F中去掉此函数依赖。
(3)逐一取出 F中各函数依赖 FDi,X→A,设 X=B1B2… Bm,
逐一考查 Bi ( i=l,2,…,m),若 A?( X-Bi ) F+,
则以 X-Bi 取代 X。
An Introduction to Database System
极小化过程(续)
[例 3] F = {A→B,B→A,B→C,A→C,C→A}
Fm1,Fm2都是 F的最小依赖集:
Fm1= {A→B,B→C,C→A}
Fm2= {A→B,B→A,A→C,C→A}
F的最小依赖集 Fm不唯一
极小化过程 ( 定理 6.3的证明 )也是检验 F是否为极小依赖集的一个算法
An Introduction to Database System
第六章 关系数据理论
6.1 问题的提出
6.2 规范化
6.3 数据依赖的公理系统
*6.4 模式的分解
6.5 小结
An Introduction to Database System
6.4 模式的分解
把低一级的关系模式分解为若干个高一级的关系模式的方法不是唯一的
只有能够保证分解后的关系模式与原关系模式等价,分解方法才有意义
An Introduction to Database System
关系模式分解的标准三种模式分解等价的定义:
⒈ 分解具有无损连接性
⒉ 分解要保持函数依赖
⒊ 分解既要保持函数依赖,又要具有无损连接性
An Introduction to Database System
模式的分解(续)
定义 6.16 关系模式 R<U,F>的一个分解:
ρ={ R1<U1,F1>,R2<U2,F2>,…,Rn<Un,Fn>}
U= ∪ Ui,且不存在 Ui? Uj,Fi 为 F在 Ui 上的投影定义 6.17 函数依赖集合 {X→Y | X→Y? F+∧ XY?Ui} 的一个覆盖 Fi 叫作 F 在属性 Ui 上的投影
i=1
n
An Introduction to Database System
模式的分解(续)
例,S-L( Sno,Sdept,Sloc)
F={ Sno→Sdept,Sdept→Sloc,Sno→Sloc}
S-L∈ 2NF
分解方法可以有多种:
1,S-L分解为三个关系模式,SN(Sno)
SD(Sdept)
SO(Sloc)
2,SL分解为下面二个关系模式,NL(Sno,Sloc)
DL(Sdept,Sloc)
3,将 SL分解为下面二个关系模式,ND(Sno,Sdept)
NL(Sno,Sloc)
An Introduction to Database System
具有无损连接性的模式分解
关系模式 R<U,F>的一个分解 ρ={ R1<U1,F1>,R2<U2,F2>,…,
Rn<Un,Fn>}
若 R与 R1,R2,…,Rn自然连接的结果相等,则称关系模式 R
的这个分解 ρ具有无损连接性( Lossless join)
具有无损连接性的分解保证不丢失信息
无损连接性不一定能解决插入异常、删除异常、修改复杂、数据冗余等问题
An Introduction to Database System
模式的分解(续)
第 3种分解方法具有无损连接性问题,这种分解方法没有保持原关系中的函数依赖
SL中的函数依赖 Sdept→Sloc没有投影到关系模式 ND,NL上
An Introduction to Database System
保持函数依赖的模式分解设关系模式 R<U,F>被分解为若干个关系模式
R1<U1,F1>,R2<U2,F2>,…,Rn<Un,Fn>
(其中 U=U1∪ U2∪ … ∪ Un,且不存在 Ui? Uj,Fi为 F在 Ui上的投影),若 F所逻辑蕴含的函数依赖一定也由分解得到的某个关系模式中的函数依赖 Fi所逻辑蕴含,则称关系模式 R的这个分解是保持函数依赖的( Preserve dependency)
An Introduction to Database System
模式的分解(续)
4,将 SL分解为下面二个关系模式:
ND(Sno,Sdept)
DL(Sdept,Sloc)
这种分解方法就保持了函数依赖
An Introduction to Database System
模式的分解(续)
如果一个分解具有无损连接性,则它能够保证不丢失信息
如果一个分解保持了函数依赖,则它可以减轻或解决各种异常情况
分解具有无损连接性和分解保持函数依赖是两个互相独立的标准。具有无损连接性的分解不一定能够保持函数依赖;同样,保持函数依赖的分解也不一定具有无损连接性。
An Introduction to Database System
模式的分解(续)
第 1种分解方法既不具有无损连接性,也未保持函数依赖,
它不是原关系模式的一个等价分解第 2种分解方法保持了函数依赖,但不具有无损连接性第 3种分解方法具有无损连接性,但未持函数依赖第 4种分解方法既具有无损连接性,又保持了函数依赖
An Introduction to Database System
分解算法
算法 6.2 判别一个分解的无损连接性
算法 6.3( 合成法 ) 转换为 3NF的保持函数依赖的分解 。
算法 6.4 转换为 3NF既有无损连接性又保持函数依赖的分解
算法 6.5 ( 分解法 ) 转换为 BCNF的无损连接分解
算法 6.6 达到 4NF的具有无损连接性的分解
An Introduction to Database System
第六章 关系数据理论
6.1 问题的提出
6.2 规范化
6.3 数据依赖的公理系统
*6.4 模式的分解
6.5 小结
An Introduction to Database System
6.5 小结关系模式的规范化,其基本思想:
An Introduction to Database System
小结 (续 )
若要求分解具有无损连接性,那么模式分解一定能够达到 4NF
若要求分解保持函数依赖,那么模式分解一定能够达到 3NF,但不一定能够达到 BCNF
若要求分解既具有无损连接性,又保持函数依赖,则模式分解一定能够达到 3NF,但不一定能够达到 BCNF
An Introduction to Database System
小结 (续 )
规范化理论为数据库设计提供了理论的指南和工具
也仅仅是指南和工具
并不是规范化程度越高,模式就越好
必须结合应用环境和现实世界的具体情况合理地选择数据库模式
An Introduction to Database System
下课了。。。
休息一会儿。。。