第9次作业-知识点整理:关于函数依赖定义、函数依赖类型

发布时间 2023-11-19 10:06:08作者: Sweetmeats
这个作业属于哪个课程 https://edu.cnblogs.com/campus/uzz/cs3
这个作业要求在哪里 https://edu.cnblogs.com/campus/uzz/cs3/homework/13106
这个作业的目标 第9次作业-知识点整理:关于函数依赖定义、函数依赖类型

一、函数依赖(Functional Dependency)的概念

数据依赖的一种,它反映属性或属性组之间相依存,互相制约的关系,即反映现实世界的约束关系。

二、函数依赖定义

设R(U)是属性U上的一个关系模式,X和Y均为U={A1,A2,…,An}的子集,r为R的任一关系,如果对于r中的任意两个元组u,v,只要有u[X]=v[X],就有u[Y]=v[Y],则称X函数决定Y,或称Y函数依赖于X,记为X→Y。

例:
(sno-学生ID,tno-教师ID,cno-课程ID,sname-学生姓名,tname-教师姓名,cname-课程名称,grade-成绩)
1、sno→sname, cno→cname,(sno,cno)→grade √
2、sname→sno, tno→cno, sno→tname ×

三、函数依赖是语义范畴

1、语义:数据所反映的现实世界事物本质联系
2、根据语义来确定函数依赖性的存在与否
3、函数依赖反映属性之间的一般规律,必须在关系模式下的任一个关系r中都满足约束条件。

四、属性间的联系决定函数依赖关系

设X、Y均是U的子集
1、X和Y间联系是1:1,则X→Y,Y→X。(相互依赖,可记作X←→Y)
2、X和Y间联系是M:1(M), 则X→Y。
3、X和Y间联系是M:N(M,N),则X、Y间不存在函数依赖。

例子:

五、完全函数依赖和部分函数依赖

定义:

在R(U)中,如果X→Y,并且对于X的任何真子集z都不能决定于Y,则称Y完全依赖于X,记作X→Y;否则,如果X→Y,且X中存在一个真子集z,使得z→Y成立,则称Y部分依赖于X。

完全依赖示意图

部分依赖示意图

例:
学生ID,学生姓名,所修课程ID,课程名称,成绩
(学生ID,所修课程ID)→成绩
成绩既不能单独依赖于学生ID,也不能单独依赖于所修课程ID,因此成绩完全函数依赖于关键字。
(学生ID,所修课程ID)→学生姓名
学生ID→学生姓名
学生姓名可以依赖于关键字的一个主属性——学生ID,因此学生姓名部分函数依赖于(学生ID,所修课程ID)。

六、传递函数依赖

定义:

设R是一个具有属性集合U的关系模式, X、 Y、Z是U的子集,且X、 Y、Z是不同的属性集。如果X→Y, Y→X不成立,Y→Z,则称Z传递函数依赖于X,记作xz。

传递依赖示意图

例子:

七、总结:

1、函数依赖就是在一个关系 R 中,属性(组) Y 的值是由属性(组) X 的值所决定的 。又可以说,在关系 R 中,若两个元组的 X 属性值相同,那么这两个元组的 Y 属性值也相同。
2、完全函数依赖就是说 属性组 X 的所有属性一起(即完全)才能决定属性 Y,去掉任何一个属性都不行。相反的,部分函数依赖就是说 属性组 X 中的 部分属性就可以决定 Y ,用不着全部。
3、如果 X 函数决定 Y,Y 函数决定Z,且 Y、Z 都不包含于 X,Z 不包含于 Y ,Y 不能决定 X,则称 Z 传递函数依赖于 X。 注意!:若 可以得到,但 不能说 Z 传递函数依赖于 X。