1、传递函数依赖
设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。
2、完全函数依赖
设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。
3、部分函数依赖
设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。
扩展资料所谓函数依赖是指关系中一个或一组属性的值可以决定其它属性的值。函数依赖正象一个函数 y = f(x) 一样,x的值给定后,y的值也就唯一地确定了。
如果属性集合Y中每个属性的值构成的集合唯一地决定了属性集合X中每个属性的值构成的集合,则属性集合X函数依赖于属性集合Y,计为:Y→X。属性集合Y中的属性有时也称作函数依赖Y→X的决定因素(determinant)。例:身份z号→姓名。
参考资料来源:百度百科-完全函数依赖
百度百科-部分函数依赖
百度百科-传递函数依赖
我给你推荐一本书吧,叫做,《数据库系统概论》!
对于你所说的问题,我是这样理解的:
SNO可以推导出SDEPT,有SDEPT可以推导出MN,但是你只有SNO,是无法推导出G的,难道不是吗?推导出G需要有CNAME,可是你却告诉只有SNO,没有选课,所以就无法得到,对应功课的成绩!这个时候,我们就要来讨论primary key,我想你肯定知道主键是什么意思了,因为你已经学到了这里,所以对数据库肯定有一定的了解,好了,不说废话,在F中,SNO不能作为主键,因为只有SNO的话,却无法得到G,(原因,前面已经讲过!),只有SDEPT,就跟更没有办法得到G了,不是吗?只有通过(SNO, CNAME)联合才能得到G,而在这之中,有SNO,所以,通过SNO可以推导出,SDEPT,而通过SDEPT,可以推导出MN,不是吗?所以总结得出,primary key 只能是(SNO , CNAME)。一个表中主键没有值,那是肯定不可以的!所有数据就不可能插于进去!
我是学数据库的,若是有什么疑问,我们可以深入谈论!
对于给你推荐的那本书,是我作为学生时,看的书,里面讲的很好,对于初学者而言,是一本不错的书!能够帮助你你在数据库这条道路上走得更远!祝你好运!
1:.将F中的所有依赖右边化为单一元素AB->C C->A BC->D ACD->B BE->C CE->F CE->A CF->B CF->D
D->E D->F
2:去掉F中所有冗余依赖关系.做法为从F中去掉某关系,如去掉(X->Y),然后在F中求X+,如果Y在X+中,则表明x->是多余的.需要去掉.
去掉AB->C 得到AB+={} 所以AB->C 不是冗余的函数依赖
再依次去掉 1中其余的函数依赖,计算去掉依赖左边属性的必包,发现
ACD->B,CE->A,CF->D是冗余的函数依赖,
AB->C C->A BC->D BE->C CE->F CF->B D->E D->F
3:去掉F中的所有依赖左边的冗余属性.作法是属性中去掉其中的一个,看看是否依然可以推导
没有
所以AB->C C->A BC->D BE->C CE->F CF->B D->E D->F
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)