第三章 数 据 依 赖

62
1 第第第 第 第 第 第

description

第三章 数 据 依 赖. 本章的主要内容: 函数依赖的概念及函数依赖公理 函数依赖集的等价和覆盖 多值依赖及多值依赖公理 连接依赖. 数据依赖 是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系 是现实世界属性间相互联系的抽象 是数据内在的性质 是语义的体现. 数据依赖 : 函数依赖、多值依赖、连接依赖. 3.1 函数依赖( Functional dependency FD) 定义1( FD) - PowerPoint PPT Presentation

Transcript of 第三章 数 据 依 赖

Page 1: 第三章  数 据 依 赖

1

第三章

数 据 依 赖

Page 2: 第三章  数 据 依 赖

2

本章的主要内容:

函数依赖的概念及函数依赖公理 函数依赖集的等价和覆盖 多值依赖及多值依赖公理 连接依赖

Page 3: 第三章  数 据 依 赖

3

数据依赖 : 函数依赖、多值依赖、连接依赖

数据依赖 是通过一个关系中属性间值的相等与否体现出来的

数据间的相互关系 是现实世界属性间相互联系的抽象 是数据内在的性质 是语义的体现

Page 4: 第三章  数 据 依 赖

4

3.1 函数依赖 (Functional dependency FD)定义 1(FD)

设关系模式 R(U), X,Y U, r是 R(U) 上的任一关系,对任意 t1、 t2r, 如果 t1[X]=t2[X] 有 t1[Y]=t2

[Y] ,称 X 函数决定 Y ,或 Y 函数依赖于 X ,记为: FD

X→Y。定义 2( FD ) 对 X 中的任一值 x, ΠY(σX=x(r)) 的值仅有一个元组,则有 X→Y。

定义 ( 平凡 / 非平凡的 FD) 设 FD X→Y ,如果 YX ,则称 FD X→Y 为非平凡的函数依赖;否则,若 YX ,称 FD X→Y 为平凡的函数依赖。

Page 5: 第三章  数 据 依 赖

5

定义 ( 完全 FD): 设 FD X→Y ,如果对任意的XX, X→Y 都不成立,则称 X→Y 是完全函数依赖;若对 X 的真子集 X有 XX ,而 X→Y 成立,则称 FD X→Y 是部分函数依赖,即 Y 函数依赖于 X 的一部分。

定义 ( 传递 FD): 设关系模式 R, X、 Y、 Z 是 R 的属性子集,若 FD X→Y, Y → X, Y→Z ,则有 FD

X→Z ,称 FD X→Z 为传递函数依赖。

Page 6: 第三章  数 据 依 赖

函数依赖的例子学校数据库的语义: ⒈ 一个系有若干学生, 一个学生只属于一个系; ⒉ 一个系只有一名主任; ⒊ 一个学生可以选修多门课程, 每门课程有若干

学生选修; ⒋ 每个学生所学的每门课程都有一个成绩。

R(SNO,CNO,SNAME,GRADE,DEPT,MNG) SNO → DEPT, DEPT → MNG; SNO,CNO→GRADE; SNO,CNO→SNO; SNO,CNO→SNAME; SNO→MNG

Page 7: 第三章  数 据 依 赖

7

3.2 函数依赖公理3.2.1 函数依赖公理

定义 (FD 的逻辑蕴涵 ) : 设关系模式 R(U,F), X,YU ,如果能从函数依赖集 F 推导出 FD X→Y ,则称 F 逻辑蕴涵 FD

X→Y ,或称 X→Y 逻辑蕴涵于 F 。记为 F|=

X→Y。

Page 8: 第三章  数 据 依 赖

8

Armstrong 公理:设 r是 R(U) 上的一个关系, X、 Y、 Z、WU。

A1. 自反律 : 若 YXU, 则 X→Y;

A2. 增广律 : 若 X→Y且 ZU ,则 XZ→YZ;

A3. 传递律 : 若 X→Y, Y→Z ,则 X→Z.

Page 9: 第三章  数 据 依 赖

