140 likes | 279 Views
数据库系统概论 An Introduction to Database System 第 6 章 关系数据理论. 第 6 章 关系数据理论. 6.1 问题的提出 6.2 规范化 6.3 数据依赖的公理系统 * 6.4 模式的分解. 6.3 数据依赖的公理系统. 函数依赖的推导公理( Armstrong 公理) 函数依赖与属性关系 闭包及其计算 函数依赖集的最小集 候选关键字的求解理论和算法. 一、函数依赖的推导公理( Armstrong 公理). 设关系模式 R <U , F > , X , Y , Z , W U 有以下的推理规则:
E N D
数据库系统概论 An Introduction to Database System 第6章 关系数据理论
第6章 关系数据理论 6.1 问题的提出 6.2 规范化 6.3 数据依赖的公理系统 *6.4 模式的分解
6.3 数据依赖的公理系统 • 函数依赖的推导公理(Armstrong公理) • 函数依赖与属性关系 • 闭包及其计算 • 函数依赖集的最小集 • 候选关键字的求解理论和算法
一、函数依赖的推导公理(Armstrong公理) 设关系模式R <U,F >,X,Y,Z,W U 有以下的推理规则: A1.自反律(Reflexivity):若Y X U,则 X →Y A2.增广律(Augmentation):若X→Y ,则 XZ→YZ A3.传递律(Transitivity):若X→Y及 Y→Z ,则X→Z
根据A1,A2,A3这三条推理规则可以得到以下推论:根据A1,A2,A3这三条推理规则可以得到以下推论: • 合并规则:由X→Y,X→Z,有X→YZ (A2, A3) • 伪传递规则:由X→Y,WY→Z,有XW→Z (A2, A3) • 分解规则:由X→YZ,则X→Y,X→Z (A1, A3) 定理: Armstrong公理是正确的,完备的。
二、函数依赖与属性关系 属性间有三种关系,但并不是每种关系中都存在函数依赖 • X和Y之间是“1:1”关系,则存在函数依赖X→Y,Y→X (X←→Y) • X和Y之间是“N:1”关系,则存在函数依赖X→Y • X和Y之间是“M:N”关系,则不存在函数依赖
三、闭包及其计算 • 定义:设关系模式R(U,F),则称所有用Armstrong公理从F推导出的函数依赖X→Ai中Ai的属性集合为X的属性闭包,记为X+。 • 定理:设关系模式R(U,F),X,Y U,则从F推出X→Y的充要条件是Y X+。
三、闭包及其计算 算法:求属性集X关于U上的函数依赖集F 的属性闭包X+ 输入:U,F,X 输出:X+ 步骤:计算X(i)(i=0,1,2…) (1)令X(0)=X,i=0 (2)求X(i+1)=X(i)A 其中A是这样的属性:在F中寻找尚未使用过的左边是X(i)的子集的函数依赖:Yj→Zj (j=1,2…),其中Yj X(i),即在Zj中寻找X(i)中未出现过的属性集合A,若无这样的A则转(4) (3)判断是否有X(i+1)= X(i),若是则转(4);否则转(2) (4)输出X(i),即为X+ 注:对于(3)的停止条件,以下四种方法是等价的: • X(i+1)= X(i) • 当发现X(i)包含了全部属性(X(i)为侯选码) • 在F中未用过的函数依赖的左边属性已没有X(i)的子集 • 在F中的函数依赖的右边属性中再也找不到X(i)中未出现过的属性
三、闭包及其计算 [例] 设关系模式R(U,F),其中U={A,B,C,D,E,I} F={A→D,AB→E,BI→E,CD→I,E→C} 计算: (AE)+ 解:(1)令X={AE} X(0)=AE (2)在F中找出左边是AE子集的函数依赖,结果是A→D,E→C 所以,X(1)=X(0)DC=AEDC (3)判断X(1)≠X(0) 继续(2) 在F中找出尚未使用过的左边是AEDC子集的函数依赖,结果是:CD→I 所以,X(2)=X(1)I=AEDCI,判断X(1)≠X(0),继续(2) 但是,F中未用过的左边是AEDCI子集的函数依赖已经没有了,结束 (4)输出X(2) 即(AE)+=AEDCI
四、函数依赖集的最小集 1.等价和覆盖 • 定义:一个关系模式R(U)上的两个函数依赖集F和G,如果F+=G+,则称F和G是等价的,记作F≡G。(在关系模式R<U,F>中为F所逻辑蕴含的函数依赖的全体叫作 F的闭包,记为F+。) • 如果F≡G,则称G是F的一个覆盖,反之亦然。
四、函数依赖集的最小集 2.函数依赖的最小集 • 定义:对于给定的函数依赖F,当满足下列条件时,称为F的最小集,记作F’: (1)F’的每个依赖的右部都是单个属性 (2)对于F’中的任何一个函数依赖X→A,F’-{X→A}与F’不等价 (3)对于F’中的任何一个X→A和X的真子集Z,(F’-{X→A})∪{Z→A}与F’都不等价 其中(2)保证了在F中不存在多余的函数依赖 (3)保证了F中每个函数依赖的左边没有多余的属性。 • 定理:每个函数依赖集F与它的最小函数依赖集F’等价。
3.计算最小函数依赖集算法 输入:一个函数依赖集 输出:F的一个等价最小依赖集G 方法: (1)应用分解规则,使F中每一个依赖的右部属性单一化 (2)去掉各依赖左部多余的属性 具体做法:一个一个地检查F中左边是非单属性的依赖,例如XY→A 要判断Y是否是多余的,则以X→A代替XY→A,判断是否 等价? 只要在F中求X+,若X+包含A,则Y是多余的属 性;否则Y不是多余的属性,依次判断其他属性即可消 除各依赖左边的多余属性。 (3)去掉多余的依赖 具体做法: 从第一个依赖开始,从F中去掉它(假设依赖为X→Y), 然后在剩下的依赖中求X+,看X+是否包含Y,若包含则 去掉X→Y;若不包含Y,则不能去掉X→Y。依次判断, 直到最后一个依赖判断完成。
3.计算最小函数依赖集算法 [例] 设有依赖集: F={AB→C,C→A,BC→D,ACD→B,D→EG,BE→C,CG→BD,CE→AG} 计算其等价的最小依赖集。 解:(1)将依赖右边属性单一化,结果为: F1={AB→C,C→A,BC→D,ACD→B,D→E,D→G,BE→C,CG→B,CG→D,CE→A,CE→G} (2)在F1中去掉各依赖左部多余的属性 对于CE→A,由于有C→A,则E是多余的。 对于ACD→B,由于(CD)+=ABCDEG ,则A是多余的。 删除依赖左部多余的属性后: F2={AB→C,C→A,BC→D,CD→B,D→E,D→G,BE→C,CG→B,CG→D,CE→G} (3)在F2中去掉多余的依赖 对于CG→B,由于(CG)+=ABCDEG,则是多余的。删除多余的依赖后: F3={AB→C,C→A,BC→D,CD→B,D→E,D→G,BE→C,CG→D,CE→G} 则F3是F等价的最小依赖集。
下课了。。。 下课了!