在数据库中,有一个非常重要的概念,那就是 范式,它对存在于数据库中的表的数据结构直接起了决定性的作用,遵循不同的范式,就会得到不同的数据结构,在合适的场景选择合适的范式,可以起到事半功倍的效果,既然它那么重要,我们就开始好好聊聊它吧!
正文
在数据库中,大致分为五个范式
- 第一范式(1NF)
- 第二范(2NF)
- 第三范式(3NF)
- 巴克斯范式(BCNF)
- 第四范式(4NF)
下面依次介绍它们
第一范式
若关系模式r的每一个分量都是 不可再分 的数据项,则关系模式r属于第一范式
它存在的问题如下:
- 数据冗余
- 更新异常
- 插入异常
- 删除异常
第二范式
若关系模式r属于第一范式,且每一个 非主属性 完全依赖于 码,则关系r属于第二范式
换句话说,就是当属于第一范式的r中,消除了 非主属性 对 码 的 部分函数依赖,那么就属于第二范式
第三范式
当属于第二范式的关系r消除了 非主属性 对 码 的 传递函数依赖 时,则关系r就属于第三范式
巴克斯范式
当属于第三范式的关系r消除了 主属性 对 码 的 部分函数依赖 和 传递函数依赖 时,则关系r就属于巴克斯范式
第四范式
第四范式限制关系模式的属性间 不允许 有 非平凡 且 非函数依赖 的 多值依赖
结语
我们可以知道不同的范式之间存在着递进的关系,也就是说高级的范式包含低级的范式,从而形成一个阶梯型,我们可以通过分解,将一个低级的范式转为更高级的范式,这种过程就是规范化
当然不是范式越高越好,我们应该根据自己的项目规模选择合适的范式,这样才能在规范性与性能之间找到一个平衡点,从而构建出一个高性能的应用