MySql数据库三大范式与反范式详细解说

简介

三大范式是为了在设计中更好的解决数据冗余,数据有效性检查,提高存储效率考虑。提出的三大范式。但其实在工程项目中,有时候为了效率考虑,很多时候并不会按照三大范式来设计数据库。
下面我们来了解一下数据库的三大范式与反范式。

第一范式 (1NF)

每个表的每一列都要保持它的 原子性 也就是表的每一列都是不可分割的
      违反第一范式的示范:
在这里插入图片描述

      进行修改后:
在这里插入图片描述

第二范式 (2NF)

要在满足第一范式的基础上,每个表都要保持 唯一性 也就是表的非主键字段要完全依赖主键字段。
    我们可以从上图看出表中与学生主键完全依赖的字段有,课程,和分数。
    而其他的字段只是与主键有一点点的依赖关系所以我们把它分拆为两张表:
在这里插入图片描述

在这里插入图片描述

在完成了第二范式之后我们可以发现我们消除了很多的冗余数据

第三范式 (3NF)

要在满足第一和第二范式的基础上,表中不能产生传递依赖,要消除表中的
冗余性然后我们再次对表进行拆分修改

在这里插入图片描述
以上就完成了三大范式的要求

反范式

没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。具体做法是: 在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,减少了查询时的关联,提高查询效率。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值