我们先来看一下范式化的优点,从前面的内容中呢,可以发现,范式化有以下优点,首先范式化的表呢,只有很少的,或者几乎是没有冗余数据的,其次呢范式化的更新操作呢,比反范式化要更快,最后呢范式化的表呢,通常要比反范式化的表呢更小,从上面来看呢,其实第一个优点,在范式化设计中呢,表的冗余要少,可以说是其最根本的优点了,才会使表更新的更快,由于没有冗余数据,所以表的大小通常也会更小,这些有点看上去很不错,如果只看其优点,就应该在表的设计中呢,对表进行完全的范式化设计,但是在前面的例子中,我们看到,并不是这样,所以我们要看看范式化的缺点是什么

从之前的例子中呢,我们不难看出,范式化的主要缺点是在于对于查询区查询需要关联多个表,在我们当前的应用中呢,对表对数据库进行读操作呢,肯定是要远远高于写操作的频率,那么这种情况下呢,可以提高写操作的性能,但是会降低读操作的性能,进行表关联的成本就很高的,而范式化设计中呢,就算是再简单的查询也要关联一次表才能够实现,所以我们对表要适当的反范式化操作,减少关联的数量,那么范式化设计的第二个缺点呢,就是使我们更难的对查询进行索引的优化,比如范式化可能会将经常一起使用的列呢,分在不同的表中,这些列如果是在同一个表中的话,本来是可以是同一个索引的,而在不同的表中呢,就无法把他放到同一个索引中了,以上就是范式化设计的缺点

同样我们要看一下反范式化设计的优缺点,从前面的例子中大家可以看到,反范式化优化后呢,经常一起查询的大部分数据呢,就会在一张表中,这样就可以很好的减少表的关联操作,而对于不需要关联的表呢,大多数情况下呢,最差的性能,也就是会进行全表扫描,就算数据比内存要大了很多,无法在内存中缓存所有表数据的情况下呢,使用全表扫描的时候呢,也比关联操作要好一些,因为如果我们使用的是innodb存储引擎,而对表的全表扫描呢,使用的是顺序的IO,这比关联的很多关联操作呢,要好的就在于大部分情况下呢,是随机IO,而反范式化的第二优点呢,我们对查询可以更好的优化,如果我们查询所使用的列呢,全在一张表中,我们就可以使用覆盖索引,以获得最好的查询性能,而如果查询锁使用的列在多张表中,我们就无法使用这种优化方式了

那么反范式化的缺点呢,其实就是我们为什么要进行范式化设计的原因,主要有以下两点,第一点就是反范式化的表结构呢,存在大量的数据冗余以及大量的数据维护异常,而第二点呢,对数据的修改需要修改多个地方,所以对数据的修改成本会更高,这个成本呢是CPU时间,磁盘IO等等这种硬件资源,或者系统资源,因为反范式化设计的表呢,修改数据时呢,通常要修改多个地方,也会浪费更多的资源了

所以完全的反范式化和完全的范式化设计呢,都不是最好的,我们在设计数据库结构时呢,结合使用范式化设计和反范式化设计,只有这样,才能设计出,符合我们需求的高性能数据库结构

到了这里我们就完成了我们数据库逻辑设计的阶段,下面我们就要进行我们的物理设计阶段了

