【数据库篇】关系模式的表示——(2)规范化
- IT业界
- 2025-08-11 19:57:02

范式:范式是符合某一种级别的关系模式的集合
规范化:是指一个低一级的范式的关系模式,通过模式的分解转换为若干个高一级范式的关系模式的集合。
1NF每个分量必须是不可分开的数据项,满足这个条件的关系模式就是1NF。
2NF若关系模式R属于1NF,并且每一个非主属性都完全函数依赖于任何一个候选码,则R属于2NF。
一个关系模式不满足2NF,会产生以下问题,例如:
snocnoSdeptSlocGrades1c1数学系1号宿舍楼99s1c2数学系1号宿舍楼100s1c3数学系1号宿舍楼78s1c4数学系1号宿舍楼78s2c1数学系1号宿舍楼56s2c2数学系1号宿舍楼78s2c3数学系1号宿舍楼56s2c4数学系1号宿舍楼89s2c5数学系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<U,F>属于1NF,若R中不存在这样的码X、属性Y及非主属性Z(Z 不包含 Y),使得X->Y , Y->Z成立,Y无法推出Z不成立,则称R<U,F>属于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<U,F>属于1NF,若X可以推出Y且Y不属于X时必含有码,则R<U,F>属于BCNF。
BCNF的关系模式所具有的性质:
(1)所有非主属性都完全函数依赖于每个候选码。
(2)所有主属性都完全函数依赖于每个不包含他的候选码。
(3)没有任何属性完全函数依赖于非码的任何一组属性。
【数据库篇】关系模式的表示——(2)规范化由讯客互联IT业界栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“【数据库篇】关系模式的表示——(2)规范化”
上一篇
通用功能——git攻略