首页 > 其他 > 详细

平凡依赖,非平凡依赖,完全依赖,部分依赖,传递依赖,直接依赖的区别

时间:2020-04-07 19:04:15      阅读:171      评论:0      收藏:0      [点我收藏+]

一. 函数依赖

定义:

设R(U)是属性集U上的关系模式,X,Y是U的子集。若对于R(U)的任意一个可能的关系r,r不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖于X,记作X->Y。若函数Y不函数依赖于X,则记作X-/->Y。

例如:

一个身份证号码可以确定一个人的姓名,不存在说身份证号相同,但是是不同的人的情况。(可以做强制性规定一些条件使有的函数依赖成立。比如规定不允许同名人出现,因而使姓名->年龄)

所谓函数依赖是指关系中一个或一组属性的值可以决定其它属性的值。函数依赖就像一个函数y = f(x)一样,x的值给定后,y的值也就唯一地确定了。

 

二. 平凡依赖

定义:

若X->Y,且Y是X的子集(对任一关系模式,平凡函数依赖必然成立),就是平凡函数依赖。

例如:

在学生表(学号,姓名,年级)中,(学号,姓名)可以推出学号和姓名其中的任何一个,这就是平凡函数依赖.

直白点说,就是只要Y是X的子集,Y就依赖于X。

 

三. 非平凡依赖

定义:

若X->Y,但Y不是X的子集,就是非平凡函数依赖。

例如:

在学生表(学号,姓名,年级)中,通过(学号,姓名)可以推出这个学生所在的年级,但年级不是(学号,姓名)的子集,这是非平凡函数依赖.((学号,姓名)就是一个x,学号或者姓名就是一个x‘)。

 

四. 完全函数依赖

定义:

在R(U)中,如果X->Y。并且对于X的任何一个真子集X‘,都有X‘-/->Y,则称Y对X有完全函数依赖,记作X->Y(箭头上有个大写F)。

例如:

eg 1:在学生表(学号,姓名,年级)中,通过属性“学号”就可以推出“年级”,说明“年级”完全依赖于“学号”,这就是完全函数依赖。

eg 2:“一门课的成绩”对(学号,课程号)是完全函数依赖。学号和课程号可以确定对应课程成绩,但是学号和课程号它们谁都不能单独确定成绩。

也就是说X内任意一个真子集(真子集不包含它本身),都不能唯一确定Y。

 

五. 部分函数依赖

定义:

若X->Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作X->Y(箭头上有个大写P)。

例如:

eg 1:在学生表(学号,姓名,年级)中,(学号,姓名)虽然也可以推出年级,但是它的真子集姓名却推不出年级,这就是部分函数依赖,也叫不完全函数依赖。

eg 2:“院系”对(学号,课程号)是部分函数依赖。课程号和学号一起可以确定院系,但学号是(学号,课程号)的真子集,并且学号单独可以确定院系。

 

六. 传递函数依赖

定义:

在R(U)中,如果X->Y(Y不是X的子集),Y-/->X,Y->Z,Z是Y的子集,则称Z对X传递函数依赖。记为X->Z(箭头上是汉字 “传递”)

例如:

学号->院系,院系->院长名,学号->院长名。

直白点说就是X确定Y,Y不是X子集,Y能确定Z,Z不是Y子集,Y不能确定X。

 

七. 直接函数依赖

定义:

在R(U)中,如果X->Y,Y不是X的子集,Y->Z,Z是Y的子集,则称Z对X传递函数依赖。记为X->Z(箭头上是汉字 “直接”)

 直白点说就是X确定Y,Y不是X子集,Y能确定Z,Z不是Y子集。

平凡依赖,非平凡依赖,完全依赖,部分依赖,传递依赖,直接依赖的区别

原文:https://www.cnblogs.com/guojiaxue/p/12655068.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!