9

证明: A1. 自反律 : 若 YXU, 则 X→Y;

设 r是 R 的关系, t1, t2是 r 的任意元组, X 、Y 、Z

U

(1) 对 X 的任意值 x ,有 ΠX(σX=x(r)) 至多有一个元组,

因 YX, ΠY(σX=x(r)) 至多只有一个元组,则有 X→Y

Page 10: 第三章  数 据 依 赖

10

证明: A2. 增广律 : 若 X→Y且 ZU ,则 XZ→YZ;

(2)  对任意 x 值, ΠX(σX=x(r)) 至多有一个 元组。有 :

σXZ=xz (r) σX=x(r) ,则

ΠY(σXZ=xz(r)) ΠY(σX=x(r)) 。所以,

ΠY (σXZ=xz (r)) 至多有一个元组, r 必满足 XZ→Y。

Page 11: 第三章  数 据 依 赖

11

证明: A3. 传递律 : 若 X→Y, Y→Z ,则 X→Z.

(3) 若 X→Y ,则 t1[X] = t2[X] , t1[Y] = t2[Y]

又 Y→Z ,则有 t1[Y]=t2[Y] ,

t1[Z]=t2[Z]。

显然, X→Y在 r 中成立。

Page 12: 第三章  数 据 依 赖

12

推论 1 若 X→Y, X→Z ,则 X→YZ。

证明:若 X→Y X → XY

X→Z XY→YZX→YZ

推论 2 若 X→Y且 ZY ,则 X→Z。

证明: ZY Y→Z

推论 3 若 X→Y, YZ→W ,则XZ→W。

证明: X→Y XZ→Y Z

YZ→ W

XZ→W

Page 13: 第三章  数 据 依 赖

13

示例:SC(SNO,CNO,SNAME,GRADE,DEPT,MN)

F={ SNO,CNO→GRADE,

SNO → SNAME,DEPT,

DEPT → MN}

SNO → SNAME,DEPT,MN

SNO,CNO → SNAME,DEPT,MN

SNO,CNO →

SNAME,GRADE,DEPT,MN

Page 14: 第三章  数 据 依 赖

14

定理 1 如果 Ai (i =1, 2, …, n) 是关系模式 R

的属性,则 X→ A1 A2 … An 成立的充要条件

是:

X→ Ai (i =1, 2, …, n) 都成立。

Page 15: 第三章  数 据 依 赖

15

例: 设F={AB→E, AG→J, BE→I, E→G,GI→H}

试证: F|= AB→GH

证明:用公理系统和 F 中的函数依赖,推导过程如下: 1. 已知 AB→E, E→G 则: AB→G ; ( 传递律 )

2. 已知 AB→E 则: AB→BE ; ( 增广律 )

3. 已知 BE→I ,又 AB→BE 则: AB→I ( 传递律 )

4. 由 1 和 3有 AB→G , AB→I 则: AB→GI ( 合成规则)

5. 由 4 有 AB→GI ,又 GI→H 则: AB→H ( 传递律 )

6. 由 1 和 5 有 AB→H, AB→G 则: AB→GH ( 合成规则 )

Page 16: 第三章  数 据 依 赖

16

定义 ( 使用集 )

用公理从 F 推出 X→Y 成立所使用的函数依赖组成的序列称 F 上的一个推理序列。由推理序列中出现的且包含在 F 中的函数依赖的集合称推理序列的使用集 (use set) ,记为: U(F, X→Y)例: U(F, AB→GH)

={AB→E, E→G , BE→I , GI→H}

Page 17: 第三章  数 据 依 赖

17

3.2.2 公理的完备性定义 (FDs 的闭包 F +) 设 F 是关系 r(R) 上的 FDs, F 所蕴含的所有 FD 的集合称为 F 的闭包,记作 F + 。

F + = { X→Y | 所有 F |= X→Y }

Page 18: 第三章  数 据 依 赖

18

例:设 F={AB→C, C→B} 。

