1、- 函数依赖
前提:有关系模式R(U),U是一个属性集合,X、Y是U的两个真子集(X、Y不是某一属性,而是某几个属性的集合,但没有包括R中全部的属性),且有X→Y。
a、完全依赖:
若X→Y,且X中的某一真子集Z—\→Y,则Y完全依赖X。
记作:
eg:
有学生表(SNo、SN、Age、Dept),课程表(CNo、SNo、Score),教师表(TN、CNo、Dept)
有:X包括SNo、CNo,Y包括Score
则有:SNo—\→Score,CNo—\→Score,但是(CNo、SNo)→Score;
即:学号 或 课程号不决定成绩,但是学号 和 课程号决定成绩
b、部份依赖
若X→Y,且X中的某一真子集Z→Y,则Y部份依赖X。
记作:
eg:
有学生表(SNo、SN、Age、Dept),课程表(CNo、SNo、Score),教师表(TN、CNo、Dept)
有:X包括SNo、CNo,Y包括Age
则有:(CNo、SNo)→Age,但是,CNo—\→Age、SNo—\→Age;
即:学号 和 课程号决定年龄,但是学号 或 课程号分别也能单独决定年龄
2、- 传递依赖
有关系模式R(U),U是一个属性集合,X、Y是U的两个真子集(X、Y不是某一属性,而是某几个属性的集合,但没有包括R中全部的属性)。
传递函数依赖
若X→Y,且Y—\→X,当Y→Z( Z 不属于 X, Y不属于Z),则有:Z 对 X 传递函数依赖;
记作:
eg:
依旧用上述的学生表、课程表、教师表。
通过 SNo 可以知道学生系别 Dept,但是无法通过 Dept 知道学生学号 SNo;
通过 Dept 可以知道系主任老师的名字 TN。
于是,SNo 和 TN 之间的关系是:SNo 传递函数依赖 TN。
直接函数依赖
若X→Y,且Y→X,当Y→Z( Z 不属于 X, Y不属于Z),则有:Z 对 X 直接函数依赖;
eg:
依旧用上述的学生表、课程表、教师表。
通过 SNo 可以知道学生姓名 SN,也可以通过 SN 知道学生学号 SNo(前提是没有重名的学生);
通过 SN 可以知道学生系别 Dept。
于是,SNo 和 Dept 之间的关系是:SNo 直接递函数依赖 Dept。