ITPub博客

首页 > 数据库 > Oracle > 1.2.4 数据库规范化

1.2.4 数据库规范化

Oracle 作者:nana1123 时间:2022-04-25 16:20:36 0 删除 编辑

数据库范式是建立数据库关系表的规范,遵守范式的级别越高,能够让数据冗余越少,下一级别的范式包含上一级别的所有范式;但是对于特定的的冗余数据(数据属性的对应关系不变)能够提高查询速度(无需连表查询)。

 

第一范式 ( 1NF  1 Normal Form ) :确保每列原子 性

确保每个字段不可再分,下表area可再分


第二范式 ( 2NF  2 Normal Form ) :非键字段必须依赖于键字段

一个表只能描述一件事,下表描述了两件事情,所以需要拆分


第三范式 ( 3NF  3 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 ) : 拆分表为更小的表,每个小表不可再分,且每个小表都能够通过候选键推导出来




来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70017124/viewspace-2888680/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2022-04-25

  • 博文量
    12
  • 访问量
    8568