F+ 为: F+ = {A→A, AB→A, AC→A, ABC→A, B→B,

AB→B,

BC→B, ABC→B, C→C, AC→C, BC→C,ABC

→C, AB→AB, ABC→AB, AC→AC, ABC→AC

, BC→BC, ABC→BC, ABC→ABC, AB→C,

AB→AC, AB→BC, AB→ABC, C→B,

C→BC, AC→B , AC→AB}

Page 19: 第三章  数 据 依 赖

19

定义 ( 属性集的闭包 X + )

设关系模式 R(U, F), X U, 所有用公理推出的

X→Ai中 Ai 的属性集合称 X 对于 F 的闭包,记作: X +

X +={ Ai | 用公理推出的 X→Ai 且 Ai U}

Page 20: 第三章  数 据 依 赖

20

定理 2 Armstrong 公理是完备的。

证明:如果能证明 X→Y 不能由公理推出将不会被 F 所蕴涵,则公理得证。为此,构造一个关系 r(R)。

我们将证明两点: (1). F 中的所有函数依赖在 r (R) 上都成立; (2). X→Y在 r(R) 上不成立。

Page 21: 第三章  数 据 依 赖

21

设 R=A1A2 … An ,关系 r 中仅有二个元组 t 和 t'。

元组 t=〈 a1a2 … an〉。元组 t' 被定义为: ai 若 Ai X+

t'(Ai ) =

bi 若 Ai X+ X+ U - X+

A1 A2 ... Ak Ak+1 ... An

t a1 a2 ... ak ak+1 ... an

t' a1 a2 ... ak bk+1 ... bn

Page 22: 第三章  数 据 依 赖

22

证明: (1) 设W→ZF,W 在 r 中有两种情况 : (a) W X+ 。根据属性闭包定义,有 X→W ,又因W→Z ,根据公理 A3 有 X→Z 。因此 ZX+ ,即 t[Z]= t’[Z]= ai , 所以, W→Z在 r 上成立。 (b) W X+ 。则在 r 中有 t[W] t’[W] ,因此, W→Z在 r 上总是成立的。 由 (a) 和 (b) 得: r(R) 满足 F。

(2) 若 X→Y 不能由公理推出。即 XX+而 YX+ ,由 r 的构造知, X→Y在 r 上不成立,即 X→Y 不被 F 所蕴涵。

Page 23: 第三章  数 据 依 赖

23

3.2.3 函数依赖集闭包及成员测试算法算法 1 计算属性集 X 的闭包 X+ 的算法 输入:属性集 X 和函数依赖集 F 输出: X 的闭包 X+

While RESULT≠VAR do Begin VAR:=RESULT; for every FD W→Z in F do if WRESULT then RESULT:=RESULT∪Z end; return(RESULT) end.

CLOSURE(X, F) Begin VAR:=φ; RESULT:=X;

Page 24: 第三章  数 据 依 赖

24

例: F={A→D, AB→E, BI→E, CD→I, E→C} 求: AE+ 解: AE0 = AE AE1 = AED AE2 = AEDC … AE+ = ACDEI

F={A2→A1, A3→A2, A4→A3,, Am→Am-1}

算法改进:每个 FD 仅考察一次;每个属性仅考察一次

Page 25: 第三章  数 据 依 赖

25

计算属性闭包的改进算法:

1. 构造一个 LIST 表,存放含相同左部属性的

FD 。 如 list[A] ,将存放左部含 A 的 FD ; 2. 构造一个计数器 COUNT ,计数 FD 的左部属性数。 如 : COUNT[W→Z]=|W|; 3. 变量 UPDATE 记录未考察的属性,使每个属性仅 考察一次, RESULT 放中间和最后结果。

Page 26: 第三章  数 据 依 赖

26

算法 3.2.2 计算属性闭包的改进算法LINCLOSURE(X, F)Ⅰ. 初始化 for each FD W→Z in F do begin COUNT[W→Z]:=│W│; for each attribute A in W do add W→Z to list[A] end; RESULT:=X; UPDATE:=X.

