函数依赖(理论及举例)

上传人:206****923 文档编号:37513740 上传时间:2018-04-17 格式:DOC 页数:7 大小:70.50KB
返回 下载 相关 举报
函数依赖(理论及举例)_第1页
第1页 / 共7页
函数依赖(理论及举例)_第2页
第2页 / 共7页
函数依赖(理论及举例)_第3页
第3页 / 共7页
函数依赖(理论及举例)_第4页
第4页 / 共7页
函数依赖(理论及举例)_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《函数依赖(理论及举例)》由会员分享,可在线阅读,更多相关《函数依赖(理论及举例)(7页珍藏版)》请在金锄头文库上搜索。

1、函数依赖(理论及举例)教你如何理解函数依赖一、函数依赖的概念函数依赖:函数依赖就是讨论一个数据表(关系)中属性值之间所存在的函数关系。函数是一种数学中的概念,被引入到数据库中对数据的联系进行分析。在一个关系中,属性相当于数学上的变量,属性的域相当于变量的取值范围,属性在一个元组上的取值相当于属性变量的当前值。例如:在下面的这个职工关系中,职工号、姓名、性别、年龄、职务等属性都相当于变量;职工号属性的域,即四位十进制数字,就是取值范围,性别属性的域:男、女,就是性别属性的取值范围。此关系中包含有 6 个元组,如第 2 个元组为3051、刘平、男、48、副处,其中的每个属性值都是对应属性在该元组上

2、的当前值。单值函数和多值函数:元组中一个属性或一些属性值对另一个属性值的影响相当于自变量值对函数值的影响。当给定一个自变量值能求出唯一的一个函数值时,称此为单值函数或单映射函数,否则为多值函数。在单值函数中由自变量的一个值确定函数的一个值,但不同的自变量值允许具有相同的函数值。如 f(x)=2x, f(n)=(-1)n, f(x)=x3+1 等都是单值函数,由自变量 x 或 n 的值能够唯一确定 f(x)或 f(n)的值。属性的单值函数决定(依赖):在一个关系中,若一个或一组属性的值对另一个或一组属性值起到决定性的作用,则称为单值函数决定(依赖)。如上表中职工号的值就能够函数决定其余每个属性的

3、值,也就是说,当职工号给定后,其他每个属性的值就跟着唯一地确定了。如假定职工号为 3074,则他的姓名必定是王海,性别必定为男,年龄必定为 32 岁,职务必定为正科。这就叫做职工号能够分别单值函数决定姓名、性别和年龄属性,反过来,可以说姓名、性别和年龄等属性单值函数依赖于职工号属性。二、函数依赖的定义定义:设一个关系为 R(U),X 和 Y 为属性集 U 上的子集,若对于 X 上的每个值都有 Y 上的一个唯一值与之对应,则称 X 和 Y 具有函数依赖关系,并称X 函数决定 Y,或称 Y 函数依赖于 X,记作 XY,称 X 为决定因素。例如:设一个职工关系为(职工号,姓名,性别,年龄,职务),职

4、工号用来标识每个职工,选作为该关系的主码。对于该关系中每个职工的职工号,都对应着姓名属性中的唯一值,即该职工的姓名,或者说一个职工的姓名由其职工号唯一确定,所以称职工号函数决定姓名,或称姓名函数依赖于职工号,记作“职工号姓名”,职工号为该函数依赖的决定因素。同理,当一名职工的职工号被确定之后,它所对应的性别、年龄、职务等属性值就被唯一确定下来了,所以职工号函数决定性别、年龄、职务等描述职工特征的每个属性,可以分别记作为“职工号性别”、“职工号年龄”、“职工号职务”。在该关系中除职工号外,其他属性都不能成为决定因素形成函数依赖,因为对于它们的每个属性值,都可能对应另一属性的多个不同的取值。如对于

5、性别属性的一个取值“男”就会对应多个而不是一个职工号,此不是单值函数依赖,而是多值函数依赖,所以不能由性别来决定职工号。相互函数依赖:在这个职工关系中,若规定不允许职工有重名,则姓名也能够唯一标识一个元组,这样姓名也能够函数确定其他每个属性,此时职工号和姓名在取值上一一对应,相互成为决定因素,即构成相互函数依赖,记作为“职工号姓名”。但通常是允许职工重名的,因为不应该让已经重名的职工重新起名,这样姓名就不能成为关系的候选码,就不能函数决定其他任何属性。若一个关系中的属性子集 X 不能函数决定另一个属性子集 Y,则记作XY,读作 X 不能函数决定 Y,或 Y 不能函数依赖于 X。三、平凡和非平凡

