部分函数依赖
数学用语
部分函数依赖(partial functional dependency)是一个数学用语。在关系模式R(U)中,如果X→Y,并且存在X的一个真子集X0,使得X0→Y,则称Y对X部分函数依赖。
定义
设有关系模式R(U),U是属性集,X和Y是U的子集,如果X→Y是一个函数依赖,且对X的任何一个真子集X'都不存在X'→Y,则称X→Y是一个完全函数依赖(Full Functional Dependency),即Y完全函数依赖于X。记为
反之,如果X'→Y成立,则称X→Y是部分函数依赖(Partial Functional Dependency),即Y部分函数依赖于X。记为
图解表示
部分函数依赖可以用图1示意:属性集A由属性 构成(要求至少两个属性),表示为 ;如果 ,且在A中的一个属性 ,那么, 。
例题分析
例1 在关系模式Student中,因为Sno不能函数决定Grade,Cno也不能函数决定Grade,但(Sno,Cno)可以唯一地函数决定Grade,所以(Sno,Cno)→Grade是完全函数依赖。因为Sno可以函数决定Sage,所以(Sno,Cno)→Sage是部分函数依赖。
从定义可知,只有当函数依赖的决定方是组合属性时,讨论部分函数依赖才有意义,当函数依赖的决定方是单属性时,只能是完全函数依赖。
例2 在关系模式S(Sno,Sname,Sage,Sdept)中,函数依赖的决定方是Sno,是单属性,所以Sno→(Sname,Sage,Sdept)是完全函数依赖,不存在着部分函数依赖。
相关概念
函数依赖的定义
设R(U)是属性集U上的关系模式,X,Y是U的子集。若对于R(U)的任意一个可能的关系 r,r 中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y。
一般只能根据语义来确定一个函数依赖。例如,姓名一年龄这个函数依赖只有在没有同名人的条件下成立,如果允许有相同名字,则年龄就不再函数依赖于姓名了。设计者也可以对现实世界作强制的规定。例如不允许同名人出现,因而使姓名→年龄函数依赖成立,若发现有同名人存在,则拒绝装入该元组,这在一般情况下是不合情理的。
注意,函数依赖不是指关系模式R的某个或某些关系满足的约束条件。而是指R的一切关系均要满足的约束条件。例如,学生选课SC(SNO,CNO,GRADE)关系模式,假定在当前的记载中,每个学生都选了一门课程,我们能不能就此断言,SNO的属性值可以唯一地确定CNO值呢?这显然是不可靠的,因为当前每人只选一门课这一事实并不限定他只能选一门课,只有当制度规定每人只能选一门课时,上述论断才真正构成一个数据依赖。
记号和术语
(1) ,但则称 是非平凡的函数依赖。若不特别声明总是讨论非平凡的函数依赖。
(2)若则记作 。
(3)若 不函数依赖于 ,则记作 。
参考资料
最新修订时间:2022-08-25 14:06
目录
概述
定义
图解表示
例题分析
参考资料