第四章 关系数据库范式
DESCRIPTION
第四章 关系数据库范式. 本章的主要内容: 范式的概念及1 NF — 5NF 模式分解的特性及其判定算法 关系模式的规范化算法. 4.1 数据库及其范式. 例子: r ( 职工姓名 工资级别 基本工资 ) 李小明 高工2 3200 张 亮 中工1 1800 刘 林 中工1 1800 - PowerPoint PPT PresentationTRANSCRIPT
1
第四章
关系数据库范式
2
本章的主要内容:
范式的概念及 1NF—5NF
模式分解的特性及其判定算法 关系模式的规范化算法
3
4.1 数据库及其范式例子: r ( 职工姓名 工资级别 基本工资 )
李小明 高工 2 3200 张 亮 中工 1 1800 刘 林 中工 1 1800 王晓宁 高工 2 3200 苏 丹 中工 4 2000 .
冗余; 插入异常;删除异常。
4
定义 (1NF, Normal Form) 如果一个关系模式 R 中的每个属性 A 的域值都是原子的,即属性值是不可再分的,则关系模式 R 属于第一范式,简记为 R1NF 。若数据库模式 R 中的每个关系模式都是 1NF ,数据库模式R1NF。
addr ( 姓 名 地 址 )
李小明 北京市白石桥路 7 号 张 亮 天津市和平街 18 号 王国全 太原市解放路 35 号 苏 丹 北京市复外大街 12 号
addr ( 姓 名,城市, 地 址 )
teach ( 教 师 课 程 )
孙鲁涛 DS, DB,OS
周 晴 C, C++
4.1.1 第一范式
5
elective(SNAME COURSE DEPT ) 刘 芳 DB 计算机 刘 芳 OS 计算机 林荔娜 C++ 自 控 林荔娜 DB 计算机 周 晴 C++ 自 控
SNAME、 COURSEDEPTCOURSE DEPT
elective (SNAME COURSE 刘 芳 DB 刘 芳 OS 林荔娜 C++ 林荔娜 DB 周 晴 C++ .
elective (COURSE DEPT ) DB 计算机 OS 计算机 C++ 自 控
6
4.1.2 第二范式
定义 已知关系模式 R, R 中的属性 A 以及 R
上的函数依赖集 F 。如果 A 包含在 R 的某个候选键中,则称 A 为主属性,否则称 A 为非主属性。
定义 (2NF) 设关系模式 R(U, F) ,如果R1NF 且所有的非主属性完全依赖于 R 的每个键,则 R2NF 。若数据库模式 R 中的每个关系模式R 都属于 2NF ,则数据库模式 R2NF。
7
4.1.3 第三范式
course (COURSE DEPT BUILDING ) DB 计算机 中心楼 9 层 OS 计算机 中心楼 9 层 C++ 自 控 中心楼 12 层 。
定义 (3NF) 设关系模式 R(U, F) ,若 R1NF 且在 R 中没有非主属性传递依赖于 R 的键,则 R3NF 。如果数据库模式 R 中每一关系模式都是第三范式,则数据库模式R3NF。
course (COURSE DEPT ) dpt(DEPT BUILDING)
COURSE DEPT , DEPT BUILDING
8
定理 1 若关系模式 R(U,F)3NF ,则R2NF。证明: 假设 R 中非主属性 A 部分依赖于关键字 K 。则存在 KK 使得 F|=K→A 。 因 KK ,有 K→K ,但 K→K 。于是有 K→K, K → K, K→A ,并且 AK ,因而 A 传递依赖于 K ,即 R3NF ,与已知矛盾。
9
4.1.4 Boyce-Codd 范式例 R ( Building Room Department) 中心教学楼 801 计算机系 中心教学楼 802 计算机系 中心教学楼 803 计算机系 中心教学楼 823 数 学 系 中心教学楼 824 数 学 系 .
Room、
R1(Department , Building )
R2(Department , Room )
Building、 Room → Department Department → Building
10
定义 2 (BCNF)
设关系模式 R(U,F) , 若对于 YR 且属性 ARY
有 Y→A, Y 必为 R 的关键字,则关系模式 RBCNF。 ** 若关系模式 R(U,F)BCNF ,则R3NF。
定义 1(BCNF) 设关系模式 R(U,F) ,若 R1NF且 R 中没有任何属性传递依赖于 R 的任一键,则 RBoyce-
Codd 范式 (BCNF) 。如果数据库模式 R 中的每个关系模式 RBCNF ,则数据库模式 RBCNF。
11
例 1 :关系模式 SJP (学生,课程,名次)FD :学生、课程→名次 课程、名次→学生
例 2: CSZ (城市,街道,邮编)FD :城市、街道→ 邮编 邮编→城市 街道、邮编→城市
Z-C( 邮编,城市 ); S-Z( 街道,邮编 )
12
4.2 关系模式的规范化4.2.1 关系模式的分解 定义 设关系模式 R(U) ,关系模式的集合ρ={R1(U1), R2(U2),…,RK(UK)}, 若U1∪U2∪…
∪UK=U, 则称 ρ 是关系模式 R(U) 的一个分解。 无损连接性定义 设模式 R(U, F),ρ={R1, R2, …, RK }是 R 的一个分解,若对 R 的任一满足 F 的关系 r 下式成立: r = R1 (r) R2 (r) … Rk (r)
则称分解 ρ 是满足 F 的无损连接分解。记: mρ(r) =R1 (r) R2 (r) … Rk (r)
无损连接分解: r = mρ(r)
13
r1 ( A B) 2 4 3 4 4 9
r2 ( B C) 4 3 4 6 9 5
r ( A B C) 2 4 3 3 4 6 4 9 5
引理 设关系 r(R), ρ={R1, R2, …, RK }是 R 的一个分解。则有: (1). r mρ(r)
(2). Ri (mρ(r)) =Ri (r)
(3). mρ(mρ(r)) = mρ(r)
证明 : (2). 因 r mρ(r), 则 Ri(r) Ri (mρ(r))。
又 tiRi(mρ(r)) , 则有 tmρ(r), 使 t[Ri]=ti,
而由 mρ(r) 的定义知, ti Ri (r) ,因此有 Ri (mρ(r)) Ri (r)
则 有 Ri (mρ(r)) =Ri (r) 。
14
算法 4.2.1 判断分解 ρ 是否具有无损连接性
输入: 关系模式 R(A1, A2 …, , An) 及其分解
ρ={R1, R2 …, , RK } ,函数依赖集 F。
输出:分解 ρ 是否具有无损连接性。
15
LOSSNESS(R, F, ρ)(1) .构造一个 k行 n 列的表 T: a j (Aj Ri )
Ti j =
bi j (Aj Ri )
(2). for each FD X→Y in F do for each tl 、 tm T
if ti[X]=tm[X] and ti [Y]tm [Y]
then for each Aj in Y
if ti [Aj]=aj or tm[Aj]=aj then ti[Aj ]=tm [Aj ]=aj
else ti[Aj]=tm [Aj]=bij (i <m) (3). for each tT do if t=a1, a2,…,an then return (true)
return (false)
16
例:关系模式 R=ABCDE, F={A→C, B→C, C→D, DE→C, CE→A}, 分解 ={AD, AB, BE, CDE, AE }.
验证: 是否是无损分解。 A B C D E a1 b12 b13 a4 b15
a1 a2 b23 b24 b25
b31 a2 b33 b34 a5
b41 b42 a3 a4 a5
a1 b52 b53 b54 a5
17
例: 关系模式 R=ABCDE, F={A→C, B→C, C→D, DE→C, CE→A}。 ={AD, AB, BE, CDE, AE }.
A B C D E a1 b12 b13 a4 b15
a1 a2 b23 →b13 b24 →a4 b25
b31→a1 a2 b33 →b13→ a3 b34 →a4 a5
b41→a1 b42 a3 a4 a5
a1 b52 b53 →b13 →a3 b54 →a4 a5 17
18
定理 算法能正确判断分解 是否是无损分解。证明: 若表中没有全 a 行。可将结果表看作 R 的一个关系 r, r 满足 F 。由表 T 的构造知, r 在分解 中的每个Ri 上全为 a ,投影连接后应有全 a 的行。 但 r 中没有,这说明 mρ(r) r ,分解 是连接有损的。
相反,最后表中有全 a 行。全 a 行是为满足 FD将 T中元素替代得到的,若对 T 中元素赋值, 替代结果相当于作连接。全 a 行对应的值是 mρ(r) 中的一个元组,而该元组是 r 中的一个元组, 因而有 mρ(r) r 。而 r mρ(r) ,则有r= mρ(r) ,分解 是连接无损的。 证毕。p60
16
19
定理 3 设关系模式 R 的一个分解 ={R1, R2}, F 是 R 上的
函数依赖集。若 F|=(R1 ∩R2)→(R1- R2) 或 F|=(R1 ∩R2)
→( R2 - R1) ,则具有无损连接性。 证明:用算法 4.2.1 构造一个二行三列的矩阵如下: R1 ∩R2 R1 - R2 R2 - R1
R1 aaa…a aaa…a bbb…b
R2 aaa…a bbb…b aaa…a
例 : 关 系 模 式 R=ABC , R 上 的 FDS 集 F
={ A→C, B→C}。
R 上的分解 1 ={AB, AC} , 2 ={AC, BC}
20
依赖保持性定义 设 R 的一个分解 ={R1, R2 …, , Rp }, R 上的 FDs集
F ,若 Ri (F)={ X→Y X→YF+且 XYRi}, (1≤i≤p) ,则称
Ri(F)为 F在 Ri 上的投影。
例 : 关 系 模 式 R=ABC , R 上 的 FDS 集 F
={ A→B, B→C}。
R 上的分解 1 ={R1, R2}, R1= AB , R2= AC
F在 R1, R2 上的投影
21
依赖保持性
定义 设 ={R1, R2 …, , Rp }是 R 的一个分解, F
是 R 上的 FDs 集。 F在 Ri 上投影的集合 G=∪Ri (F) 。
若 G≡F ,则称分解 保持函数依赖集 F 。
22
算法 4.2.2 检验分解 ρ 是否具有依赖保持性PERSERVE1(F, ρ)begin G: =φ; for each X→Y in F do for each Ri in ρ do if X Ri then do begin Z: = LINCLOSURE(X, F); if Z∩Ri - Xφ then G: = G {X→(Z∩R∪ i - X)} /*F在 Ri 上投影的集合 end; for each X→Y in F do if MEMBER(G, X→Y ) then T: =true else return(false); return(T) ; end.
23
例 设 ={R1 , R2 , R3} , 其 中R1=ABD, R2=BCE, R3=DE, F={A→BD,D→A, C→BE, E→D, C→A}。 判断:是否保持函数依赖集 F。 解:( 1 )计算 F 在 上的投影 G。
考 察 FD A→BD , AR1 , A+=ABD ,G={ A→BD }; 考 察 D→A , DR1 , D+=ABD ,G={ A→BD,D→AB },又DR3 ,但 ABD∩R3 -D=φ, G 不变; 对 C→BE ,CR2, C+=ABCED,G={A→BD,D→AB, C→BE}
分别考察 E→D 和 C→A, 结果: G={ A→BD,D→AB , C→BE, E→D }。
( 2 )判断 F 和 G 是否等价。 可以看出, F 中的 FD 除 C→A 外都已在 G 中了,而MEMBER(G, C→A) 为真,因此,保持函数依赖集 F。
24
4.2.2 通过分解实现规范化算法 4.2.4 生成 3NF 的分解算法DECOMPOSE(R, K, F)
算法步骤: (1). 若 R3NF ,算法终止, ρ={R}。
(2).若 ρ 中有 Ri3NF ,即 YRi, ZKY且
Y→Z, Y→K,
则 Z 传递依赖于 Ri 中的键 K ,分解 Ri 为:
Ri1 =R- Z和 Ri2= YZ ,用 Ri1和 Ri2 代替 ρ 中的 Ri 。
(3). 若 ρ 中所有 Ri 3NF ,输出 ρ ,否则转 (2) 继续进行分
解,直到使所有关系模式都成为 3NF。
25
例 : 设关系模式 R(A,B,C,D,E,G,H,I,J,K,M) 为航空公司数据库。 其中, 属性 ABCDEGHIJKM 分别为: 航班号、出发地、目的地、出发时间、到达时间、飞行时间、机型、头等舱座位数、普通舱座位数、座位总数、用餐时间。
F={A→BCDEGH, BCD→A, BCE→A, DG→M,
H→IJK ,
EG→M, IJ→K, IK→J, JK→I}。
试分解 R 为 3NF。
26
F={A→BCDEGH, BCD→A, BCE→A, DG→M, H→IJK , EG→M, IJ→K, IK→J, JK→I}。
解: R 的键为 K={A, BCD, BCE}, R3NF。 因有 DG→M ,而 DG 不是键, 分解 R 为: R1 =ABCDEGHIJK , K1 ={A, BCD, BCE}; R2 =DGM , K2 ={DG}。
R23NF, R13NF, R1 中有 H→IJK , 分解 R1 为: R11 =ABCDEGH , K11 ={A, BCD, BCE}; R12=HIJK , K12 ={H};
R123NF , 因 IJ→K ,分解 R12 为: R121 =HIJ , K121 ={H}; R122 =IJK , K122 ={IJ, IK, JK}
结果: ={R11, R121, R122, R2}。
27
分解算法得到的关系模式是无损的。
分解算法存在的问题:
( 1 )一个关系模式的主属性和非主属性是很难确定的。
( 2 )分解算法得到的关系模式不是惟一的。
( 3 )分解得到的关系模式不保持函数依赖。
例:职工名,电话,地址
2829
4.2.2 通过合成实现规范化算法 4.2.5 SYNTHESIZE(U, F)
1. F: =F { U→Z }∪ 。
2. 计算 F 化简的最小函数依赖集 G。
3. 将 G按等价类划分得到 EG 。
4 .对 EG 中每个 EG(X)={Xj→Yj, 1jp} ,构造键为
{X1,X2,…,Xp} 的关系模式 Ri=X1X2…XpY,
其中, Y由 EG(X)中 FD 的右部属性组成。
5. 考察每个 Ri ,删除由 EG(X) 中的 FD 合成后出现的外部属性
。 6 .将包含在某个 Ri 中的附加属性 Z 删除,输出 R.
29
例: R=ABC, F={A→C, B→C}
由合成算法得 3NF 为 {AC, BC}, R 不是无损的。 在 F 中加入 FD ABC→Z ,最后得到的数据库模式 R={AB, AC, BC}, R 具有无损连接性。
30
例 : F={B1B2→A,D1D2→B1B2, B1→C1, B2→C2,
D1→A,D2→A, AB1C2→D2, AB2C1→D1},
F 是化简的和最小的。按等价类划分后为: EF(B1B2)={ B1B2→A, D1D2→B1B2} , EF(B1)={
B1→C1},
EF(B2)={B2→C2} , EF
(D1)={D1→A}, EF(D2)={D2→A},
EF(AB1C2)={AB1C2→D2} , EF (AB2C1)
={AB2C1→D1}。
因此: R1 =AB1B2D1D2 ; R2=B1C1 ; R3=B2C2
;
R4=D1A ; R5=D2A ; R6=AB1C2D2 ;
R7=AB2C1D1 。
在 R1 中的属性 A 是外部的。
31
例 : 设 U=ABCDEGHIJKM , F={A→BCDEGH, BCD→A, BCE→A, A→M, H→IJK, DG→M, EG→M, IJ→K, IK→J, JK→I}求 : 属性集 U 的数据库模式。 解: (1). F: =F {ABCDEGHIJKM→Z}∪ (2) 去掉冗余 A→M 及 ABCDEGHIJKM→Z 和 H→IJK 中的外部属性。 F 化简为最小 FDs.
(3) EG (A)={ A→BCDEGH Z , BCD→A, BCE→A };
EG(H)={H→IJ} ; EG(DG)={ DG→M};
EG (EG)={EG→M} ; EG
(IJ)={ IJ→K, IK→J, JK→I } (4) R1 =ABCDEGHZ , K1={A, BCD, BCE} ; R2 =HIJ , K2 ={H}; R3 =DGM , K3 ={DG}; R4 =EGM , K4 ={EG}; R5 =IJK , K5 ={IJ, IK, JK}。
32
由算法生成的数据库模式 R 满足以下特性: 1. R保持 F且 F 完全由 R 表达。即 :
F≡{Ki→Ri| Ri R, Ki 是 Ri 的关键字 }.
2. R 中的每个关系模式 Ri 对于 F 都是 3NF。
3. R 具有无损连接性,对任一满足 F 的关系 r(R) ,有 r = R1 (r) R2 (r) … Rk (r)
4. R 是满足以上特性且含有最少关系模式的数据库 模式。
33
定理 4 SYNTHSIZE 算法是正确的,生成的数据库模式是 3NF 且满足无损连接性、依赖保持性和最小性。
证明: (1) 设 RiR ,证明 Ri3NF。
设 Ri 具有关键字 K={X1 …, , XK} 和非主属性集
Y 。如果 Ri 3NF, 则有 AY, AW(WRi) 且
Xj→W, W→A 而
W→Xj (1jK) ,因而有 G|=Xj→A ,则
Xj→AEG(X) ,从而 Xj→AG ,这与 G 是化简最小覆盖相矛盾。另外,经步骤 (5)的处理,消除了传递依赖。 Ri 3NF.
/
34
(3). R 满足依赖保持性,这一点是显然的。 因 G与 F等价,而生成关系模式时没有去掉任何 FD ,即每个Ri 上的 FD 是由 Ri 上的关键字决定的,即
F≡{Ki→Ri | Ri R, Ki是 Ri 的关键字 } 。
(4). R 含有模式数最少。 因最小集 |EG | . 证毕。
(2). R 满足无损连接性。 因 F 中加入 U→Z而 ZU ,所以,在计算过程中 U→Z 不会作为冗余被删除。若 U→Z经化简后为 X→Z ,则说明 U- X 为外部属性,即 X+=U, X是 U 的键。 因 X→ZG , 因此, X 属于R 中某个 Ri ,根据 LOSSLESS 算法,在 X 所在 Ri 对应行一定是
全为 a 的行,即 R 满足无损连接性。
35
4.2.4 规范化关系模式为 BCNF 例 : 设 R=ABCDE ,F={A→B, B→A,D→C, AC→DE},由合成算法得到的数据库模式为: R1 =AB , K1 ={A, B} ;R2=DC, K2={D} ; R3={ACDE}, K3={AC, AD}。 R1, R2, R3 都是 3NF ,但 R3 中有 D→C , 因而 C传递依赖于 AD ,所以 R3 不是 BCNF。 若分解 R3 为 R31= ADE R32= CD
则 R={R1 、 R2 、 R31} 为 BCNF 。
算法 4.2.7 BCNF-DECOMPOSE(R, F) (1).若 RBCNF,算法终止, ρ={R}。 (2).若 ρ中有 RiBCNF,即有 X→Y且 XY Ri 而X→Ri , 则分解 R 为 Ri1 =R- Y 和 Ri2= XY; 用 Ri1 和 Ri2 代替ρ中的 Ri 。 (3). 若 ρ中所有 RiBCNF,输出 ρ,否则转 (2)继续进行分解,直到使所有关系模式都成为 BCNF。
36
例:设 R=ABCDE, F={A→BC, BC→A, BCD→E,
E→C} , 由合成算法生成的模式为 R={R1, R2, R3}:
R1 = ABC, K1 ={A, BC} ;
R2 =BCDE , K2 ={BCD} ;
R3 =EC, K3 ={E}。
R2 BCNF 。将 BC用 A 代替结果为
ADE, R2BCNF ,且替换后的 R也能完全表征 F。*** 3NF 可以满足无损连接性和依赖保持性, BCNF仅能满足无损连接性。
37
COURSE →→ TEACHER
COURSE →→ CLASS
4.3 第四范式和投影 -连接范式
例: COURSE TEACHER
CLASS 知识工程 王一平 硕士 知识工程 王一平 博士 知识工程 刘晓彤 硕士 知识工程 刘晓彤 博士
38
4.3.1 第四范式
定义 (4NF) 设关系模式 R 及 R 上的 FD和MVD集
F 。若对于每一个可施加于 R 且由 F 蕴涵的 MVD
X→→Y ,它们是平凡的,或者X 是 R 的一个超键,则 R 是关于 F 的第四范式,即 R4NF。
例: R= ABCDE , F= {A→BC,C→→DE}
R4NF, R1= ABC 和 R2= CDE 是 4NF 。
39
定理 5 如果模式 R4NF ,则 RBCNF。 证明:假定 R4NF但 RBCNF 。则必有 R 的子集 K、 Y和
A ,且 AKY ,和 K→Y, Y → K, Y→A。 Y→A隐含着
Y→→A 。 由于 Y → K, Y 不是 R 的超键,而 A 不包含在 Y 中
且 YAR 。因此, Y→→A 不是平凡的 MVD 。因此, R4NF ,
与假设矛盾。 证毕。
40
算法 4.3.1 生成 4NF 的分解算法 (1). 若 R4NF ,算法终止, ρ={R}。
(2). 若 ρ 中有 Ri 4NF ,即有 X→→Y, XY Ri 且 X →
Ri ,分解 R 为:
Ri1 =R-( Y-X )和 Ri2= XY ,直到所有模式为 4NF。
41
例 : 设 R=ABCDEI, F={A→→BCD, B→AC, C→D} 。
要求: 将 R 规范化到 4NF。
解: A→→BCD 是非平凡的且 A 不是 R 的键,分解 R 成关系模式:
R1= ABCD , R1 (F)={ B→AC, C→D };
R2= AEI , R2 (F)={φ}
分解 R1 为 4NF : R11= ABC, R12= CD;
函数依赖和多值依赖集 F 在 Rj 上的投影 R j (F):
(1) 若 F|=X→Y, X Rj ,则 X→Y∩Rj ∈Rj (F)
(2) 若 F|= X→→Y, X Rj, X→→Y∩Rj∈R j (F)
42
r ( A B C ) r1 ( A B ) r2 ( A C ) r3 ( B C ) a1 b1 c1 a1 b1 a1 c1 b1 c1 a1 b2 c2 a1 b2 a1 c2 b2 c2
4.3.2 投影 - 连接范式( PJNF)
例: SP (供应商,零件,项目)
a3 b3 c3 a3 b3 a3 c3 b3 c3 a4 b3 c4 a4 b3 a4 c4 b3 c4 a5 b5 c5 a5 b5 a5 c5 b5 c5 a6 b6 c5 a6 b6 a6 c5 b6 c5
JD*[AB, AC, BC]
. . . .
.
插入→ a3 b1 c2 a3 b1 a3 c2 b1 c2 . a1 b1 c2 . 删除
43
r ( A B C ) r1 ( A B ) r2 ( A C ) r3 ( B C ) a1 b1 c1 a1 b1 a1 c1 b1 c1 a1 b2 c2 a1 b2 a1 c2 b2 c2 a3 b3 c3 a3 b3 a3 c3 b3 c3 a4 b3 c4 a4 b3 a4 c4 b3 c4 a5 b5 c5 a5 b5 a5 c5 b5 c5 a6 b6 c5 a6 b6 a6 c5 b6 c5
JD*[AB, AC, BC]
4.3.2 投影 - 连接范式( PJNF)
44
定义 19 设关系模式 R, F是 R 上的函数依赖和连接依赖集。若对于每个由 F蕴涵的且施加于 R
的连接依赖 JD*[R1,R2,…,Rp], JD 是平凡的或者每个 Ri是 R 的一个超键,则 RPJNF。
平凡的 JD: R 上的连接依赖被任意 r(R) 所满足。
JD*[R1, R2, …, Rp] 中有某一 Ri=R。
45
例 : 设 R= ABCDEI, F=
{*[ABCD,CDE,BDI] ,
*[AB, BCD,
AD], A→BCDE, BC→AI}。
试将 R 规范到 PJNF。 结果: R = (ABCD, CDE, BDI)
ABCD: {*[AB, BCD, AD], A→BCD, BC→A}