Page 27: 第三章  数 据 依 赖

27

Ⅱ. 计算 While UPDATEφ do begin Choose an A in UPDATE; UPDATE:=UPDATE-A; for each FD W→Z in LIST[A] do begin COUNT[W→Z]:=COUNT[W→Z]-1; if COUNT[W→Z]=0 then begin ADD:=Z-RESULT; RESULT:=RESULT∪ADD UPDATE:=UPDATE∪ADD end end end.Ⅲ. return(RESULT).

Page 28: 第三章  数 据 依 赖

28

例 : 设F={A→D, AB→E, BI→E, CD→I, E→C} 计算: LINCLOSURE(AE,F)。 解: (1) 初始化: RESULT=AE UPDATE=AE LIST[A]=A→D, AB→E COUNT[A→D]=1 LIST[B]=BI→E, AB→E COUNT[AB→E]=2 LIST[C]=CD→I COUNT[BI→E]=2 LIST[D]=CD→I COUNT[CD→I]=2 LIST[E]=E→C COUNT[E→C]=1 LIST[I]=BI→E (2) COUNT[A→D]=0 COUNT[AB→E]=1 RESULT=ADE UPDATE=ED 其余不变。 (3) COUNT[E→C]=0 RESULT=ACDE UPDATE=CD 其余不变。 最后返回结果为 ACDEI。

Page 29: 第三章  数 据 依 赖

29

定理 1 : LINCLOSURE 算法对输入长度 n 而言,具有时间复杂度 O(n)。

证明: (1) 初始化阶段计算 COUNT[W→Z] 所用时间和 |W| 成正比。计算 COUNT 的全部初始化值为 O(n) 次。 (2) 填写 LIST 表花费O(n), RESULT和UPDATE 能用O(n) 时间进行初始化。 (3) 计算阶段, F 中的属性加入到UPDATE 至多一次。减COUNT 所花费的时间为 O(n) 。算法中涉及 ADD 的计算与│ Z│ 成正比,是 O(n) 的。

Page 30: 第三章  数 据 依 赖

30

算法 3.2.3 判定 F 是否蕴涵 X→Y 的成员测试算法

输入:函数依赖集 F 和 FD X→Y。输出:若 F 蕴涵 X→Y 输出为 true ,否则为falseMEMBER(F, X→Y) begin if Y LINCLOSURE(X,F) then return(true) eles return(false) end.

Page 31: 第三章  数 据 依 赖

31

3.3 函数依赖的等价和覆盖3.3.1 函数依赖的等价和覆盖 定义 ( 等价和覆盖 ) 在模式 R 上的 FDs F和G ,若 F+=G+ ,则 F 和 G 等价。 记作 FG。 若 FG ,称 F 是 G 的一个覆盖,也称 G 是 F 的一个覆盖。

Page 32: 第三章  数 据 依 赖

32

定理 4 已知模式 R 上的函数依赖集 F 和G 。当且仅当 F|=G 且 G|=F ,则 F G。

证明:如果 F|=G ,若有 X→Y∈G ,则 F|=X→Y ,即X→Y∈F + , 有GF +, (G)+(F+)+ = F + 。 同理,如果 G|=F ,有 F + G + 。因此, F +=G + ,则FG。 反之,若 FG ,则 F|=G和G|=F 是显然的。证毕。例 : 证明 F={A→BC, A→D, CD→E} 和 G={A→BCE, A→ABD, CD→E} 等价

Page 33: 第三章  数 据 依 赖

33

3.3.2 无冗余覆盖 定义 (无冗余覆盖 ) 如果 FDs F 不存在真子集 F使F F 成立,则 F 是无冗余的。如果 F 是 G 的一个覆盖且F 是无冗余的,则 F 是 G 的一个无冗余覆盖。

例 : 求 F={A→B, B→A, B→C, AB→C } 的一个无冗余覆盖。 {A→B, B→A, B→C, AB→C }

* 一个函数依赖集的无冗余覆盖不是唯一的 .

Page 34: 第三章  数 据 依 赖

