Mysql DBA基础第一篇:范式和反范式

一.首先,范式是什么?

范式是数据库规范化的一个手段, 是设计数据库表结构时的原理,用于减少数据的冗余和增强数据的一致性。

什么是规范化?

1.规范化通常是指将大表分成较小的表,并且定义他们之间的关系。
例子(范式):
在这里插入图片描述上图依次是课程表,学生表,以及学生课程关系表。
我们可以通过三张表的join得出这个学生上的是什么课程。

规范化的目的是什么?

1.避免冗余(重复)存放数据。
例子(反范式):
在这里插入图片描述设想一下,在范式的情况下,张三和李四要上英语数学课是这样的(这是没有重复的):
在这里插入图片描述而在反范式的情况下是这样的(是存在重复的,性别,课程,名称都存在了重复):
在这里插入图片描述数据规范化(范式)的实质可以归纳为:简单写,复杂读。
简单写:对于不同的信息,只要修改不同的表即可。(比如我想修改学生信息,或者新增课程,只要修改对应的一张表即可)
复杂读:反范式的情况下,我们只要查找一张表就能得出我们想要的结果。而范式得情况下我们需要join另外的两张表才能知道张三上的什么课,如果连接的表很多,将会导致很多随机I/O,那么查询可能会非常慢。

二.反范式是什么?

反范式是试图通过增加冗余数据来优化数据库读取性能的过程。
就像上面的例子,你读一张表快,还是join两张表那?
反范式的实质可以归纳为:简单读。

三.总结

在最初的表结构设计时应该按照范式的来,这样写代码会比较简单一些,因为更加的清晰明了,但是随着数据量的增长或者访问量的上升时应该考虑到使用反范式(也就是冗余一些字段),来提升读的性能。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值