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