34

算法 3.3.1 计算无冗余覆盖NONREDUN(F) begin G: =F ; for each FD X→Y in F do if MEMBER(G- {X→Y}, X→Y) then G: =G- {X→Y}; return(G) end.

Page 35: 第三章  数 据 依 赖

35

定理 5 设 F和 G 是模式 R 上的两个等价的、无冗余的 FDs 。令 X→Y是 F 上的一个 FD 。则在 G 中存在一个 FD V→W 使得 XV。

定义 ( 属性集等价 ) 设 X、 YR ,若 F|

=X→Y ,且 F|=Y→X ,则 X和 Y在 F 上等价。记作 XY。

Page 36: 第三章  数 据 依 赖

36

证明:若 X→YF ,因 FG ,G|=X→Y. 则对 X→Y

有一个基于 G 的推理序列,其使用集为 U(G,X→Y) 。 对任一 FD S→ZU(G,X→Y) ,则根据属性闭包的概念,有: G|=X→S 。 又因 FG , F|= S→Z. 则该函数依赖有一个基于 F 的推理序列。

要证明: XV

在 G 中 一 定 有 一 个 FD V→W U(G,X→Y) , 则 有X→V 。 因 FG , V→W 有一个基于 F 的推理序列且X→Y U(F,V→W),

则有 G|= V→X。 < 接下页 >

Page 37: 第三章  数 据 依 赖

37

否则 ,若 X→YU(F,V→W) ,则 FD V→W 的使用集可写为: U(F{X→Y}, V→W) 。这样,由 F 和 G 等价可推出: F{X→Y} |= U(G,X→Y) ,则 X→Y在 F 中是冗余的 ,这与 F 是无冗余 的 相矛盾。 因 此 , 必 定 有 X→YU(F,V→W) ,则 F|=V→X。

由以上证明可知, G|=X→V ,则 F|=X→V ,又 F|=V→X 。因此,在 F 中有 XV ,同理,在 G 中亦有 XV 。 证毕。

示例

Page 38: 第三章  数 据 依 赖

38

例:设无冗余的等价的函数依赖集 FG F ={A→BC, B→A, AD→E} G={A→ABC, B→A, BD→E}

F 和 G 中左部等价的属性集为: AA, BB, ADBD

AD→E是 F 中的 FD ,在 G 中有 BD→E 使得ADBD:在 G中, U(G, AD→E)={A→ABC, BD→E}在 F 中, U( F, A→ABC )={A→BC} U( F, BD→E )={B→A, AD→E} 因此,在 F 和 G 中有 ADBD。

Page 39: 第三章  数 据 依 赖

39

等价类:对于模式 R 上的 FDs集 F 和属性集 X

R 。设 EF(X)是 F 中左部等价于 X 的函数依赖集,即: EF(X)={Z→W Z→WF 且 XZ}

令 EF 为 F 上所有左部等价的函数依赖的集合,即:

EF ={ EF(X) X R且 EF (X) φ}

*F 上左部等价的依赖集的集合 EF 是 F 的一个划分。

设无冗余的等价的函数依赖集 F和 G:

|EF| = | EG|

Page 40: 第三章  数 据 依 赖

40

例: 设 F={A→BC, B→A, AD→E},

G={A→B, B→A , B→C , BD→E},

F和 G 是无冗余的且 FG

求: F和 G 中左部等价的依赖集。

解: EF 为: EF (A)={A→BC, B→A},

EF (AD)={AD→E}

EG 为: EG (A)={A→B , B→A , B→C},

EG (AD)={BD→E}

Page 41: 第三章  数 据 依 赖

41

3.3.3 规范覆盖 (canonical cover)

定义 设 F 是模式 R 上的一个 FDs

集, X→YF 。若模式 R 中的属性 A 满足下列条件,则称属性 A 在 X→Y 中是外部属性。 1. X=AZ, XZ ,且 (F- {X→Y})∪{Z→Y} F 或者 ; 2. Y=AW, YW ,且 (F-{X→Y)}∪{X→W} F。

