第3讲函数依赖和公理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
⇒
⇒
SNAME,DEPT, SNO,CNO → SNAME,DEPT,MN
(自反律和传递律) 自反律和传递律)
⇒SNO,CNO → SNAME,GRADE,DEPT,MN(合成规则) 合成规则)
⇒思考:有最后一个依赖关系,那否得出是SNO,CNO关系SC的键? 关系SC的键? SC的键 思考:有最后一个依赖关系,
10
如果A 定理1 如果Ai (i =1, 2, …, n)是关系模式R的属 成立的充要条件是: 性,则 X→ A1 A2 … An 成立的充要条件是: X→ Ai (i =1, 2, …, n) 都成立。 都成立。 3.2.2 公理的完备性 定理2 Armstrong公理是完备的 公理是完备的。 定理2 Armstrong公理是完备的。
6
3.2 函数依赖公理 3.2.1 函数依赖公理
由关系模式R上的函数依赖组成的集合F称为R 由关系模式R上的函数依赖组成的集合F称为R上 的函数依赖集,记为: 的函数依赖集,记为: FDs 定义(FD的逻辑蕴涵) 定义(FD的逻辑蕴涵) : 的逻辑蕴涵 设关系模式R(U,F),X,Y⊆ 设关系模式R(U,F),X,Y⊆U,如果能从函数依赖 R(U,F) 如果能从函数依赖 X→Y, 集F推导出FD X→Y,则称 F逻辑蕴涵 FD X→Y,或称 推导出FD X→Y, X→Y逻辑蕴涵于F。记为 F|= X→Y。 X→Y逻辑蕴涵于F X→Y。 逻辑蕴涵于
律: RESULT →Z
17
例: F={A→D, AB→E, BI→E,CD→I,E→C} 求: AE+ 解: AE0 = AE AE1 = AED AE2 = AEDC (第一轮扫描后的结果) 第一轮扫描后的结果) … AE+ = ACDEI 练习: 属性集U 为ABCD,
F={A→B, B→C, D→B}
7
F。 F。
Leabharlann Baidu
已知函数依赖集F 如何判断一个函数X→Y是否逻辑蕴涵于F 已知函数依赖集F,如何判断一个函数X→Y是否逻辑蕴涵于F X→Y是否逻辑蕴涵于 ?需要哪些推理法则(包括3个公理和3个推论)? 需要哪些推理法则(包括3个公理和3个推论)? Armstrong公理(三个公理): Armstrong公理(三个公理): 公理 设r是R(U)上的一个关系,X、Y、Z、W⊆U。 R(U)上的一个关系, 上的一个关系 自反律: A1. 自反律: 若Y⊆X⊆U, 则 X→Y; 增广律: X→Y且 A2. 增广律: 若X→Y且Z⊆U,则 XZ→YZ; 传递律: Y→Z, A3. 传递律: 若X→Y, Y→Z,则 X→Z. 有以上三个公理,可以推出以下3个推论: 有以上三个公理,可以推出以下3个推论: 推论1 合成规则): X→Y,X→Z, 推论1(合成规则): 若X→Y,X→Z,则X→YZ 推论2 分解规则): X→Y且 推论2(分解规则): 若X→Y且Z⊆Y,则X→Z 推论3 伪传递规则) 推论3(伪传递规则) 若X→Y,YZ→W,则XZ→W。 X→Y,YZ→W, XZ→W。
第三章 数 据 依 赖
1
本章的主要内容: 本章的主要内容:
函数依赖的概念及函数依赖公理 函数依赖集的等价和覆盖 多值依赖及多值依赖公理 连接依赖
2
函数依赖( 3.1 函数依赖(Functional dependency FD)
定义1(FD) 定义1(FD) 1( 设关系模式R(U), R(U)上的任一关系 上的任一关系, 设关系模式R(U),X,Y ⊆ U,r是R(U)上的任一关系, R(U) 对任意t [Y], 对任意t1、t2∈r, 如果 t1[X]=t2[X] 有t1[Y]=t2 [Y],称X 函数决定Y X→Y。 函数决定Y,或Y函数依赖于X,记为:FD X→Y。 函数依赖于X 记为:
13
定义(函数依赖集F的闭包 F +) 定义(函数依赖集F 设F是关系r(R)上的函数依赖集,F所蕴含的所有FD的集 是关系r(R)上的函数依赖集, 所蕴含的所有FD的集 r(R)上的函数依赖集 FD 合称为F 闭包,记作F 合称为F的闭包,记作F +。 F
+
= { X→Y
|
所有F 所有F |= X→Y }
说明r C→BDE, 说明r上函数依赖: A→D, AB→D, C→BDE,E→A
是否成立? 是否成立?
4
定义(平凡/非平凡的FD):设 X→Y,如果Y 定义(平凡/非平凡的FD) 设FD X→Y,如果Y⊄X,则称 FD FD) X→Y为非平凡的函数依赖;否则, X→Y为 X→Y为非平凡的函数依赖;否则,若Y⊆X,称FD X→Y为平凡 的函数依赖。 的函数依赖。 定义(完全FD): X→Y,如果对任意的X′⊂X →Y都 定义(完全FD): 设FD X→Y,如果对任意的X′⊂X,X′→Y都 不成立,则称X→Y是完全函数依赖;若对X的真子集X X→Y是完全函数依赖 ′⊂X 不成立,则称X→Y是完全函数依赖;若对X的真子集X′有X′⊂X, →Y成立 则称FD X→Y是部分函数依赖 成立, 是部分函数依赖, 函数依赖于X 而X′→Y成立,则称FD X→Y是部分函数依赖,即Y函数依赖于X 的一部分。 的一部分。
15
为了判定函数依赖集F是否蕴涵X→Y, 为了判定函数依赖集F是否蕴涵X→Y,引入的属性闭包: 判定函数依赖集 X→Y
定义(属性集X的闭包X 定义(属性集X的闭包X
+
)
设关系模式R(U, F), 设关系模式R(U, F),U=A1A2…An ,X ⊆ U, 所有用公理 和F推出的函数依赖X→Ai中Ai的集合,称X对于函数依赖集 的集合, 推出的函数依赖X→A F的闭包,记作:X+ 的闭包,记作: X+ ={ Ai | F |= X→Ai 且Ai ∈ U}
16
3.2.1 函数依赖集闭包及成员测试算法
算法1 计算属性集X的闭包X+的算法 输入: 输出: 输入:属性集X和函数依赖集F 输出:X的闭包X+
CLOSURE(X, F) Begin VAR:=φ; RESULT:=X; While RESULT≠VAR do Begin VAR:=RESULT; for every FD W→Z in F do if W⊆RESULT then RESULT:=RESULT∪Z end; return(RESULT) end. //其中的原理:由 W⊆RESULT ,由自反律:RESULT →W,再由传递 //其中的原理 其中的原理: 由自反律: →W,
推论3 伪传递规则) 推论3(伪传递规则)
若X→Y,YZ→W,则XZ→W。 X→Y,YZ→W, XZ→W。
增广和传递律) 增广和传递律 XZ→W(增广和传递律
证明: 证明: X→Y ⇒ XZ→Y Z YZ→ W
9
示例: 示例:SC(SNO,CNO,SNAME,GRADE,DEPT,MN)
SNO,CNO→GRADE, F={ SNO,CNO→GRADE, SNO → SNAME,DEPT, SNAME,DEPT, DEPT → MN} SNAME,DEPT, SNO → SNAME,DEPT,MN (分解规则,传递律,合成规则) 分解规则,传递律,合成规则)
8
X→Y,X→Z, X→YZ。 推论1 合成规则): 推论1(合成规则): 若X→Y,X→Z,则X→YZ。 证明: 证明:若X→Y ⇒ X → XY X→Z ⇒ XY→YZ X→YZ (增广和传递律
X→Y且 X→Z。 推论2 分解规则): 推论2(分解规则): 若X→Y且Z⊆Y,则X→Z。 证明: ⊆ 证明: Z⊆Y ⇒ Y→Z (自反和传递律)
思考: 如果X只有一个属性, X→Y是否一定是完全函数依赖? 思考: 如果X只有一个属性, X→Y是否一定是完全函数依赖? 是否一定是完全函数依赖
定义(传递FD):设关系模式R 的属性子集, 定义(传递FD):设关系模式R,X、Y、Z是R的属性子集, X→Y, X,Y→Z,则有FD X→Z, X→Z为 若FD X→Y,Y → X,Y→Z,则有FD X→Z,称FD X→Z为 传递函数依赖。 传递函数依赖。
函数依赖、完全依赖、 函数依赖、完全依赖、传递依赖等基本概念是第四章关系 数据库范式的基础。 数据库范式的基础。
5
函数依赖的例子
学校数据库的语义: 学校数据库的语义: ⒈ 一个系有若干学生, 一个学生只属于一个系; 一个系有若干学生, 一个学生只属于一个系; 一个系只有一名主任; ⒉ 一个系只有一名主任; 一个学生可以选修多门课程, 每门课程有若干学生选修; ⒊ 一个学生可以选修多门课程, 每门课程有若干学生选修; 每个学生所学的每门课程都有一个成绩。 ⒋ 每个学生所学的每门课程都有一个成绩。
求: A + , (AD) +, (BD)+
18
算法3.2.3 判定F是否蕴涵X→Y X→Y的成员测试算法 算法3.2.3 判定F是否蕴涵X→Y的成员测试算法 输入:函数依赖集F X→Y。 输入:函数依赖集F和FD X→Y。 输出: 输出:若F蕴涵X→Y输出为true,否则为false 蕴涵X→Y输出为true,否则为false X→Y输出为true MEMBER(F, X→Y) begin if Y⊆ CLOSURE(X,F) then return(true) eles return(false) end.
例:设F={AB→C,C→B}。 F={AB→C,C→B}。 求F+
14
设F={AB→C,C→B}。 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, BC→B,ABC→B,C→C,AC→C,BC→C,ABC→C,AB→AB, ABC→AB,AC→AC,ABC→AC, ABC→AB,AC→AC,ABC→AC,BC→BC, ABC→BC, AB→ABC, ABC→ABC, AB→C, AB→AC, AB→BC, AB→ABC,C→B, C→BC, C→BC,AC→B ,AC→AB}
R(SNO,CNO,SNAME,GRADE,DEPT,MNG) 找出其中的函数依赖? (1)找出其中的函数依赖? 哪些是平凡依赖?指出哪些是完全依赖?哪些是部分依赖? (2)哪些是平凡依赖?指出哪些是完全依赖?哪些是部分依赖?哪 些是传递依赖 ? SNO → DEPT, SNO,CNO→SNO; SNO→MNG SNO→MNG DEPT → MNG; SNO,CNO→SNAME SNAME; SNO,CNO→SNAME; SNO,CNO→GRADE; SNO,CNO→GRADE; GRADE
的等价定义) 定义2(FD的等价定义) 对X中的任一值x,ΠY(σX=x(r)) 的 值仅有一个元组, 值仅有一个元组,则有X→Y。
3
练习
设关系r 如下所示: 设关系 如下所示: r( A B C a1 b1 c1 a1 b2 c2 a2 b1 c3 a2 b1 c4 a3 b2 c5 D E) d1 e1 d2 e1 d3 e1 d3 e1 d1 e1
(传递律) 传递律) (增广律) 增广律) (传递律) 传递律) (合成规则) 合成规则) (传递律) 传递律) (合成规则) 合成规则)
12
定义(使用集) 用公理从F推出 用公理从 推出 X→Y成立所使用的函数 成立所使用的函数 依赖组成的序列称F上的一个推理序列 依赖组成的序列称 上的一个推理序列。在推 上的一个推理序列。 理序列中出现的且包含在F中的函数依赖的集 理序列中出现的且包含在 中的函数依赖的集 合称推理序列的使用集 合称推理序列的使用集(use set),记为: 使用集 ,记为: U(F, X→Y) 例:U(F, AB→GH) ={AB→E,E→G, BE→I, GI→H} , , ,
即:F所蕴涵的函数依赖X→Y一定能被公理推出。
11
例:
设F={AB→E,AG→J,BE→I,E→G,GI→H} F={AB→E,AG→J,BE→I,E→G,
试证: 试证:F|= AB→GH 证明:用公理系统和F中的函数依赖,推导过程如下: 证明:用公理系统和F中的函数依赖,推导过程如下: AB→E, 1. 已知 AB→E,E→G 2. 已知 AB→E BE→I, 3. 已知 BE→I,又 AB→BE AB→G, 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→G; AB→G; 则:AB→BE; AB→BE; 则:AB→I 则:AB→GI 则:AB→H 则:AB→GH