关系型数据库的范式

在程序开发中,已经使用数据库很多年了。有人问我数据的的三大范式是什么,额。。。我真的忘了,今天就来复习一下吧。

数据库范式是怎么来的?

为了避免关系数据库中的数据操作(增、删、改、查)异常、数据冗余、节省数据空间、便于维护数据等而制定/引入的规则,这种规则就是我们所说的范式。它是符合一定规则的数据模式的集合。

关系数据库有六大范式,即第一至第六范式(从低到高主要有:1NF、2NF、3NF、BCNF、4NF、5NF)
范式是评价数据库模式规范化程度的标准。

数据库通常都需要满足的范式有第一、第二、第三范式。

什么是三大范式?

第一范式:确保数据表中每列都不可再分割、分解,也就是原子性约束。
第二范式:要求数据表中的每列都和主键有依赖关系,即依赖于主键。实现数据表中每一行数据的唯一性。
第三范式:要求数据表中每列的数据都要和主键有直接关联。也就是属性的冗余性约束。

反范式化

不能满足范式的数据库设计就是反范式化。

在程序设计中,是允许数据库表中有一些反范式化设计出现的。通常这种设计的初衷是:以数据库的空间来节省程序的响应时间。

范式化/反范式化的优缺点
范式化优点:

减少数据冗余
数据更新操作时间更短,程序反应更迅速。
数据表更简单、便于维护

范式化缺点:

范式化导致数据表的关联增多,这就导致数据查询是程序的性能会降低
增加索引的优化难度

反范式化的优点:

减少表关联
索引优化难度低

反范式化的缺点:

数据表中存在数据冗余,增加了数据表的维护成本
数据表复杂化,不利于数据表中数据的更改

**以上纯属本人个人总结,可能略有错误,敬请见谅。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序螺丝钉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值