3635

Page 42: 第三章  数 据 依 赖

42

定义 ( 化简覆盖 ) 若 FD X→Y 的左部或右部都不包含外部属性,称 FD X→Y 是化简的。 如果 FDs集 F 中的所有 FD 都是化简的,称FDs集 F 是化简的。如果 F 是 G 的一个覆盖且 F是化简的,称 F 是 G 的一个化简覆盖。

例 : G={A→BC, B→C, AB→D}求: G 的化简覆盖。解: A→BC 、 AB→D中 C、 B 是外部属性, G1={A→B, B→C, A→D}是 G 的化简覆盖。

Page 43: 第三章  数 据 依 赖

43

Ⅰ. 左化简 G:=F; for each FD X→Y in F do for each attribute A in X do if MEMBER(G, (X- A)→Y) then remove A from X in X→Y in G;

算法 3.3.2 求化简覆盖 输入:函数依赖集 F输出:化简的 FREDUCE(F)begin

Page 44: 第三章  数 据 依 赖

44

Ⅱ. 右化简 F:=G; for each FD X→Y in F do for each attribute A in Y do if MEMBER(G -{X→Y}∪{X→(Y -A)}, X→A) then remove A from Y in X→Y in G;

Ⅲ.除去形如 X→φ的 FD remove all FDs of the form X→φ from G; F:=G return(F) end.

Page 45: 第三章  数 据 依 赖

45

例 : 已知: F={A→C, AB→D, AE→CI, AC→J, C→D} 求:化简 F

解: (1) 左简化 检查 F 中的 FD, 在 AB→D和 AC→J

中分别有属性 B 和 C 为外部属性,去掉B 和 C :

F={A→C, A→D, AE→CI, A→J, C→D } (2) 右简化 检查 A→D和 AE→CI 分别有外部属性 D 和 C, 去掉D和 C 后: F={A→C, A→φ, AE→I, A→J, C→D}

(3) 去掉 A→φ 结果为:F={A→C, AE→I, A→J, C→D}。

Page 46: 第三章  数 据 依 赖

46

** 求简化覆盖时,应该按照算法中给出的顺序: (1) 左简化 (2) 右简化

例: F={B→A,D→A, AB→D } (1) 右简化 结果为 F (2) 左简化 结果为: F={ B→A,D→A, B→D }

(3) 右简化 结果为: F ={ D→A, B→D }

Page 47: 第三章  数 据 依 赖

47

定义 ( 规范覆盖 ) 如果 FDs集 F是 G 的一个覆盖, F 中的每个 FD 都具有 X→A形式而且 F

是左化简的和无冗余的,称 F是 G 的一个规范覆盖。 计算规范覆盖:( 1)将每个 FD的右部化为单属性;( 2)将每个 FD化为左简化的;( 3)计算无冗余的覆盖。

Page 48: 第三章  数 据 依 赖

48

3.3.4 最小覆盖 定义 ( 最小覆盖 ) 如果 FDs集 F 和任一等价的 FDs集 G 相比,具有最少的函数依赖数,则称 F

为 G 的最小覆盖。

例: G={A→BC, B→A, AD→E, BD→I}

F={A→BC, B→A, AD→EI}

Page 49: 第三章  数 据 依 赖

49

例: G={A→CD , AB→E , B→I,DI→J}

AB→J 因 U(G, AB→ J )∩EF(AB)=φ

定义 (FD 的直接决定 ) 如果存在一个 G 的无冗余覆盖F ,使U(F, X→Y)∩EF(X)=φ 。 则在 G 中 X 直接决定 Y,记作: X→Y。说明: (1)若 Y=X ,有 X→Y 总是成立的。 (2) 如果 X→Y, 则有 X→Y, 反之不一定成立。 (3) 如果 X 为单属性,除了 Y=X 外 X→Y 都不成立。

Page 50: 第三章  数 据 依 赖

50

定理 6 在 FDs集 G 中若 X → Y ,则对 G 的每

