1NF
定义:如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF。
即不能存在表中表
- 第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据模式。
2NF
定义: 若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于R的码,则R∈2NF。
S-L-C(Sno, Cno, Sdept, Sloc, Grade) 不属于 2NF
非主属性 Sdept 和 Sloc 部分函数依赖于码(Sno, Cno)。
解决方法
采用投影分解法,把S-L-C分解为两个关系模式,消除这些部分函数依赖
3NF
定义:关系模式R<U,F>∈1NF,若R中不存在这样的码X、属性组Y及非主属性Z(Y不包含于Z),使得X→Y,Y→Z,Y↛X,成立,则称R<U,F> ∈ 3NF。
例如:
Sloc传递函数依赖于Sno,即S-L中存在非主属性对码的传递函数依赖Sno→ Sloc 。
S-L(Sno, Sdept, Sloc) ∈ 2NF
S-L(Sno, Sdept, Sloc) 不属于 3NF
BCNF
定义6.8 设关系模式R<U,F>∈1NF,如果对于R的每个函数依赖X→Y, 且X 不包含 Y 时,X必含有码,那么R∈BCNF。
即,在关系模式R<U,F>中,如果每一个决定因素都包含码,R∈BCNF。
例:
关系模式STJ(S,T,J)中,S表示学生,T表示教师,J表示课程
假设每一教师只教一门课 T→J
每门课由若干教师教,但某一学生选定某门课,就确定了一个固定的教师 (S,J)→T
某个学生选修某个教师的课就确定了所选课的名称 (S,T)→J
即 T→J ,(S,J)→T, (S,T)→J
由于决定因素T不包含码,所有STJ(S,T,J)不属于BCNF
采用投影分解法,将STJ分解为二个关系模式:SJ(S,J);TJ(T,J)
SJ(S,J)∈ BCNF SJ的码为(S,J), all-key
TJ(T,J)∈ BCNF TJ的码为T, T→J
注:
全码:All-key关系模型的所有属性组组成该关系模式的候选码,称为全码。即所有属性当作一个码。若关系中只有一个候选码,且这个候选码中包含全部属性,则该候选码为全码。
BCNF的关系模式所具有的性质
- 所有非主属性对每一个码都是完全函数依赖。
- 所有主属性对每一个不包含它的码也是完全函数依赖。
- 没有任何属性完全函数依赖于非码的任何一组属性。
规范化小结
一个低一级范式的关系模式,通过模式分解(schema decomposition)可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化(normalization)。