十二、数据库设计原则——范式

文章目录

  • 一、三大范式和巴斯范式
  • 二、反范式化的思想


一、三大范式和巴斯范式

关于范式这一块,不做太多的说明,主要是根据面试需要,对数据库的三大范式进行说明,以及如何反范式化

第一范式:要求一张表中的数据每一列都是不可分割的原子项数据
第二范式:消除部分依赖,要求一张表中的每一列都完全依赖于主键(针对于组合主键),也就是不会出现某一列只和部分主键相关
第三范式:消除传递依赖,要求一张表中的每一列都和主键是直接依赖的,不是间接依赖

其实第一范式具有主观性,一个字段能不能在继续分割,是由业务决定的
第二范式其实是表里面有一个主键,非主键只能依赖主键,第三范式是非主键之间不能相互依赖

BSCN范式,又称为巴斯范式,它在 3NF 的基础上消除了主属性对候选键的部分依赖或者传递依赖关系。

二、反范式化的思想

反范式化:
越高阶的范式得到的数据表越多,数据冗余就越低。但有时候,我们设计数据表的时候,需要为了性能和读取效率违反范式化得到原则。反范式就是允许少量的冗余,通过空间换时间。

你可能感兴趣的:(mysql高级,mysql)