6、函数依赖定义:设一个关系为 R(U),X 和 Y 为属性集 U 上的子集,若 XY 且 X 不包含 Y,则称 XY 为非平凡函数依赖,否则若 XY 则必有 XY,称此XY 为平凡函数依赖。例如:在一个职工关系中,职工号总能函数决定它本身,记作“职工号职工号”,对于任一个给定的职工号,都有它本身的职工号值唯一对应,此为平凡函数依赖。又如:职工号和性别构成的属性子集总是能够函数决定其中的职工号或性别属性,可分别记作为“(职工号,性别)职工号”和“(职工号,性别)性别”,因为对于任何给定的一个元组中的职工号和性别的组合值,都唯一对应一个职工号值或性别值,不可能出现其他的职工号值或性别值,此种也为平凡

7、函数依赖。通常,主要讨论的是非平凡函数依赖,即 XY 且 XY。如在职工关系中,职工号函数决定其他每个属性都是非平凡函数依赖,另外“(职工号,姓名)性别”也是非平凡函数依赖,虽然在这里由决定因素中所含的职工号单属性就能够函数决定性别,而带有的姓名属性有些多余。四、完全和部分函数依赖定义:设一个关系为 R(U),X 和 Y 为属性集 U 上的子集,若存在 XY,同时 X 的一个真子集 X也能够函数决定 Y,即存在 XY,则称 XY 的函数依赖为部分函数依赖,或者说,X 部分函数决定 Y,Y 部分函数依赖于 X;否则若在 X 中不存在一个真子集 X,使得 X也能够函数决定 Y,则称 X 完全函数决

8、定 Y,或 Y 完全函数依赖于 X。XY 的部分函数依赖也称为局部函数依赖。例如:在上面介绍的职工关系中,职工号同其他每个属性之间的函数依赖都是完全函数依赖,因为职工号是一个单属性决定因素,它不可能再包含其他任何属性,也就不可能存在真子集函数决定其他每个属性的情况存在。另外,如“(职工号,性别)”的值虽然能够函数决定相应职工的年龄,但其中的真子集职工号就能够函数决定其年龄,所以(职工号,性别)到年龄之间的函数依赖为部分函数依赖。即在“(职工号,性别)年龄”的函数依赖中存在着“职工号年龄”的函数依赖。又例如:设一个教师任课关系为(教工号,姓名,职称,课程号,课程名,课时数,课时费),该关系给出某

9、个学校每个教师在一个学期内任课安排的情况,假定每个教师可以讲授多门课程,每门课程可以由不同教师来讲授。侯选码:在该关系中,由教工号和课程号的组合能够唯一确定一个元组,即确定哪个教师讲授哪门课程,所以(教工号,课程号)为关系的候选码。函数依赖分析:一个教师的姓名和职称完全由该教师的教工号决定,所以该关系中存在“教工号姓名”和“教工号职称”这两个函数依赖。一个教师所讲授某门课程的课程名和课时数,完全由该门课程的课程号所决定,所以该关系中又存在“课程号课程名”和“课程号课时数”这两个函数依赖。一个教师所讲某门课程的课时费通常是由教师的职称和课程号共同决定的,即存在“(职称,课程号)课时费”这个函数依

10、赖,它也是一种完全函数依赖,因为职称和课程号中的任何一个属性都不能单独决定课时费的多少。该关系的侯选码为(教工号,课程号),“(教工号,课程号)姓名”,“(教工号,课程号)职称”,“(教工号,课程号)课程名”,“(教工号,课程号)课时数”等都是部分函数依赖,因为它们前项中的一个属性就能够函数决定后面的属性。五、传递函数依赖定义:一个关系为 R(U),X,Y 和 Z 为属性集 U 上的子集,其中存在XY 和 YZ,但 Y 不决定 X,同时 Y 不包含 Z,则存在 XZ,称此为传递函数依赖,即 X 传递函数决定 Z,Z 传递函数依赖于 X。注意:在这里必须强调的是 Y 不反过来函数决定 X,因为如

11、果 XY 同时YX,则 X 和 Y 为相互决定的函数依赖关系,记作为“XY”,这样 X 和Y 是等价的,在函数依赖中是可以互换的,XZ 就是直接函数依赖,而不是传递函数依赖了。另外,Y 不包含 Z 也是必须满足的条件,因为如果 YZ,则 XY 必然包含着 X 直接函数决定 Y 中的每个子集,这使得 XZ 为直接函数依赖而不是传递函数依赖。例如:设一个学生关系为(学号,姓名,性别,系号,系名,系主任名),通常每个学生只属于一个系,每个系有许多学生,每个系都对应唯一的系名和系主任名。函数依赖分析:在该关系中,学号能够函数决定姓名、性别和系号,即存在“学号姓名”、“学号性别”、“学号系号”,系号又能

