【数据库篇】关系模式的表示——(2)规范化

范式:范式是符合某一种级别的关系模式的集合

规范化:是指一个低一级的范式的关系模式,通过模式的分解转换为若干个高一级范式的关系模式的集合。

【数据库篇】关系模式的表示——(2)规范化_第1张图片

1NF

每个分量必须是不可分开的数据项,满足这个条件的关系模式就是1NF。

2NF

若关系模式R属于1NF,并且每一个非主属性都完全函数依赖于任何一个候选码,则R属于2NF。

一个关系模式不满足2NF,会产生以下问题,例如:

sno cno Sdept Sloc Grade
s1 c1 数学系 1号宿舍楼 99
s1 c2 数学系 1号宿舍楼 100
s1 c3 数学系 1号宿舍楼 78
s1 c4 数学系 1号宿舍楼 78
s2 c1 数学系 1号宿舍楼 56
s2 c2 数学系 1号宿舍楼 78
s2 c3 数学系 1号宿舍楼 56
s2 c4 数学系 1号宿舍楼 89
s2 c5 数学系 1号宿舍楼 90

(1)插入异常

如果插入一个学生,但该学生未选课,即无Cno,由于插入元组时,必定给定码值,因此插入失败。

(2)删除异常

如果一个学生s4只选了一门课c3,现在他不再选这门课,则删除c3以后,整个元组的其他信息也被删除了。

(3)修改复杂

如果一个学生选了多门课,则Sdept,Sloc被存储了k次,如果该学生转到了其他系,则需要修改所有相关的Sdept和Sloc,造成修改的复杂化。

若修改为2NF

SC(Sno,Cno,Grade)

S-L(Sno,Sdept,Sloc)

3NF

设关系模式R属于1NF,若R中不存在这样的码X、属性Y及非主属性Z(Z 不包含 Y),使得X->Y , Y->Z成立,Y无法推出Z不成立,则称R属于3NF。

比如:S-S-L(Sno,Sdept,Sloc)中sno学号可以推出Sdept系,Sdept系可以推出Sloc学生住所,存在传递依赖,不属于3NF。

可以修改为:

S-S(Sno,Sdept)

S-L(Sdept,Sloc)

这样就属于3NF了。

BCNF

比3NF更进一步,通常认为BCNF是修正的第三范式,有时也称为扩充的第三范式。 设关系模式R属于1NF,若X可以推出Y且Y不属于X时必含有码,则R属于BCNF。

BCNF的关系模式所具有的性质:

(1)所有非主属性都完全函数依赖于每个候选码。

(2)所有主属性都完全函数依赖于每个不包含他的候选码。

(3)没有任何属性完全函数依赖于非码的任何一组属性。

 

你可能感兴趣的:(数据库,数据库)