关系数据库理论
课本第六章 关系数据库理论
一、函数依赖:
1.完全函数依赖
通过AB能得出C,但是AB单独得不出C,那么说C完全依赖于AB。
2.部分函数依赖
通过AB能得出C,通过A也能得出C,通过B也能得出C,那么说C部分依赖于AB。
3.传递函数依赖
通过A得到B,通过B得到C,但是C得不到B,B得不到A,那么说C传递依赖于A。
4.平凡依赖
定义:
若X->Y,且Y是X的子集(对任一关系模式,平凡函数依赖必然成立),就是平凡函数依赖。
例如:
在学生表(学号,姓名,年级)中,(学号,姓名)可以推出学号和姓名其中的任何一个,这就是平凡函数依赖.
直白点说,就是只要Y是X的子集,Y就依赖于X。
5.非平凡依赖
定义:
若X->Y,但Y不是X的子集,就是非平凡函数依赖。
例如:
在学生表(学号,姓名,年级)中,通过(学号,姓名)可以推出这个学生所在的年级,但年级不是(学号,姓名)的子集,这是非平凡函数依赖.((学号,姓名)就是一个x,学号或者姓名就是一个x’)。
函数依赖举例说明:
Student表:Sno(学号),Sdept(系),Mname(系主任名字),Cno(课程号),Grade(成绩)
ex1: (Sno,Cno)->Grade是完全函数依赖,在该表中Sno和Cno都无法单独决定Grade,因此可以说,Grade完全依赖于Sno和Cno。
ex2: (Sno,Cno)->Sdept是部分函数依赖,因为Sno->Sdept成立,而Sno为(Sno,Cno)的真子集。
ex3: Sno->Sdept,Sdept->Mname,(加上条件Sdept不能决定Sno),此时可以说Mname传递依赖于Sno。
完全函数依赖:
{学号,课号}–>成绩
学号+课号 可以决定 成绩