注意时间
第五章 关系数据理论
5.1 问题的提出
一,关系模式
一个 关系模式应当是一个五元组,
R(U,D,dom,F)
其中,
(1) 关系名 R;
(2) 一组属性 U;
(3) 属性组 U中属性所来自的域 D;
(4) 属性到域的映射 dom;
(5) 属性组 U上的一组数据依赖 F
由于 (3),(4)队模式设计关系不大,因此本章把关系模式看作是
一个三元组:
R <U,F>
二,数据依赖的概念
比如描述一个学生的关系,可以有学号 (SNO),姓名 (SNAME),.系
名 (SDEPT)等几个属性,
称 SNO函数决定 SNAME和 SDEPT,或者说 SNAME,SDEPT函
数依赖于 SNO,记为,SNO→SNAME, SNO→SDEPT 。
要建立一个数据库来描述学生的一些情况,面临的对象有:
学生,系,系负责人,课程和成绩。于是得到一组属性。
U={SNO,SDEPT,MN,CNAME,G}
由现实世界的已知事实,得到属性组 U上的一组函数依赖,
F={SNO →SDEPT,STEPT → NM,(SNO,CNAME) → G}
描述学校的数据库模式, S<U,F>,它是一个单一的关系模式,
这个模式有三个, 毛病,,
把上述单一的关系模式进行改造,分成三个关系模式,
S(SNO,SDEPT,SNO → SDEPT);
SG(SNO,CNAME,G,(SNO,CNAME) → G);
DEPT(SDEPT,MN,SDEPT → MN);
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.
定义 5.2 在 R(U)中,如果 X → Y,且对于 X的任何一个真子集 X,
都有 X’ →Y,则称 Y对 X完全函数依赖,记作:
X → Y.F
\
若 X → Y,但 Y不完全函数依赖 X,则称 Y对 X部分函数依赖,记作:
X → Y.P
定义 5.3 在 R(U)中,如果 X→Y,(Y X),Y→ X,Y→Z,则称 Z对 X
传递函数依赖,
_\
5.2.2 码
定义 5.4 设 K为 R(U,F)中的属性或属性组合,若 K→U,则 K为 R
的候选码 (Candidate key)。
定义 5.5 关系模式 R中的属性或属性组 X并非 R的码,但 X是另
一个关系模式的码,则称 X是 R的外部码 (Foreign key)。也称 外码 。
5.2.3 范式 1NF
2NF
3NF
BCNF
4NF
5NF
图 5.2 各种范式之间的关系
5.2.4 2NF
定义 5.6 若 R∈ 1NF,且每一个非主属性完全函数函数依赖于码,
则 R∈ 2NF。
下面举一个不是 2NF的例子:
关系模式 S-L-C(SNO,SDEPT,SLOC,CNO,G)
这里码为 (SNO,CNO),函数依赖有,
(SNO,CNO) →G
SNO →SDEPT,(SNO,CNO) →SDEPT
SNO →SLOC,(SNO,CNO) →SLOC
F
P
P
一个关系模式 R不属于 2NF,就会产生以下三个问题,
解决的办法是用投影分解把关系模式 S-L-C分解为两个关系模式,
SC(SNO,CNO,G)
S-L(SNO,SDEPT,CLOC)
5.2.5 3NF
定义 5.7 关系模式 R <U,F>中若不存在这样的码 X,属性组
Y及非主属性 Z( Z Y),使得 X →Y,(Y →X) Y →Z 成立,则称
R <U,F> ∈ 3NF
5.2.6 BCNF
BCNF 比 3NF 更进一步,其消除 主属性 对 码 的部分与传递依赖。
1,定义 7.8:
关系模式 R<U,F>∈ 1NF,若 X→Y 且 Y? X时 X必含有码,
则 R<U,F> ∈ BCNF 。
即,R<U,F> 中,每一个决定因素都包含码,则 R<U,F>
∈ BCNF。
2,结论:
⑴,所有非主属性对每一个码都是完全函数依赖。
显然,这是 3NF的要求所达到的,非主属性不部分、传递函数
依赖于码。
⑵,所有主属性对每一个不包含它的码,是完全函数依赖。
⑶,没有任何属性完全函数依赖于非码的任何一组属性。
3,举例:
例 1:关系模式 SJP( S,J,P)中,S 是学生,J 表示课程,
P表示名次。
由语义得到下面的函数依赖:
( S,J) → P;( J,P) → S
这个关系模式中显然没有属性对码传递函数依赖或部分依赖。
所以 SJP∈ 3NF。
又因除( S,J)与( J,P)以外没有其他决定因素。所以
SJP∈ BCNF。
例 2 关系模式 STJ(S,T,J)中,S表示学生,T表示教师,J表示课程,
由语义得到下面的函数依赖:
( S,J) → T;( S,T) → J; T → J
STJ∈ 3NF,但 STJ不是 BCNF关系,因为 T是决定因素,而 T不是码,
5.2.7 多值依赖
一, 引入
例 1 P178
二, 定义 7.9
设 R( U)是属性集 U上的一个关系模式。 X,Y,Z是 U的子
集,并且 Z=U-X-Y,关系模式 R(U)中多值依赖 X→ →Y 成立,当且
仅当对 R( U)的任一关系 r,给定的一对( x,z)值,有一组 Y的值,
这组值仅仅决定于 x值而与 z值无关。
三, 举例
例 2,关系模式 WSC(W,S,C)中,W表示仓库,S表示保管员,C表示商
品,
四, 多值依赖的性质:
(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→→ZY 。
(5),若 X→→Y, X→→Z,则 X→→Z∩Y 。
(6),若 X→→Y, X→→Z,则 X→→Y -Z,X→→Z -Y 。
五, 多值依赖与函数依赖的基本区别
5.2.8 4NF
4NF 是消除了非平凡且非函数依赖的多值依赖。
1,定义 7.10:
关系模式 R<U,F>∈ 1NF,如果对于 R的每个非平凡的多值依
赖 X→→Y ( Y?X), X都含有码,则称 R<U,F> ∈ 4NF。
注:一个关系模式若属于 4NF,则必然属于 BCNF。
5.2.9 规范化小结
规范化的目的是:消除关系模式中存在的插入异常、删除异常、修改复杂
和数据冗余等毛病。
基本思想是:逐步消除数据依赖中不合适的部分,使概念单一化。
1NF→2NF,消除非主属性对码的部分函数依赖。
2NF→3NF,消除非主属性对码的传递函数依赖。
3NF→BCNF,消除主属性对码的部分和传递函数依赖。
BCNF→4NF,消除非平凡且非函数依赖的多值依赖。
方法:通过对关系模式的投影分解来实现的。
5.3 数据依赖的公理系统
定义 5.11:
对于满足一组函数依赖 F 的关系模式 R <U,F>,其任何一个关系 r,若函
数依赖 X→Y 都成立,则称 F 逻辑蕴含 X→Y 。
1.合并规则:由 X→Y, X→Z,有 X→YZ
2.伪传递规则:由 X→Y, WY→Z,有 XW→Z
3.分解规则:由 X→Y, Z?Y,有 X→Z
定义 5.12:
在关系模式 R<U,F>中为 F所逻辑蕴含的函数依赖的全体叫做 F的闭包,
记为 F+
定义 5.13:
设 F为属性集 U上的一组函数依赖,X?U,XF+=﹛ A︱ X →A 能由 F根据
Armstrong公理导出 ﹜, XF+称为属性集 X关于函数依赖集 F的闭包。
因此,要判定 X →Y 是否能由 F根据 Armstrong公理导出,就要求出 XF+,
判定 Y是否为 XF+的子集。 这是由算法 5.1来完成的。
算法 5.1:
求属性集 X( X?U)关于 U上的函数依赖集 F的闭包 XF+
输入,X,F
输出,XF+
步骤:
①,令 X(0)=X,i=0
②,求 B
③, X(i+1)=B∪ X(i)
④,判断 X(i+1)=X(i) 吗?
⑤,相等,则 XF+ =X(i),算法终止
⑥,不等,则 i = i+1,返回②
例 1 已知关系 R <U,F>,U=﹛ A,B,C,D,E﹜,
F=﹛ AB→C, B→D, C→E, EC→B, AC→B ﹜ 。
求 (AB)F+
由算法 7.1得,设 X(0) ={AB},
计算 X(1),扫描 F中各函数依赖,找左部为 A,B,AB的函
数依赖,AB→C, B→D,
于是 X(1)=AB∪ CD={ABCD},
因为 X(0) ≠ X(1)
计算 X(2),扫描 F中各函数依赖,找左部为 X(1)的子集的函数
依赖,AC→B, C→E,
于是 X(2)= X(1) ∪ BE={ABCDE},
因为 X(3) = X(2)
所以 (AB)F+= X(2) ={ABCDE}。
补充:
已知关系 R <U,F>,U=﹛ A,B,C,D,E﹜,
F=﹛ AB→C, B→D, C→E, EC→B, AC→B ﹜ 。
求 R 的码?
解法:
1.求出所有可能存在的闭包 X(i) =XF+,
2.若 X(i) =U,则选出其中的 X,
3.在 X中选出最简的主属性组 Xi,
4,Xi 就是所求的码。
具体解为:
(AB)F+=﹛ ABCDE﹜
(B)F+=﹛ BD﹜
(C)F+=﹛ CBDE﹜
(EC)F+=﹛ CBDE﹜
(AC)F+=﹛ ABCDE﹜
(ABC)F+=﹛ ABCDE﹜
(ABCE)F+=﹛ ABCDE﹜
(BC)F+=﹛ BCDE﹜
(BEC)F+=﹛ BCDE﹜
(AEC)F+=﹛ ABCDE﹜
包含全部属性的有 (AB)F+, (AC)F+, (ABC)F+, (ABCE)F+,
(AEC)F+
挑选出最简的是,(AB)F+, (AC)F+
所以 R 的码为,AB 和 AC
定义 5.15:
如果函数依赖集 F满足下列条件,则称 F为一个极小函数依赖集 Fm,亦称为
最小依赖集,最小覆盖。
⑴,F中任一函数依赖的右部仅含有一个属性。
⑵,F中不存在这样的函数依赖 X→A,使得 F与 F-﹛ X→A ﹜ 等价。
⑶, F中不存在这样的函数依赖 X→A, X有真子集 Z使得 F -﹛ X→A ﹜∪
﹛ Z→A ﹜ 与 F等价。
定义 5.14:
如果 G+ =F+,就说函数依赖集 F覆盖 G( F是 G的覆盖,或 G是 F的覆盖),或
F与 G等价。
例 2:关系模式 S <U,F>,U=﹛ SNO,SDEPT,MN,CNAME,G﹜,
F=﹛ SNO→SDEPT, SDEPT→MN,( SNO, CNAME) → G﹜ 。
设 F’=﹛ SNO→SDEPT, SNO→MN, SDEPT→MN,( SNO,CNAME) → G,
( SNO,SDEPT) → SDEPT﹜ 。
根据定义 5.15可以验证 F为最小覆盖,而 F′不是。
定理 5.3:
每一个函数依赖集 F均等价于一个极小函数依赖集 Fm (此 Fm称为 F的最小
依赖集)。
求极小函数依赖集 Fm的步骤:
例 3
已知,F=﹛ A→B, B→A, B→C, A→C, C→A ﹜
求 F 的极小函数依赖集 Fm
解:
1.化右部为单一属性,F=﹛ A→B, B→A, B→C, A→C, C→A ﹜
2,① 在 F中去掉 A→B, (A)F+={AC},∵ B∈ (A)F+, ∴ 不去掉。
②在 F中去掉 B→A, (B)F+={ABC},∵ A∈ (B)F+, ∴ 应去掉。
③在 F中去掉 B→C, (B)F+={B},∵ C∈ (B)F+, ∴ 不去掉。
④在 F中去掉 A→C, (A)F+={ABC},∵ C∈ (A)F+, ∴ 应去掉。
⑤ 在 F中去掉 C→A, (C)F+={C},∵ A∈ (C)F+, ∴ 不去掉。
3.因主属性是单属性,故不用再取其子集去考察。
故极小函数依赖集 Fm=﹛ A→B, B→C, C→A ﹜
例 4
已知关系 R <U,F>,U=﹛ A,B,C,D,E,F,G,H,I,J﹜,
F=﹛ A→B, A→C, A→DE, D→E, DE→B, AF→GHI, I→J ﹜ 。
求 F 的极小函数依赖集 Fm
解:
1.化右部为单一属性:
① A→DE ?A→D, A→E
② AF→GHI ?AF→G, AF→H, AF→I
则 F=﹛ A→B, A→C, A→D, A→E, D→E, DE→B, AF→G, AF→H,
AF→I, I→J ﹜ 。
2,① A→B,记 G=F-﹛ A→B ﹜,
∴ (A)G+= ﹛ ACDEB﹜,
∴ B∈ (A)G+,
∴ 去掉 A→B,
F=F-﹛ A→B ﹜ =﹛ A→C, A→D, A→E, D→E, DE→B,
AF→G, AF→H, AF→I, I→J ﹜ 。
② A→C,记 G=F-﹛ A→C ﹜,
∴ (A)G+= ﹛ ADEB﹜,
∴ C∈ (A)G+,
∴ 不去掉 A→C,
F=﹛ A→C, A→D, A→E, D→E, DE→B, AF→G,
AF→H, AF→I, I→J ﹜ 。
第五章结束