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范式即可,第五范式被称为完美范式
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值