一个无冗余覆盖 F ,有U(F, X→Y)∩EF(X)=φ

Page 51: 第三章  数 据 依 赖

51

证明: 设 F 是 G 的一个无冗余覆盖, 因 X→Y ,在 F 中有: U(F, X→Y)∩EF(X)=φ。 设 F是 G 的另一个无冗余覆盖,对任一 FD W→Z U(F, X→Y), 假设在 F 中有 :U(F, W→Z)∩ EF (X)=φ, 则有 U(F, X→Y)∩EF (X)=φ ,定理得证。

如果假设不成立,即有 U(F, W→Z)∩ EF (X)φ。

设有 V→TU(F, W→Z) 而且 V→TEF(X)。则有: F|=W→V , XV 。 有 F|=W→X ,因而有 F|=W→X 。 但 W→Z U(F, X→Y) ,即 F|=X→W。 因此,在 F 下有 WX ,即W→ZEF(X)。 这与 U(F, X→Y)∩EF(X)=φ 相矛盾。 证毕

Page 52: 第三章  数 据 依 赖

52

定理 7 若在 FDs集 G 中有 X → Y, Y → Z ,则X → Z 成立。 证明: 若 X → Z 成立,需 U(G, X→Z)∩EG(X)=φ 成立。而 U(G, X→Z) 可表示为: U(G, X→Z)= U(G, X→Y)∪U(G, Y→Z)。因有 X → Y ,则 U(G, X→Y)∩EG(X)=φ, 则仅需证 U(G, Y→Z)∩EG(X)=φ 即可。

若 Y→X 。 XY ,则 EG(X) =EG(Y)。

若 Y→X 。假设 U(G, Y→Z)∩EG(X)≠φ ,则 有 V→WU(G,Y→Z)且 V→WEG(X) ,则有Y→V , XV ,则 XY ,与 Y→X 矛盾。 证毕

Page 53: 第三章  数 据 依 赖

53

定义: eF(X)={Z | 所有 Z→W

EF(X) }

例:

G={A→CD, B→EF, CE→G, C→BJ, E→I

K}

有: AB→CE , CE →JK

则: AB → JK

Page 54: 第三章  数 据 依 赖

54

定理 8 设 F 是一个无冗余的 FDs 集。若 F 中某个FD 的左部 X 和属性 Y 有 XY ,则在 eF(X) 中存在一个 Z ,满足 Y → Z。 证明: (1) 若 YeF(X) ,则 Z=Y ,有 Y → Y。

(2) 若 Y eF(X) 。对 eF(X) 中任一属性集 W因 XY,有 F|=Y→W 。 假设 ZeF(X) 使得 U(F,

Y→Z) 具有最少函数依赖数, Y → Z。 若 Y→Z 不成立,则有 V→T U(F,Y→Z)且VeF(X) ,而U(F, Y→Z) ∩EG(X)≠φ 。如果这样的V→T 存在,则 U(F, Y→V)比 U(F, Y→Z) 具有更少的函数依赖数,与假设矛盾。因此, ZeF(X)且 Y →

Z。

Page 55: 第三章  数 据 依 赖

55

例:F={A→DE,DE→A, AC→BI, I→D}

有: AC CDE , CDE→AC

Page 56: 第三章  数 据 依 赖

56

定理 9 设 F 为最小函数依赖集,在任一个 EF(X) 中不存在不同的 Y→U和 Z→V 能使 Y → Z 成立。

证明: 假设在 EF(X) 中存在不同的 Y→U和 Z→V 能使Y → Z 成立。即: U (F, Y→Z) ∩EF(X)=φ

也就是有: Y→U EF(X) 而 Y→U U (F, Y→Z)

因 YZ ,则用 Z→UV 代替 Y→U 和 Z→V , 结果为 F,

且 F F 即 F |= Y→U 和 F |= Z→V 。 但 F 有更少的函数依赖数,因而与 F 是最小函数依赖集矛盾。

Page 57: 第三章  数 据 依 赖

57

