1.2.4 数据库规范化

数据库范式是建立数据库关系表的规范,遵守范式的级别越高,能够让数据冗余越少,下一级别的范式包含上一级别的所有范式;但是对于特定的的冗余数据(数据属性的对应关系不变)能够提高查询速度(无需连表查询)。
 
第一范式1NF Normal Form:确保每列原子
确保每个字段不可再分,下表area可再分
第二范式2NF Normal Form非键字段必须依赖于键字段
一个表只能描述一件事,下表描述了两件事情,所以需要拆分
第三范式3NF Normal Form:消除传递依赖
在所有的非键字段中,不能有传递依赖,
下表cityid和cityname是一种数据,由cityid可以查到cityname
下表因为语文和数学确定了,总分就确定了。所以设计不满足第三范式
总结:表字段{A,B,C,D}
关联关系:{A->BC,B->C,A->B,AB->C}
可拆分关系:A->B,A->C,B->C,A->B,AB->C
因为A->C,所以AB->C可以不要,A->B重复,A可以关联到B和C
可以得到最简表:{A,D}
反三范式
当性能和规范化冲突的时候,性能更重要。比如统计大量学生各科分数及总分的时候,就是如下设计

BC范式(BCNF Boycee Codd Normal Form任何函数依赖(X->Y),X必须是候选键。意思是:任何属性(包括非主属性和主属性)都不能被非主属性所决定;BC范式要求主属性不能依赖于非主属性,这个也是第三范式和BC范式的主要区别,先拆分成3NF,再进行拆分

第四范式4NF消除多值依赖;如果属性A依赖于B,属性C也依赖于B,且属性A和属性C没有依赖关系,但是造成了数据冗余,可以把表ABC分为BA,BC两个表来消除冗余数据
 
第五范式5NF 拆分表为更小的表,每个小表不可再分,且每个小表都能够通过候选键推导出来
一般建表满足第三范式或者BC范式即可,第五范式被称为完美范式
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章