1
数据库原理与应用技术
1.4.2.2 3.2.2 函数依赖
3.2.2 函数依赖

函数依赖(Functional Dependency)是关系模式中属性之间的一种依赖关系。

1. 函数依赖的概念

设R(U)是属性集U上的关系模式,X、Y是U的子集,若R(U)的所有具体关系r都满足如下约束:X的每个具体值与Y中唯一的具体值相对应,则称函数Y依赖于X,或X函数决定Y,记为X→Y,X称为决定因素。

如果X→Y,并且Y不是X的子集,则称X→Y是非平凡的函数依赖。若Y是X的子集,则称X→Y是平凡的函数依赖。

根据函数依赖的定义,可以找出如下规律。

(1) 在一种关系模式中,如果属性X、Y的联系为1∶1联系,则存在函数依赖X→Y,Y→X,即X可以决定Y,Y也可以决定X,记为X↔Y,称X和Y互相依赖。

(2) 如果属性X、Y的联系为1∶m联系,则存在函数依赖Y→X,但XY。

(3) 如果属性X、Y的联系为m∶n联系,则X与Y之间不存在任何函数依赖。

【例3-1】有一种学习关系模式R(S#,SN,C#,G,CN,TN,TA),其中各属性的含义为:S#代表学生学号,SN代表学生姓名,C#代表课程号,G代表成绩,CN代表课程名,TN代表任课教师姓名,TA代表教师年龄。其中,每个学号只能有一个学生姓名(学生姓名无重名),每个课程号只能对应一个课程名,每个教师只能对应一种年龄,每个学生学习一门课只能有一个成绩。根据上述规定,写出关系模式R的基本函数依赖。

解:根据上述规定,存在如下函数依赖:

S#→SN(每个学号只能有一个学生姓名)

C#→CN(每个课程号只能对应一个课程名)

TN→TA(每个教师只能对应一种年龄)

(S#,C#)→G(每个学生学习一门课只能有一个成绩)

2. 完全函数依赖

在R(U)中,如果X→Y,并且对于X的任何一个真子集X′,都有X′不能决定Y,则称Y对X完全函数依赖,记为XY。

若X→Y,但Y不完全函数依赖于X,有X的真子集X′能决定Y,则称Y部分函数依赖于X,记作XY。

【例3-2】给定一种学生选课关系SC(sno,cno,G),可以得到F={(sno,cno)→ G},对(sno,cno)中的任何一个真子集sno或cno都不能决定G,所以,G完全依赖于sno、cno。

由定义可知,当X是单属性时,由于不存在任何真子集X′,如果X→Y,则XY。

3. 传递函数依赖

在同一关系模式R(U)中,如果存在非平凡函数依赖X→Y,Y→Z,而YX,则称Z对X传递函数依赖,记作XZ。

【例3-3】设关系模式S(S#,SN,D#,DN,L),其中各属性的含义为:S#代表学号, SN代表学生姓名,D#代表学生所在系号,DN代表系名,L代表系地址。该关系模式是否存在传递函数依赖?

解:该关系存在如下函数依赖:

S#→D#,但D#S#,D#→L,由传递函数依赖的定义可知,S#→L是传递函数依赖,即S# L。