第一范式(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