范式化设计和反范式化设计优缺点相关推荐

  1. 数据库逻辑设计之 三大范式 及 反范式化 优缺点

    一.第一范式 原子性:要求属性具有原子性,不可再分解: 如学生(学号,姓名,性别,出生年月日),如果认为最后一列还可以再分成(出生年,出生月,出生日),它就不是一范式了,否则就是: 二.第二范式 惟一 ...

  2. 计算机反求设计的一般步骤,反求设计

    (重定向自逆向设计) 反求设计(Inverse Design / Reversion Design) [编辑] 什么是反求设计 反求设计是以先进的产品或技术为对象,通过深人分析,掌握其关键技术,在消化 ...

  3. Cassandra 数据模型设计,根据你的查询来制定设计——反范式设计本质:空间换时间...

    转自:http://www.infoq.com/cn/articles/best-practice-of-cassandra-data-model-design 不要把Cassandra model想 ...

  4. MySQL表结构设计之范式化和反范式化对比

    优点 缺点 范式 1.范式化的更新操作通常比反范式化要快,只需要修改较少数据. 2.范式化的表通常更小,可以更好地放在内存里,所以执行操作会更快. 复杂的查询语句在符合范式的schema上都可能需要至 ...

  5. 小蚂蚁学习mysql性能优化(8)--数据库结构优化--范式化和反范式化,水平分表,垂直分表...

    2019独角兽企业重金招聘Python工程师标准>>> 范式化和反范式化 范式化是指数据库设计的规范,目前说到范式化一般是指第三设计范式,也就是要求数据表中不存在非关键字段对任意候选 ...

  6. 数据库的范式化和反范式化模型

    在实际工作中,数据库数据模型的建立和选择对数据的"增删改查"具有直接影响,从基本角度来讲,数据模型具有"范式化"和"反范式化"两种,而在实际 ...

  7. mysql三大范式和反范式_数据库范式:三大范式、BC范式和反范式化

    一.什么是数据库范式 无规矩不成方圆,同理范式是数据表设计的一些约束和规范.为了让各个属性间的关系更加合理,减少数据冗余. 一般来说,主要满足 3NF 就可以了,因为范式过高,虽然对数据关系有更好的约 ...

  8. Mongodb的范式化和反范式化

    如果是涉及到一对多的数据格式,可使用文档引用范式化数据. 在一个,User对象中,如果涉及到工作信息或者联系地址的,这些信息会频繁的进行访问,可使用嵌入式文档对数据进行反范式化. 转载于:https: ...

  9. 反模式设计_设计模式:模式或反模式,这就是问题

    反模式设计 我最近遇到了Wiki页面" Anti-pattern" ,其中包含详尽的反模式列表. 其中一些对我来说很明显. 他们中的一些让我想了一下,其他的让我想了更多. 然后,我 ...

最新文章

  1. Junit的安装与使用
  2. 极客新闻——16、数据库设计中的5个常见错误
  3. JVM调优实战:G1中的to-space exhausted问题
  4. 原型模式、模板方法、迪米特法则、外观模式
  5. 【收藏】ArcGIS 10.8 for Desktop 完整安装教程(含win7/8/10 32/64位+下载地址+亲测可用+汉化)
  6. 如何写一个好的方法-读Clean Code 有感
  7. 【Java基础篇】你真的了解构造器吗?
  8. Acrobat Reader DC 2020 for mac(最好用的免费PDF阅读器) 2020新增功能
  9. 二次规划问题转换为半正定问题(QPtoSDP)
  10. HDFS中心缓存管理
  11. MAC中用ImageMagick转换图像
  12. 限时一个月,拯救三体文明!ETO大数据人才召集计划!
  13. mediacodec surfaceview解码失败
  14. 电脑内录录音软件,可选择录音来源
  15. html中如何设置ttf,CSS怎么引用外部ttf字体?
  16. 23种设计模式 -----Day01:简单工厂模式
  17. 如何一步一步地获取和风天气的天气数据
  18. 台式u盘显示计算机未响应怎么办,u盘插上去电脑没反应怎么办_u盘插上后无任何反应的解决教程-系统城...
  19. Norgen痰液液化缓冲液解决方案
  20. ipad2 越狱后安装slide enhancer 隐藏滑块解决方法总结

热门文章

  1. 大话设计模式—装饰模式
  2. 结队项目之需求分析与原型设计
  3. CF983B XOR-pyramid
  4. 记录一次dubbo项目实战
  5. 潮美之夜见证“夜拍王”诞生,荣耀10 GT照亮三里屯
  6. 项目笔记:2017年(SSM架构)
  7. [翻译]应用程序池和应用程序域的区别
  8. 第十二节 VMware View 6.0 菜鸟入门 部署和安装2008 R2 RDS服务
  9. JSP页面取当前日期 oracle导入导出 branch与tag
  10. 为什么建议使用Linux?从“白嫖”到精通,只需要这几步