基本概念
完全函数依赖:设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。
部分函数依赖:设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。
第二范式:在1NF的基础上,非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖)
举例说明
学号 | 课程号 | 成绩 |
上面的表,基本上是满足第二范式的。
学号 | 课程号 | 成绩 | 姓名 | 课程名 |
这里明显,主键是"学号+课程号","成绩"依赖于"主键"(学号+课程号→成绩),但是"姓名"只依赖于"学号"(学号→姓名),"课程名"只依赖于"课程号"(课程号→课程名),所以这里,不满足第二范式了。
那么这里“姓名”和"课程号"对于主键来说是非完全依赖。
关于第二范式的函数依赖关系分析结果如下表。
Y | 1X’ | 2X’ | X | 数学表达 | 文字表达-函数依赖 |
成绩 | 学号 | 课程号 | 学号+课程号 | X’!→Y | “成绩”完全依赖于“学号+课程号” |
姓名 | 学号 | 课程号 | 学号+课程号 | 1X’→Y | “姓名”部分依赖于“学号”(1X’) |
课程名 | 学号 | 课程号 | 学号+课程号 | 2X’→Y | “课程名”部分依赖于“课程号”(2X’) |