文章目录
一、三大范式和巴斯范式
关于范式这一块,不做太多的说明,主要是根据面试需要,对数据库的三大范式进行说明,以及如何反范式化
第一范式:要求一张表中的数据每一列都是不可分割的原子项数据
第二范式:消除部分依赖,要求一张表中的每一列都完全依赖于主键(针对于组合主键),也就是不会出现某一列只和部分主键相关
第三范式:消除传递依赖,要求一张表中的每一列都和主键是直接依赖的,不是间接依赖
其实第一范式具有主观性,一个字段能不能在继续分割,是由业务决定的
第二范式其实是表里面有一个主键,非主键只能依赖主键,第三范式是非主键之间不能相互依赖
BSCN范式,又称为巴斯范式,它在 3NF 的基础上消除了主属性对候选键的部分依赖或者传递依赖关系。
二、反范式化的思想
反范式化:
越高阶的范式得到的数据表越多,数据冗余就越低。但有时候,我们设计数据表的时候,需要为了性能和读取效率违反范式化得到原则。反范式就是允许少量的冗余,通过空间换时间。