*考试复习周怕忘了再写一个备忘 *
1.范式概念
关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式
1)1NF
满足最低要求的范式
2) 2NF
满足1NF,且每一个非主属性完全函数依赖于任何一个候选码
3) 3NF
在2NF基础上,任何非主属性既不传递依赖于主属性,也不部分依赖于主属性(在2NF基础上消除了传递依赖)
4)BCNF
- 所有非主属性对每一个码都是完全函数依赖;
- 所有非主属性对每一个不包含它的码也是完全函数依赖;
- 没有任何属性完全函数依赖与非码的任何一组属性
满足三点即是BCNF,如果属于BCNF,同样也属于3NF(反过来不行)
2.做题判断方法(结合自己理解的思路来)
- 先判断那些是主属性和非主属性
- 以3NF的条件为基础来判断最快,先判断非主属性是否有传递函数依赖和部分函数依赖
- 如果存在就肯定不3NF更不可能是BCNF了,如果都不存在就进一步判断是不是BCNF
3.举个例子
-
关系模式SJP(S,J,P),S是学生,J表示课程,P表示名次。每一个学生选修每门课程的成绩有一定的名次,每门课程中每一名次只有一个学生,可得一下函数依赖
(S,J)→P; (J,P)→S
所以(S,J)和(J,P)都是候选码。因为没有非主属性,而且也不存在部分函数依赖和传递依赖,所以属于BCNF -
关系模式STJ(S,T,J)中,S表示学生,T表示老师,J表示课程。每一个教师只教一门课程,每门课程有若干个老师,某学生选订某门课,就对应一个老师。所以有一下函数依赖
(S,J)→T, (S,T)→J, T→J
所以(S,J)和(S,T)都是候选码。STJ是3NF,因为没有非主属性部分函数依赖和传递依赖,但不是BCNF,因为T可以决定J,不满足BCNF条件的第2条。