12、够函数决定系名和系主任名,即存在“系号系名”和“系号系主任名”。由于学号决定系号,系号又决定系名和系主任名,所以给定一个学号之后也就能够唯一对应一个系名或系主任名,也就是说,在学生关系中还存在“学号系名”和“学号系主任名”这两个函数依赖是传递函数依赖。六、函数依赖之间的变换规则设一个关系为 R(U),其中 X、Y、Z、W 是 U 上的子集,则函数依赖存在着以下一些常用的变换规则:(1)自反性:若 YXU,则存在 XY。即整体决定部分。如(学生号,课程号)学生号。(2)增广性:若 XY,则存在 XZYZ。即函数依赖的两边同时增加一个相同的属性,其函数依赖保持不变。如学生号系号,则“(学生号,课程

13、号)(系号,课程号)”同样成立。(3)传递性:若 XY 和 YZ,则存在 XZ。如教工号职称,职称职务工资,则存在教工号职务工资。(4)合并性:若 XY 和 XZ,则存在 XYZ。如学生号姓名,学生号性别,则学生号(姓名,性别)。(5)分解性:若 XY,且 ZY,则存在 XZ。如学生号(姓名,性别),则存在学生号姓名,学生号性别。(6)伪传递性:若 XY 和 WYZ,则存在 WXZ。如教工号职称,(职称,工龄)基本工资,则存在(教工号,工龄)基本工资。(7)复合性:若 XY 和 ZW,则存在 XZYW。如学生号姓名,课程号课程名,则(学生号,课程号)(姓名,课程名)。(8)自增性:若 XY,则

14、存在 WXY。即在函数依赖的左边添加任何属性,其依赖关系保持不变。如学生号姓名,则存在:(学生号,课程号)姓名,不过由直接依赖变为部分依赖。七、最小函数依赖定义:设一个关系为 R(U),X 和 Y 为 U 的子集,若 XY 为完全函数依赖,同时 Y 为单属性,则称 XY 为 R 的最小函数依赖。由 R 中所有最小函数依赖构成 R 的最小函数依赖集,并且在最小函数依赖集中不应含有冗余的传递函数依赖。例如:设一个关系为 R(A,B,C,D),它的函数依赖集为FD=AB,BC,AC,BD,判断它是否为 R 的最小函数依赖集。分析:由 FD 中的 AB 和 BC 可得到 AC,也就是说 AB 和 BC

15、 中已经蕴涵 AC,所以给出的 AC 是冗余的,应去掉。原 FD 不是 R 的一个最小依赖集,若修改为 FD=AB,BC,BD,就成为 R 的最小函数依赖集。八、根据函数依赖求出关系中的侯选码定义:设一个关系为 R(U),X 为 U 的一个子集,若 X 能够函数决定 U 中的每个属性,并且 X 的任何真子集都不能函数决定 U 中的每个属性,则称 X 为关系 R 的一个候选码。等价定义:由于一个候选码能够函数决定关系中的每个属性,根据函数依赖的合并规则,可知候选码能够函数决定整个元组,即所有属性。所以候选码的另一个等价定义为:若关系中的一个属性或属性组能够函数决定整个元组,并且它的任何子集都不能

16、函数决定整个元组,则它被称为该关系的一个候选码。例如:在上面介绍过的职工关系中,职工号属性能够函数决定职工号、姓名、性别、年龄、职务等所有属性,并且职工号为单属性,不可再分,肯定不会存在任何子集能够函数决定整个元组,所以职工号为该关系的一个候选码;若在该关系中还带有身份证号属性,则身份证号属性的每一个值也能够唯一标识一个元组,所以也能够函数决定关系中的所有属性,因此身份证号也是一个候选码。又如:在上面介绍过的教师任课关系中,它的最小函数依赖集为:教工号姓名,教工号职称,课程号课程名,课程号课时数,(职称,课程号)课时费。求侯选码分析:由于任一个单属性都不能函数决定关系中的所有属性,所以都不是候选码,若选取一个属性子集(教工号,课程号),由于它能够函数决定所有属性,所以它是该关系的一个候选码,并且是唯一的候选码。注意:(教工号,课程号)到教工

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号