第一范式(1NF)
每个属性不可再分
例:居民物业表中有一个属性是水电费.水电费还能再分成水费和电费,所以这个表不符合第一范式
函数依赖
对于关系R,有两个属性A,B,只要确定了A的值,B的值就唯一确定(不会出现一个A的值对应两个B的值),就称A函数确定B或者B依赖于A,记作A→\rightarrow→B
完全函数依赖和部分函数依赖:
- 完全函数依赖:属性集合A→\rightarrow→属性集合B,A的真子集↛\nrightarrow↛属性集合B
- 部分函数依赖:属性集合A→\rightarrow→属性集合B,A的真子集→\rightarrow→属性集合B.例如:(a,b)→\rightarrow→c,若a↛\nrightarrow↛c并且b↛\nrightarrow↛c,就是(a,b)完全函数依赖于c;若存在a→\rightarrow→c或者b→\rightarrow→c,就是(a,b)部分函数依赖于c
传递函数依赖:
a→\rightarrow→b,b→\rightarrow→c成立,则有a→\rightarrow→c成立
第二范式(2NF)
对于关系R ∈\in∈ 1NF,并且对于每个给主属性完全函数依赖于任何一个候选码则R ∈\in∈ 2NF
第三范式(3NF)
在2NF基础上,消除传递函数依赖
不能存在:非主属性A→\rightarrow→非主属性B并且主属性C→\rightarrow→非主属性A
BCNF
在3NF基础上,不能存在任何属性完全函数依赖于非码的任意一个组合
即消除上面的3NF的非主属性A→\rightarrow→非主属性B