函数依赖
张太红 2003-01
新疆农业大学计算机及信息工程系
第五章、函数依赖(Functional Dependency )
四、属性集的闭包 给定的关系变量R,R的一个属性集Z,以及R的 一个函数依赖集S,R中所有的函数依赖于Z的属性 集,即属性集Z关于函数依赖集S的闭包Z+。
/*计算属性集Z关于函数依赖集S的闭包Z+的算法*/ CLOSURE[Z,S] := Z; Do “forever”; for each FD X → Y in S do; if X <= CLOSURE[Z,S] then CLOSURE[Z,S] := CLOSURE[Z,S] ∪ Y; end; if CLOSURE[Z,S] did not change on this iteration then leave loop; End;
结论2:给定关系变量R的一个函数依赖集S和属 性子集Z,Z关于S的闭包Z+是R的属性集的一个子集, 对于该子集中的任意属性A,函数依赖Z→A都成立, 如果Z+包含R的所属性,则Z为超键,如果Z是不可约的 ,则Z是候选键。
新疆农业大学计算机及信息工程系 张太红 2003-01
第五章、函数依赖(Functional Dependency )
新疆农业大学计算机及信息工程系 张太红 2003-01
第五章、函数依赖(Functional Dependency )
4、A→B,B→C,C→D A+={A,B,C,D} B+={B,C,D} C+={C,D} D+={D} AB+={A,B,C,D} AC+={A,B,C,D} AD+={A,B,C,D} BC+={B,C,D} BD+={B,C,D} CD+={C,D}
ID Name Course 英语 Grade 85 994631201 李敏 994631201 李敏 994631202 马明磊 994631202 马明磊 994631203 陈燕红 994631204 徐景辉 994631204 徐景辉 994631204 徐景辉 {ID,Course} →{Grade} {ID,Course} →{Name} {ID,Course} →{Name,Grade} {ID,Course} →{ID} {ID,Course} →{Course,Grade} {ID} →{Name} . . .
新疆农业大学计算机及信息工程系
张太红
2003-01
第五章、函数依赖(Functional Dependency )
一、什么是函数依赖 设R是关系变量,X、Y是R的属性集的任意子 集,当且仅当对于R的所有可能的合法值,X的值 一但确定,Y的值也随之确定,即当两个元组的X 值相等时,Y值也相等,则Y函数依赖于X,表示 为:X→Y。
例:设R(A,B,C,D)是关系变量,对下列每 一个给定的函数依赖集,确定R的候选键: 1、B→C,D→A 2、AB→C,C→A,C→D 3、A→BC,C→AD 4、A→B,B→C,C→D 5、C→A,B→C,C→D 6、ABC→D,D→A 7、A→B,BC→D,A→C 8、AB→C,AB→D,C→A,D→B
新疆农业大学计算机及信息工程系 张太红 2003-01
第五章、函数依赖(Functional Dependency )
例:设A、B、C、D、E和F是给定的关系变量R的属性集,R满足下列 函数依赖:S = {A→BC ,E→CF ,B→E,CD→EF} 计算属性集{A,B}关于S的闭包{A,B}+ 1、初始化:令集合CLOSURE[Z,S] = {A,B}。 2、进行四次内循环,一次一个函数依赖。第一次循环(对于A→BC )时发 现它的左边是当前CLOSURE[Z,S]的子集,所以把它右边的属性(B和)C 加入集合CLOSURE[Z,S],这样集合CLOSURE[Z,S]就变为{A,B,C}。 3、第二次循环( 对于 E→CF )发现它的左边不是当前CLOSURE[Z,S]的子 集,因此该结果保持不变。 4、第三次循环( 对于 B→E ),把E加入集合CLOSURE[Z,S],这样集合 CLOSURE[Z,S]就变为{A,B,C,E}。 5、第四次循环( 对于 CD→EF )结果保持不变。 6、再一次经过四次内循环,第一次循环结果不变,第二次循环结果扩展到 {A,B,C,E,F},第三次和第四次不变 7、再一次经过四次内循环,集合CLOSURE[Z,S]保持不变,这样,整个过程 结束,结果: {A,B}+ = {A,B,C,E,F}
新疆农业大学计算机及信息工程系 张太红 2003-01
第五章、函数依赖(Functional Dependency )
例:设有关系模式R(ABCDE),其函数依赖集F={A→BC,BC→E,E→DA}, 试求此关系的键 A+={A,B,C,E,D} B+={B} C+={C} D+={D} E+={A,D,E,C,B,} AB+={A,B,C,D,E} AC+={A,B,C,E,D} AD+={A,D,B,C,E} AE+={A,E,B,C,D} BC+={B,C,E,A,D} BD+={B,D} BE+={B,E,A,D,C} CD+={C,D} CE+={C,E,A,D,B} DE+={D,E,A,D,C}
张太红
2003-01
第五章、函数依赖(Functional Dependency )
三、函数依赖集的闭包(CLOSURE)
有些函数依赖蕴涵另一些函数依赖, 如: {ID,Course} →{Name,Grade}蕴涵下面的函数 依赖: {ID,Course} →{Grade} {ID,Course} →{Name} 函数依赖集S所蕴涵的函数依赖全体称为函数 依赖集S的闭包S+。
新疆农业大学计算机及信息工程系 张太红 2003-01
第五章、函数依赖(Functional Dependency )
3、A→BC,C→AD A+={A,B,C,D} B+={B} C+={A,B,C,D} D+={D} AB+={A,B,C,D} AC+={A,B,C,D} AD+={A,B,C,D} BC+={A,B,C,D} BD+={B,D} CD+={A,B,C,D}
新疆农业大学计算机及信息工程系
张太红
2003-01
第五章、函数依赖(Functional Dependency )
设A、B、C和D是给定的关系变量R的属性集的任 意子集,并把A和B的并集记为AB,则: Armstrong公理 1、自反律:如果B是A的子集,则A→B 2、增广律:如果A→B,则AC→BC 3、传递律:如果A→B,B→C,则A→C 4、自含规则:A→A 5、分解规则:如果A→BC,则A→B,则A→C 6、合并规则:如果A→B且A→C,则A→BC 7、复合规则:如果A→B且C→D,则AC→BD Darwen通用一致性定理 8、通用定理:如果A→B且C→D,则A∪(C-B)→BD
新疆农业大学计算机及信息工程系 张太红 2003-01
第五章、函数依赖(Functional Dependency )
8、AB→C,AB→D,C→A,D→B A+={A} B+={B} C+={A,C} D+={B,D} AB+={A,B,C,D} AC+={A,C} AD+={A,B,C,D} BC+={A,B,C,D} BD+={B,D} CD+={A,B,C,D}
新疆农业大学计算机及信息工程系 张太红 2003-01
第五章、函数依赖(Functional Dependency )
例:设A、B、C、D、E和F是给定的关系变量R 的属性,R满足下列函数依赖: A→BC B→E CD→EF 证明AD→F ∴ ∵ ∵ ∴ ∵ ∵ A→BC A→C AD→CD CD→EF AD→EF AD→F (给定) (分解规律) (增广律) (给定) (传递律) (分解规律)
第五章、函数依赖(Functional Dependency ) 数据库逻辑设计的任务:
如果要把一组数据储存在数据库中,该如何 为这些数据设计一个合理的逻辑结构,即如何决 定存在那些关系变量,每个关系变量中应该有那 些属性,每个属性的类型及值域。
数据库逻辑设计的目标:
数据库设计首先是得到一个正确的数据结构 保证数据的完整性 应具有应用独立性
数据库原理 85 80 英语 数据库原理 80 78 英语
英语
90
数据库原理 90 90 专业外语
No FD
{ID} →{Grade} {Grade} →{ID} {Name} →{ID} {Name} →{Grade}
张太红 2003-01
新疆农业大学计算机及信息工程系
第五章、函数依赖(Functional Dependency )
二、平凡的函数依赖、非平凡的函数依赖
一个不可能不满足的函数依赖称为平凡的函 数依赖,如{ID,Course} →{ID},事实上,当 且仅当函数依赖的右边是左边的子集时,该函数 依赖才是平凡的函数依赖。 平凡的函数依赖并没有实际意义,只有非平 凡的函数依赖才和真正的完整性约束条件相关。
新疆农业大学计算机及信息工程系
新疆农业大学计算机及信息工程系 张太红 2003-01
第五章、函数依赖(Functional Dependency )
结论1:给定一个函数依赖集S,可以方便地判断 函数依赖X→Y是否可以从S中导出,因为当且仅当Y是 属性集X关于S的闭包的子集时, X→Y才能由S中导出 ,该方法不必精确计算S+就能判断函数依赖X→Y是否 属于函数依赖集S的闭包S+。