第一范式:(1NF)无重复的列 (指表中的属性都是原子属性,不能再拆分了)
第二范式:(2NF)属性完全依赖于主键 (在第一范式的基础上,要求非主属性都完全函数依赖(完全依赖是指不能存在仅依赖主关键字一部分的属性)于主键)
例如:
考虑关系模式R(A,B,C,D),已知函数依赖有{B->D,AB->C},关系模式R的码是( ),R属于( )范式
首先找码 码是AB,然后又有D依赖于B,而B属于AB,所以存在D部分函数依赖于AB,所以不是第二范式
第三范式:(3NF)属性不依赖于其它非主属性(在第二范式的基础上,要求要求没有非主属性传递依赖于主键)
例如:
如果存在 {A->B,B->C},这样的非主属性传递关系,就不是第三范式
BC范式:在第三范式基础上,要求所有非主键属性都必须依赖于主键(要达到BCNF,必须所有的决定因素都是码)。
例如:
T->J,(S,J)->T,(S,T)->J
码是(S,J) (S,T)
存在T->J,而T不是码所以不是BCNF
第四范式:在BC范式基础上,要求表中存在的多值依赖都必须是对主键函数依赖。
例子:
(1)R(A,B,C) F{A→B,B→A,A→C}
(2)R(A,B,C,D) F{A→C,D→B}
(3)R(A,B,C,D) F{A→C,CD→B}
解答:
1. 候选关键字AB,但存在部分依赖A→C,属于1范式
2. 候选关键字AD,存在部分依赖A→C,D→B,一范式
3. 候选关键字ACD。三范式