1.第一范式(1NF)(列不能再拆分)

原子性,字段不可分(列的信息),只要是关系型数据库,就自动满足1NF;

2.第二范式(2NF)(主键唯一,且被依赖)

在第一范式基础上建立的,即满足第二范式的必须先满足第一范式。要求DB表中的每个实例或行必须可以被唯一区分,通常设计一个主键来实现,其他属性完全依赖主键。

3.第三范式(3NF)(表与其他表间没有关联)

必须满足第二范式,要求一个数据库表中不包含已在其他表中已包含的非主键字段。即:表的信息,如果能够被推导出来,就不应该单独设计一个字段来存放(能尽量外键join就用外键join)。很多时候,为满足第三范式往往会把一张表分成多张表,如:

4.反范式

通过增加冗余或重复的数据来提高数据库的读性能。

具体做法:在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,减少了查询时的关联,提高查询效率,因为在数据库的操作中查询的比例要远远大于DML的比例。但是反范式化一定要适度,并且在原本已满足三范式的基础上再做调整。

实际,比如:可以减少关联查询时,jion表的次数,如:在3中,增加字段role_name。

5.范式化优点及缺点:

优点:

.更新操作通常比反范式化要快;

.范式化的表通常更小,没有数据冗余,更省数据库空间,同时可以放在内存,所以执行操作会更快。

.很少有多余数据意味着检索列表数据更少需要distinct或group by语句。

.数据较好的范式化,只有很少或没有重复数据,所以,只需要修改更少的数据。

缺点:

.范式化schema通常需要关联,可能使一些索引策略无效。

.范式等级越高,设计出来的表越多,可能会增加查询需要的时间。

6.反范式化优点及缺点:

优点:

.可以很好避免关联。

.如果不需要关联表,对大部分查询最差情况,没有使用索引,全表扫描,当数据比内存大时,可能比关联快,避免随机IO

7.实际经验

实际中,不会极端使用范式化或反范式化schema,可能使用部分范式化schema、缓存表、及其他技巧。

最常见反范式化数据方法:复制或缓存,在不同表中存储相同的特定列,比如:实际业务涉及的表非常多,表间连接会比较多,对表的操作要尽量快,通常会使用反范式设计,用空间换时间,把数据冗余在多张表中,查询时可以减少或避免表间关联。

mysql 范式化_MySQL-范式和反范式相关推荐

  1. mysql 怎么反选_MySQL 范式与反范式的选择 | 剑花烟雨江南

    对于任何给定的数据通常有很多种表示方法,从完全的范式化到完全的反范式话,以及两者的折中.在范式化的数据库中,每个事实数据会出现并只出现一次.相反,在反范式化的数据库中,信息是冗余的. 如果不熟悉范式和 ...

  2. MySQL之库表设计篇:一到五范式、BC范式与反范式详解

    引言 MySQL的库表设计,在很多时候我们都是率性而为,往往在前期的设计中考虑并不全面,同时对于库表结构的划分也并不明确,所以很多时候在开发过程中,代码敲着敲着会去重构某张表结构,甚至大面积重构多张表 ...

  3. 数据库设计之范式与反范式

    范式设计 什么是范式? 范式来自英文Normal Form,简称NF.要想表之间设计-个好的关系,必须使关系 满足一定的约束条件,此约束已经形成了规范,分成几个等级,一级比一级要求 得严格.满足这些规 ...

  4. Java学习笔记:数据库中的范式和反范式

    范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法.数据库的设计范式是数据库设计所需要满足的规范.只有理解数据库的设计范式,才能设计出率.优雅的数据库,否则可能会设计出 ...

  5. 数据库中的范式和反范式详解!

    范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法.数据库的设计范式是数据库设计所需要满足的规范.只有理解数据库的设计范式,才能设计出率.优雅的数据库,否则可能会设计出 ...

  6. Java学习之数据库中的范式和反范式

    范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法.数据库的设计范式是数据库设计所需要满足的规范.只有理解数据库的设计范式,才能设计出高效率.优雅的数据库,否则可能会设 ...

  7. 数据库三范式与反范式详解(一看就懂)

    目 录 范式与反范式 1.第一范式 2.第二范式 3.第三范式 4.反范式 范式与反范式 范式化设计 通过满足下面提出的三条范式规则,尽可能的避免出现数据冗余 因为数据冗余会带来,数据UPDATE更新 ...

  8. 数据库设计的三范式和反范式

    数据库设计的三范式和反范式 范式的概念 三范式 范式一 范式二 范式三 反范式 总结 范式的概念 为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式 ...

  9. 关系数据库的范式和反范式

    为什么80%的码农都做不了架构师?>>>    范式:英文名称是 Normal Form,它是英国人 E.F.Codd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模型后总结 ...

最新文章

  1. python制作小工具_利用Python制作翻译小工具
  2. JAVA基础----java中E,T,?的区别?
  3. Gradle project refresh failed
  4. rust(68)-rust enum
  5. python如何查询数据库_python如何实现查询sql数据库并生成html文件?
  6. 使用MetaPost绘制流程图
  7. CSS日常公用样式与一些解决方案
  8. hadoop2.x的变化
  9. C#设计模式之2-抽象工厂模式
  10. 苹果x和xsmax有什么区别_苹果手机不卡的真相是什么,安卓和iOS有本质区别
  11. OSSIM识别APT的三板斧
  12. centos /bin /sbin /usr/bin /usr/sbin 目录的说明
  13. SpringBoot之可视化api
  14. vim编辑器中常用的命令
  15. Unity-Some objects were not cleaned up when closing the scene.
  16. 洲际酒店集团加速布局西部世界,全力打造高品质中国山地旅游
  17. Numpy、Pandas、SciPy、Scikit-Learn、Matplotlib的关系以及学习资料
  18. 校招----青颖飞帆二面面经
  19. XSS是什么?如何防御?手摸手教你Springboot配置XSS防御,深入代码解析!
  20. 用文字编辑图片的神器-Imagic

热门文章

  1. 印度孟买机器人餐厅_2020,送餐机器人的海外市场爆发之年
  2. 会计云课堂实名认证后怎么更改_离职了,税务局的会计信息还是我,老板就不更改,怎么办?...
  3. linux在bin下加入ssh,移植 ssh 到开发板
  4. php百度坐标转腾讯坐标,PHP腾讯与百度坐标转换
  5. kernal tch 下载 天正_tch kernal.arx
  6. mysql 副本 同步_副本机制与副本同步
  7. mac安装多php环境变量配置,Mac如何安装多个php版本
  8. AttributeError: 'NoneType' object has no attribute 'astype'
  9. Mysql中的转义字符
  10. 百度MIP移动页面加速——不只是CDN