定理 10 若 F 和 G 是等价的最小函数依赖集,则对任一X, |EF(X)|= |EG(X)| 。

证明:假设 |EF(X)| |EG(X)| , EF(X)和 EG(X) 分别由以下 FDs 组成,且 m n 。 |EF(X)| = { Xi → Xi | 1 < i < m}

|EG(X)| ={ Yj→Yj | 1 < j < n}

X1 → X1 Y1→Y1

X2 →X2 Y2→Y2

… …

Xm →Xm Ym→ Ym

Yn→Yn

eF(X)={X1,X2,…,Xm}

eG(X)={Y1,Y2, …,

Yn}

Page 58: 第三章  数 据 依 赖

58

在 EG(X) 中,对所有的 Yj 其中有些与 Xi 是相同的。有

些不同,即 YjXi 。 对于这些 YjXi ,因 Yj Xi ,根据

定理 8,一定有某个 Xi 能使得 Yj→ Xi 。因此,在 G 中用

Xi →Yj 代替 Yj→Yj 不会改变 G 的闭包,也不会改变G 的最小性。 找寻所有这样的 Yj → Xi ,之后都用对应的 Xi →Yj 代替 Yj→Yj 。代替后对 EG(X) 中的函数依赖重新排序。

因m < n ,在 EG(X) 中一定有某个 Xi →Yi 和 Xj →Yj其左部相等。合并这二个 FD 为: Xi →YiYj ,使

EG(X) 中的函数依赖数减少,这与 G 是最小依赖集矛盾。 因此,应有 m = n。

Page 59: 第三章  数 据 依 赖

59

例 : 设 F={A→BC, B→A, I→BDEJ, BDE→IJ} ,

G={A→B, B→AC, I→ACDE, ADE→IJ}。

F和 G 都是最小覆盖且 FG。

在 F和 G 中有: A → A , B → B , I → I, BDE → ADE, ADE → BDE。

*** 二个等价的最小依赖集 F和 G 其等价类中的 FD 间存在着对应关系: Xi → Yj , Yj → Xi

。若 Yj → Xi ,在 G 中用 Xi代替 Yj 不改变 G 的闭包。

Page 60: 第三章  数 据 依 赖

60

定理 11 若 G 是无冗余的但不是最小依赖集,则存在某个 EG(X) 含有不同的 FD Y→U和 Z→V ,使得 Y → Z。证明:设 F是 G 的一个最小覆盖。因 G 不是最小

的,必存在某一 X 使得 |EF(X)| < |EG(X)| 。根据定理 9 ,因 |EF(X)|<|EG(X)| , 必有X→WEF(X), Y→U 、 Z→VEG(X) , 且 Y→X

和 Z→X, YZ 。同样 有 X→Y 或 X→Z 。假定有 X→Z ,则根据定理 7,得 Y→Z 。

Page 61: 第三章  数 据 依 赖

61

算法 3.3.4 求最小覆盖输入:函数依赖集 G输出: G 的最小覆盖MINIMIZE(G) begin F:=NONREDUN(G); find the set of EF ;

for each EF(X) in EF do

for each Y→U in EF(X) do

for each Z→V Y→U in EF(X) do

if MEMBER(F EF(X), Y→Z) then

replace Y→U and Z→V by Z→UV in Freturn(F);

end.

Page 62: 第三章  数 据 依 赖

62

(3) 考察每个 EF(X), EF(AD)中 EC → AD 用 AD→EGH 代替 AD→E, EC→GH 得最小依赖集为: F={A→BC, C→A, AD→EGH, E→D}

例 : 设 F={A→BC, C→A, AD→E, EC→GH, AE→H, E→D} 求: F 的最小覆盖解: (1) 计算 F 的无冗余覆盖。考察 F 得 FD AE→H 是冗余的,去掉冗余 FD ,则: F={A→BC, C→A, AD→E, EC→GH, E→D}。

(2) 找出 F 中 FD 左部的等价类如下: EF(A)={A→BC,C→A} EF(AD)={AD→E, EC→GH} EF(E)={E→D}