下面给函数依赖的形式化定义。 函数依赖的定义 定义设关系模式R(U,F),U是属性全集,F是U上的函 数依赖集,X和Y是U的子集,如果对于R(U)的任意一个可 能的关系r,对于X的每一个具体值,Y都有唯一的具体值 与之对应,则称X决定函数Y,或Y函数依赖于X,记作 Ⅹ→Y。我们称X为决定因素,Y为依赖因素。当Y不函数依 赖于X时,记作:X。当X→Y且Y→X时,则记作:X<Y。 >对于关系模式SCD U=SNO, SN, AGE, DEPT, MN, CNO, SCORE F={SNO→SN,SNO→AGE,SNO→DEPT 个SN0有多个 SCORE的值与其对应,因此 SCORE不能唯 一地确定,即 SCORE不能函数依赖于SNO,所以有: SNO SCORE。 >仨交 SCORE可以被(SN0,CN0)唯一地确定。所以可表 示为:(SN0,CNO)→ SCORE
16 下面给函数依赖的形式化定义。 函数依赖的定义 定义 设关系模式R(U,F),U是属性全集,F是U上的函 数依赖集,X和Y是U的子集,如果对于R(U)的任意一个可 能的关系r,对于X的每一个具体值,Y都有唯一的具体值 与之对应,则称X决定函数Y,或Y函数依赖于X,记作 X→Y。我们称X为决定因素,Y为依赖因素。当Y不函数依 赖于X时,记作:X Y。当X→Y且Y→X时,则记作:X Y。 ➢对于关系模式SCD U={SNO,SN,AGE,DEPT,MN,CNO,SCORE} F={SNO→SN,SNO→AGE,SNO→DEPT} ➢一个SNO有多个SCORE的值与其对应,因此SCORE不能唯 一地确定,即SCORE不能函数依赖于SNO,所以有: SNO SCORE。 ➢但是SCORE可以被(SNO,CNO)唯一地确定。所以可表 示为:(SNO,CNO)→SCORE。
有关函数依赖的几点说明 1.平凡的函数依赖与非平凡的函数依赖 ≯当属性集Y是属性集X的子集时,则必然存在着函数依赖X→Y, 这种类型的函数依赖称为平凡的函数依赖 如果Y不是X的子集,则称X→Y为非平凡的函数依赖。 若不特别声明,我们讨论的都是非平凡的函数依赖 2.函数依赖是语义范畴的概念。 ≯我们只能根据语义来确定一个函数依赖,而不能按照其形式 化定义来证明一个函数依赖是否成立。 例如,对于关系模式S,当学生不存在重名的情况下,可以得 到: SN→AGE SN→DEPT 这种函数依赖关系,必须是在没有重名的学生条件下才成立 的,否则就不存在函数依赖了。 ≯所以函数依赖反映了一种语义完整性约束
17 有关函数依赖的几点说明: 1.平凡的函数依赖与非平凡的函数依赖。 ➢ 当属性集Y是属性集X的子集时,则必然存在着函数依赖X→Y, 这种类型的函数依赖称为平凡的函数依赖。 ➢ 如果Y不是X的子集,则称X→Y为非平凡的函数依赖。 ➢ 若不特别声明,我们讨论的都是非平凡的函数依赖。 2.函数依赖是语义范畴的概念。 ➢ 我们只能根据语义来确定一个函数依赖,而不能按照其形式 化定义来证明一个函数依赖是否成立。 ➢ 例如,对于关系模式S,当学生不存在重名的情况下,可以得 到: SN→AGE SN→DEPT ➢ 这种函数依赖关系,必须是在没有重名的学生条件下才成立 的,否则就不存在函数依赖了。 ➢ 所以函数依赖反映了一种语义完整性约束
3.函数依赖与属性之间的联系类型有关。 (1)在一个关系模式中,如果属性X与Y有1:1联系时,则存在 函数依赖X→Y,Y→X,即》Y 例如,当学生无重洺时, SNO SN。 (2)如果属性X与Y有1:m的联系时,则只存在函数依赖X→Y。 例如,SNO与AGE,DEPT之间均为1:m联系,所以有 SNO→AGE,SNO→DEPT。 (3)如果属性X与Y有m:n的联系时,则X与Y之间不存在任何函 数依赖关系。 例如,一个学生可以选修多门课程,一门课程又可以为多 个学生选修,所以SNO与CNO之间不存在函数依赖关系。 由于函数依赖与属性之间的联系类型有关,所以在确 定属性间的函数依赖关系时,可以从分析属性间的联系 类型入手,便可确定属性间的函数依赖
18 3.函数依赖与属性之间的联系类型有关。 (1)在一个关系模式中,如果属性X与Y有1:1联系时,则存在 函数依赖X→Y,Y→X,即X Y。 例如,当学生无重名时,SNO SN。 (2)如果属性X与Y有1:m的联系时,则只存在函数依赖X→Y。 例 如 ,SNO 与 AGE ,DEPT 之间均为1:m 联 系 , 所以有 SNO→AGE,SNO→DEPT。 (3)如果属性X与Y有m: n的联系时,则X与Y之间不存在任何函 数依赖关系。 例如,一个学生可以选修多门课程,一门课程又可以为多 个学生选修,所以SNO与CNO之间不存在函数依赖关系。 ➢由于函数依赖与属性之间的联系类型有关,所以在确 定属性间的函数依赖关系时,可以从分析属性间的联系 类型入手,便可确定属性间的函数依赖。
4.函数依赖关系的存在与时间无关 因为函数依赖是指关系中的所有元组应该满足的约 束条件,而不是指关系中某个或某些元组所满足的 约束条件。 ≯当关系中的元组增加、删除或更新后都不能破坏这 种函数依赖 因此,必须根据语义来确定属性之间的函数依赖, 而不能单凭某一时刻关系中的实际数据值来判断 例如,对于关系模式S,假设没有给出无重名的学 生这种语义规定,则即使当前关系中没有重名的记 录,也只能存在函数依赖SNO→SN,而不能存在函 数依赖SN→SNO,因为如果新增加一个重名的学生 函数依赖SN→SNO必然不成立。 >所以函数依赖关系的存在与时间无关,而只与数据 之间的语义规定有关
19 4.函数依赖关系的存在与时间无关。 ➢因为函数依赖是指关系中的所有元组应该满足的约 束条件,而不是指关系中某个或某些元组所满足的 约束条件。 ➢当关系中的元组增加、删除或更新后都不能破坏这 种函数依赖。 ➢因此,必须根据语义来确定属性之间的函数依赖, 而不能单凭某一时刻关系中的实际数据值来判断。 ➢例如,对于关系模式S,假设没有给出无重名的学 生这种语义规定,则即使当前关系中没有重名的记 录,也只能存在函数依赖SNO→SN,而不能存在函 数依赖SN→SNO,因为如果新增加一个重名的学生, 函数依赖SN→SNO必然不成立。 ➢所以函数依赖关系的存在与时间无关,而只与数据 之间的语义规定有关
5.函数依赖可以保证关系分解的无损连接性 设R(X,Y,Z),X,Y,Z为不相交的属性集合, 如果X→Y或Ⅹ→Z,则有R(X,Y,Z)=R[X,Y*R[X >其中,R[X,Y表示关系R在属性(X,Y)上的投影, 即R等于其投影在X上的自然连接,这样便保证了关 系R分解后不会丢失原有的信息,称作关系分解的 无损连接性 例如,对于关系模式SCD,有SNO→(SN,AGE, DEPT, MN), SCD(SNO, SN, AGE, DEPT, MN, CNO, SCORE )=SCD [SNO, SN, AGE, DEPT, MN]*SCD LSNO CNO, SCORE],也就是说,用其投影在SNO上的自然 连接可复原关系模式SCD >这一性质非常重要,在后一节的关系规范化中要用 到
20 5.函数依赖可以保证关系分解的无损连接性。 ➢设R(X,Y,Z),X,Y,Z为不相交的属性集合, 如果X→Y或X→Z,则有R(X,Y,Z)=R[X,Y]*R[X, Z], ➢其中,R[X,Y]表示关系R在属性(X,Y)上的投影, 即R等于其投影在X上的自然连接,这样便保证了关 系R分解后不会丢失原有的信息,称作关系分解的 无损连接性。 ➢例如,对于关系模式SCD,有SNO→(SN,AGE, DEPT,MN),SCD(SNO,SN,AGE,DEPT,MN,CNO, SCORE)=SCD[SNO,SN,AGE,DEPT,MN]*SCD[SNO, CNO,SCORE],也就是说,用其投影在SNO上的自然 连接可复原关系模式SCD。 ➢这一性质非常重要,在后一节的关系规范化中要用 到