1 / 38

§3 函数依赖理论及其应用(书 p52:3.5)

§3 函数依赖理论及其应用(书 p52:3.5). 一、 函数依赖的逻辑蕴涵. 设: F 是关系模式 R 给定 的 一组函数依赖集合。对于 R 的 满足 F 的 任意关系 r, 若 能够从 F 中推导出 关系 r 也满足函数依赖 X→Y, 则称 F 逻辑蕴涵 X→Y。 记为 F  X→Y. 例 设:关系模式 R(A,B,C),F={ A→BC } 则: F  A→B. 二 、 函数依赖 Armstrong 公理. 1. 函数依赖 Armstrong 公理. 设:关系模式 R(U,F)。.

corbin
Download Presentation

§3 函数依赖理论及其应用(书 p52:3.5)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. §3 函数依赖理论及其应用(书p52:3.5) 一、 函数依赖的逻辑蕴涵 设:F 是关系模式 R 给定的一组函数依赖集合。对于R的满足F的任意关系r,若能够从F中推导出关系r 也满足函数依赖X→Y,则称F逻辑蕴涵X→Y。记为 F  X→Y 例 设:关系模式R(A,B,C),F={ A→BC } 则:F  A→B

  2. 二、函数依赖Armstrong公理 1.函数依赖Armstrong公理 设:关系模式R(U,F)。 A1. 自反性(Reflexivity): 若Y  X U,则 X→Y A2. 增广性(Augmentation): 若 X→Y,且Z U,则 XZ→YZ 注:XZ (或:X, Z)即 X ∪ Z A3. 传递性(Transitivity): 若 X→Y,Y→Z,则 X→Z

  3. 2.四条推理规则 (1)合并规则:若X→Y,X→Z,则 X→YZ (2)分解规则:若X→YZ,则 X→Y, X→Z (3)伪增广规则:若X→Y,WZ,有XW→YZ (4)伪传递规则:由X→Y,WY→Z,有WX→Z 例 试证“合并规则”是正确的。 ∴X→XY (增广性) ∵ X→Y, 证: ∴XY→YZ (增广性) ∵X→Z, ∵ X→XY,XY→YZ, ∴X→YZ (传递性) 证毕。

  4. 三、函数依赖集的闭包和属性的闭包 1. 函数依赖集F的闭包(Closure) 定义:在关系模式R(U,F)中,F以及它的逻辑蕴涵所构成的函数依赖集合,叫做F的闭包,记为F+。

  5. 例 设:R(A,B,C),F={A→B,B→C} 则有: A→φ, B→φ, C→φ, AB→φ, AC→φ,BC→φ, ABC→φ, A→A, AB→A, AC→A, ABC→A, A→B, AB→B,AC→B,ABC→B, A→C, AB→C, AC→C, ABC→C, A→AB, AB→AB, AC→AB, ABC→AB, F+ = A→AC, AB→AC, AC→AC, ABC→AC, A→BC, AB→BC, AC→BC, ABC→BC, A→ABC,AB→ABC,AC→ABC,ABC→ABC, B→B, BC→B, B→C,BC→C,B→BC, BC→BC, C→C

  6. 2. 属性集X关于函数依赖集F的闭包X+F (1)定义 设:F为属性集U上给定的一组函数依赖, X,AU。 则, X+F称为属性集X关于函数依赖集F的闭包, 其中,X+F = { A | X→A是所有由F给定和推导出的函数依赖集合 }。 例 设:R(A,B,C),F={A→B,B→C}。 则 A+F ={ ABC }

  7. 初始: AF+ = {A} (因为:A A总是成立) AF+ = {AB} (因为F中有:A B) AF+ = {ABC} (因为F中有:BC) (2)计算X+F的算法 例 设:R(A,B,C),F={ A→B,B→C }。 求 AF+ = ?

  8. 3.判定一个函数依赖是否属于F+? 设:R(U,F),属性组X,YU。 问:函数依赖X→Y是否被F逻辑蕴涵? 即,判定:X→Y F+? 解决方案: 1) 计算: XF+。 2) 判定:Y XF+ ? 例 设:F = { AB, BC}问:ABC F+? 解:∵ (AB)+ F = { ABC } ,显然有:C (AB)+ F ∴ ABC F+

  9. 四、函数依赖的等价与复盖 1. 函数依赖集的等价 如果F+ = G+ ,就说函数依赖集F复盖G,或F与G 等价,记为F=G。 定理:F=G的充分必要条件是 F G+,且G  F+ 例 设:F = { AB, BC,ABC }, G = { AB, BC} 问:F = G? 解:∵ (AB)+ G = { ABC } , 显然有:C (AB)+ G ∴ ABC G+, 故:F G+ 而显然有 G F+成立,∴ F=G成立。

  10. 2. 极小函数依赖集 如果函数依赖集F满足下列条件,则称F为一个极小函数依赖集(也称最小依赖集,最小复盖),记为Fm : (1) F中每个函数依赖的右部仅含一个属性。 (2) F中每个函数依赖的“左”部都没有“多余”的属性。即:不存在函数依赖XA,以及 Z  X ,使得 F 与 (F–XA)∪ZA 等价。 (3) F中没有“多余”函数依赖。即:不存在这样的函数依赖XA,使得F与 F ―XA等价。

  11. 3. 计算Fm的算法: (1)应用分解规则,使F中每一个函数依赖的右部属性单一化。 (2)去掉各函数依赖左部多余的属性。 (3)去掉“多余”的函数依赖。 例 设有关系模式R上的一个依赖集: F={A BC,BC,ACB } 试计算Fm。 解:(1)函数依赖右部属性单一化: F= {A BC,BC,ACB } = { AB, AC, BC,ACB}

  12. (2)消去函数依赖左部多余属性: 可见BC+F  由 F = { AB, AC, BC,ACB} 令 G = { AB, AC, BC,CB } ∵ C+F = {C} ∴ F  G 又令 L = { AB, AC, BC,AB} ∵ A+ F={ABC}可见 B  A+ F ∴ F = L ={ AB, AC, BC}。 (3)消去F多余的函数依赖: 显然, AC是多余的, ∴ Fm = { AB, BC}

  13. 五、从给定的函数依赖集,确定关系模式的键码 五、从给定的函数依赖集,确定关系模式的键码 例1 设:R(U, F),U={SCG}, F={(C,S)→G} (S:学号,C:课程号,G:学习成绩) 求:R的所有键码。 解:① CF+ ={C} , GF+ ={G} , SF+ ={S} ( CF+, GF+ , SF+ 都不能函数决定 U ) ② (CG)F+ = {CG} ({CG}→U不成立) (CS)F+ = {CGS} ({CS}→U成立!) (GS)F+ = {GS} ({GS}→U不成立) ③ 综上,键码 KEY = {CS} 结束! 注意:不必计算(CGS)F+

  14. 结论: (1)若属性X仅出现在F的左部, 则X必是关系模式R任一键码的属性。 (2)若属性X不出现在F的左部和右部, 则X必是关系模式R任一键码的属性。 (3)若属性X只出现在F的右部, 则X不是关系模式R的键码属性。

  15. 例2 设:关系模式R(U, F)。其中, U = { A, B, C, D, E }, F = { ABD,AE,CB,DC }。 求:R的所有键码。 解:① R的所有键码必定都含有属性A:AF+={AE} 而 BF+ 、 CF+ 、 DF+ 、 EF+均不必计算! ② (AB)F+= {ABDEC} ∴(AB)是一个键码! (AC)F+= {ACEBD} ∴(AC)是一个键码! (AD)F+= {ADECB} ∴(AD)是一个键码! ∵键码必不含E属性。 (AE)不可能是键码。 注意:其余都不必计算!

  16. §4 关系数据库模式设计 关系模式R1 关系模式Rk 一、模式分解概述 1.模式分解和子模式 设关系模式R(U),以及模式集合:ρ={R1(U1),…,Rk(Uk)}。若U1∪ U2∪ …∪Uk = U,且不存在Ui Uj ( 1≤i, j≤k )。则称ρ是R(U)的一个分解,R1,… ,Rk称为R的子模式。 关系模式R ...... ρ

  17. 关 系 r1 关 系 rk 2. 关系的投影 关 系 r U Uk U1 ...... 例1 设有关系模式R(Eno,Es,Eg)。其中: Eno:职工号;Es:工资级别;Eg:工资额。 R上的函数依赖集F={Eno→Es, Eg;Es→Eg} ρ= {R1,R2,R3} R的一个关系r在ρ上的投影如下:

  18. R1 Eno Es E01 3 E02 4 E03 4 R Eno Es Eg E01 3 2600 E02 4 2200 E03 4 2200 R2 Es Eg 3 2600 4 2200 R3 Eno Eg E01 2600 E02 2200 E03 2200

  19. 3. 函数依赖集的投影 关系模式 R1(U1, F1) 关系模式 Rk(Uk, Fk) 关 系 模 式 R( U, F ) . . . . . . F+ = { ...... }

  20. A→φ, B→φ, C→φ, AB→φ, AC→φ,BC→φ, ABC→φ, A→A, AB→A, AC→A, ABC→A, A→B, AB→B,AC→B,ABC→B, A→C, AB→C, AC→C, ABC→C, F+ = A→AB, AB→AB, AC→AB, ABC→AB, A→AC, AB→AC, AC→AC, ABC→AC, A→BC, AB→BC, AC→BC, ABC→BC, A→ABC,AB→ABC,AC→ABC,ABC→ABC, B→B, BC→B, B→C, BC→C,B→BC, BC→BC, C→C 设:R(A,B,C),F={A→B,B→C} 则有:

  21. 思考: 1)若有R1(U1, F1),其中U1={ A, B }。问:F1=? 2)若有R2(U2, F2),其中U2={ B, C }。问:F2=? ●计算Fi(i=1,2,…,k)算法: 设:Ri(Ui,Fi)是R分解得到的一个子模式, A是 Ui的一个真子集,即A  Ui 。 step1:对于所有A  Ui,计算A+F 和A+F ∩Ui step2:根据(1)构造Fi (i=1,2,…,k)

  22. 例2 设:R(U,F),U={A,B,C,D}, F={A→B,B→C,C→D,D→A } ρ={ R1(A,B,C),R2(C,D) }。 求:F在R1、R2上的投影F1、F2 解: 令: U1={ABC}, U2={CD} 对于U1={ABC}: ∵ A+F = {ABCD}, A+F∩U1={ABC} B+F = {ABCD}, B+F ∩U1={ABC}C+F = {ABCD}, C+F ∩U1={ABC} (AB)+F = {ABCD}, (AB)+F ∩U1={ABC} (AC)+F = {ABCD}, (AC)+F ∩U1={ABC} (BC)+F = {ABCD}, (BC)+F ∩U1={ABC}

  23. ∴ F1 = {A→B,A→C, B→A, B→C, C→A, C→B, AB→C, AC→B, BC→A } = {A→B,B→A, B→C, C→A } = {A→B,B→C, C→A } 对于U2 = {CD}: ∵ C+F = {ABCD}, C+F∩U2 ={CD} D+F = {ABCD}, D+F ∩U2 ={CD} ∴ F2 = { C→D,D→C }。

  24. 4. 关系模式分解的不同准则 (书:p66 3.6.5-3.6.6) (1)分解具有“无损连接性”(Lossless join) (2)分解具有“保持函数依赖性”(Preserve dependency) (3)分解既具有“无损连接性”,又具有“保持函数依赖性”

  25. 关 系 r1 关 系 rk r1r2 rk …… 二、模式分解的无损连接性 关 系 r · · · · · · 无损连接性:对于关系模式R 及其子模式 R1, …, Rk所对应的任何关系r和r1,… , rk, 都有:  r

  26. 三、模式分解的保持函数依赖性 设ρ={ R1,…,Rk }是关系模式R(U,F)的一个分解。Fi是 F到 Ri的投影(i=1,…,k)。如果 (∪Fi)+= F+,则称ρ是保持函数依赖性的。 k i=1 F F+ k (1)计算G =∪ Fi i=1 Fk F1 ... G: 1.什么叫分解的“保持函数依赖性” 2. 判定保持函数依赖性的算法 (2)若 FG+, 则ρ是保持函数依赖性的。 G F+ !

  27. 例3 设:R(U,F),U={A,B,C,D}, F={A→B,B→C,C→D,D→A }, ρ={R1(A, B, C),R2(C, D)}。 问:ρ是否保持函数依赖? 解:我们已得到: F1= {A→B,B→C, C→A} F2 = { C→D,D→C }。 (1)计算:G = F1∪ F2 = { A→B,B→C,C→A,C→D,D→C } (2)对于D→A∈F, ∵D+G ={ABCD} ∴A  D+G 即: D→A∈G+;而对于F中的AB、 B→C 和C→D,它们显然属于G+。 故:ρ对R的分解是保持函数依赖性的。

  28. 四、模式分解的算法 1. 模式分解的几个结论 一个关系模式R: (1)它一定可以无损连接性地分解成若干个BCNF的子模式(甚至是4NF的子模式)。 (2)它一定可以保持函数依赖性地分解成若干个3NF的子模式,但不一定能达到BCNF。 (3)它可以既保持函数依赖性,又具有无损连接性地分解形成一些3NF的子模式,但不一定能分解成为若干BCNF的子模式。

  29. 2. 无损连接性地分解到BCNF的算法 定理:设有关系模式R(U,F),以及R的一个分解 ρ= { R1(U1,F1),R2(U2,F2) }。 该分解具有无损连接性的充要条件是: (U1U2)(U1 - U2)F+, 或者: (U1U2)(U2 - U1)F+。 例4 设有关系模式RL(U,F)。其中: U={ C,T,H,R,S,G } F={CS→G,C→T,HR→C,HS→R,TH→R} KEY = { HS }

  30. 解: (略去计算过程) “X” 找到非码决定因素函数依赖 “X” “A” U去掉“A” (GT) “X A” CSGT 非码依赖 CHRS U={CGHRST} F={ CS→G,C→T HR→C,HS→R TH→R } KEY={HS} 计算: (CS)F+= { CSGT } F1={C→T, CS→G} F2={CH→R,HR→C, HS→C,HS→R} KEY=CS KEY=HS 计算: (C)F1+ ={ CT } 计算: (CH)F2+ ={ CHR }

  31. 去掉R 去掉T CT {C→T} CGS { CS→G} CHR { CH→R, HR→C} CHS { HS→C} CSGT F1={ C→T, CS→G } KEY=CS CHRS F2={CH→R,HR→C, HS→C,HS→R} KEY=HS (CH)F2+ ={ CHR } (C)F1+ ={ CT } KEY=CS KEY=HS KEY=C KEY=CH/HR BCNF BCNF BCNF BCNF 注:失去函数依赖TH→R。

  32. 设:关系模式 R(U,F) 分解成为BCNF的算法: (1)初始, 令ρ= { R(U,F) } (2)重复以下步骤,直到ρ的所有关系模式都是 BCNF的: a. 找出ρ中不是BCNF的关系模式。不妨假设它就是Ri(Ui,Fi) 。其中必有:X→Y∈Fi,而X不含Ri的键码。 b. 计算:XFi+ , 并令:A = XFi+– X c. 把Ri分解成为子模式Ri1和Ri2,其中: URi1= XA, URi2= Ui – A。 d. 计算Fi在Ri1和Ri2的投影,以及Ri1和Ri2的键码。

  33. 3.保持函数依赖分解成3NF的算法: 例5 设有关系模式R(Eno,Ename, Es,Eg) F={ Eno→(Ename,Es,Eg),Ename→Eno, Es→Eg } 求:R的一个保持函数依赖性的分解。 解:1)求F的最小函数依赖集Fm: ∵ F中同时存在 Eno→Es 和 Es→Eg, ∴ Eno→Eg是F中“多余”的函数依赖。 故:Fm = { Eno→Ename, Eno→Es, Ename→Eno,Es→Eg }

  34. 2)按照Fm中“决定因素”的不同属性,创建子模式ρ={R1(U1,F1),R2(U2,F2), R3(U3,F3)} 其中, U1={Eno,Ename, Es},F1={ Eno→(Ename,Es)} U2={ Es,Eg }, F2={ Es→Eg } U3={ Ename,Eno }, F3={ Ename→Eno } 3) ∵U3U1 ∴ 把R3“并入”R1 得到:ρ={ R1(U1,F1),R2(U2,F2) }。 其中, U1={Eno,Ename, Es}, F1={ Eno→(Ename,Es),Ename→Eno } U2={ Es,Eg }, F2={ Es→Eg }

  35. ●保持函数依赖分解成3NF的算法: 设:关系模式R(U,F)。 (1)计算F的最小依赖集Fm。 (2)若Fm中仅有一个函数依赖X→Y,且XY=U,则ρ={ R(U,Fm)},并结束算法。 (3)把U中与Fm的所有函数依赖的左部和右部都无关的属性,从U中分离出去,并使它们构成一个关系模式R0( R0至少是3NF的!)。令:此时Fm剩余的属性构成属性集U0

  36. (5)根据Fi所包含的属性构造Ui。并由此构造关系模式Ri(Ui, Fi)。于是,可得R的一个分解ρ={R0,R1,…,Rk},且有:∪kUi= U0 i=1 (4)按照Fm中各函数依赖的左部属性,把Fm划分为F1,…,Fk,使得每个Fi(i=1,2,…,k)的所有函数依赖的左部都相同。 (6)对于1≤i,j≤k (i≠j), 若Ui  Uj,则把Ri“合并”到Rj。 (注意:须将Fi“合并”到Fj之上)

  37. 4. 达到4NF的无损连接性的分解 设:给定关系模式R(U,F): (1)把R保持无损连接性地分解为BCNF。假设分解结果为:ρ={ R1,R2,…,Rk }。 其中,R1,R2,…,Rk ∈BCNF (2)若对于ρ的任意一个关系模式Ri,存在:Ri4NF,则 Ri中必存在非平凡的非函数依赖的多值依赖X→→Y,且有: Ui={X,Y,Z}, Z = Ui – X – Y   于是,对Ri进行分解,使之成为: Ri′(X,Y) 和 Ri″(X,Z)。

  38. 掌握:函数依赖集闭包概念;多值依赖与4NF;关系投影;具有无损连接性分解和保持函数依赖分解的概念;低范式关系模式的缺点。掌握:函数依赖集闭包概念;多值依赖与4NF;关系投影;具有无损连接性分解和保持函数依赖分解的概念;低范式关系模式的缺点。 熟练掌握:函数依赖概念;函数依赖Armstrong公理系统和推理规则;属性集A关于函数依赖集F的闭包计算;BCNF、3NF、2NF和1NF的概念;判定关系模式属于第几范式;从函数依赖集计算关系模式的键码;关系模式分解的函数依赖投影计算;具有无损连接性分解到BCNF的算法。保持函数依赖分解到3NF的算法。 理解:数据冗余及其影响问题。

More Related