转载自http://chenhaoxiang.cn/2018/02/04/2158/

数据库设计无非遵循的就是减少冗余量,第二点就是遵循三范式

第一范式(1NF)

确保每一列的原子性

也就是如果每一列都满足是不可再分的最小数据单元,则满足第一范式

比如
id name sex address
1 chx 0 湖南长沙

在这里,其实地址这个字段是可以再拆分的,拆分成省份,市区。
但是,在有的场景下,也可以不分。
需要根据具体的需求来看是否需要拆分
这里的保证原子性,具体看业务需求
如果仅仅只是起字符串的作用,在这里的地址,就可以不分。
加入是电商项目,需要分地区等等收货地址,在这里就可以再分细一些

第二范式(2NF)

主要是保证唯一
如果一个关系满足一范式,并且除了主键以外的其他列,都依赖于该主键,则满足第二范式。

通俗来讲,就是每一个表有且仅有一个主关键字,其他数据与主关键字一一对应。注意,这里的主关键字肯定是主键,但是主键不一定是主关键字。
参考百度百科:第二范式

一般订单表中,我们都不会用id来作为订单号
如果需要订单号,我们就要建一个orderid列
这样也是为了安全性着想。项目内部是用id进行通讯的,而外部,我们就使用orderid来进行通讯
另外就是,在分布式系统中,解决并发生成订单号
比如,抢票分布式系统中,如何保证订单号不会重复生成(也就是怎么保证订单的幂等性)
提前将订单号生成好,存放在redis中,在需要的时候,直接去redis中去取。这样就可以保证订单的幂等性

第三范式(3NF)

指表中的所有数据元素不但要能惟一地被主关键字所标识,而且它们之间还必须相互独立,不存在其他的函数关系。

其实理解起来就是不要有冗余数据
比如:
学号 姓名 所在系 系名称 系地址
在这里学号决定各个属性,由于是单个关键字,没有部分依赖的问题,肯定是2NF。但是却有大量的数据冗余,有关学生的所在系 系名称 系地址。

所以可以将一个表拆分为两个表
学号 姓名 所在系 和 所在系 系名称 系地址

注意这两个表之间的联系在所在系这个外关键字

不过有点时候,不一定要完全遵循第三范式
有的时候,为了业务需求,完全可以接收一些数据的冗余
比如一些视频网站。
课程表:
课程id 课程name 浏览量
1 java 2000

课程详情表:
详情id 详情name 详情浏览量 课程id
1 java基础1 1000 1
1 java基础2 1000 1
前面课程表如果没有浏览量,每次都需要查询详情表的sum,这样效率非常低,这个时候就可以在课程表增加一个浏览量字段

所以说,没有死的设计,只有具体的需求

虽然市面上还有4NF,5NF,但是主流还是3NF,其他的,有兴趣的朋友可以自己搜索了解一下

本文章由[谙忆]编写, 所有权利保留。
欢迎转载,分享是进步的源泉。

【MySQL性能优化】数据库设计三大范式(二)相关推荐

  1. (转载)简洁、明晰!数据库设计三大范式应用实例剖析

    (转载http://bbs.database.ccidnet.com/read.php?tid=325895) 简洁.明晰!数据库设计三大范式应用实例剖析 引言OL~eR{q   ;iC,$vZ 0} ...

  2. 数据库设计三大范式和ER模型

    1. 数据库设计之三范式的介绍 范式: 对设计数据库提出的一些规范,目前有迹可寻的共有8种范式,一般遵守3范式即可. 第一范式(1NF): 强调的是列的原子性,即列不能够再分成其他几列.(1NF强调字 ...

  3. mysql数据库设计三大范式_了解数据库设计三大范式

    数据库设计范式 什么是范式:简言之就是,数据库设计对数据的存储性能,还有开发人员对数据的操作都有莫大的关系.所以建立科学的,规范的的数据库是需要满足一些 规范的来优化数据数据存储方式.在关系型数据库中 ...

  4. 数据库设计三大范式【转载】

    数据库设计范式 什么是范式:简言之就是,数据库设计对数据的存储性能,还有开发人员对数据的操作都有莫大的关系.所以建立科学的,规范的的数据库是需要满足一些 规范的来优化数据数据存储方式.在关系型数据库中 ...

  5. 数据库基础 数据库设计三大范式

    转载自: http://www.cnblogs.com/knowledgesea/p/3667395.html 数据库设计范式 什么是范式:简言之就是,数据库设计对数据的存储性能,还有开发人员对数据的 ...

  6. 数据库设计三大范式,还记得吗?

    点击上方关注 "终端研发部" 设为"星标",和你一起掌握更多数据库知识 来源:https://www.cnblogs.com/knowledgesea/p/36 ...

  7. 数据库设计三大范式之第一范式不可违反

    首先关于数据库三大范式是什么,我们不再多说,网上很多博客写的都很好,例如以下链接: https://blog.csdn.net/qq_26878363/article/details/81533273 ...

  8. Mysql基础-------初识数据库,三大范式

    PDF To Markdown Converter 数据库简介 1.1 简介 数据库(DataBase,DB):指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合 ...

  9. 数据库设计三大范式应用实例剖析(转载)

    引言 数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的.结构明晰的,同时,不会发生插入(insert).删除(delete)和更新(update)操作异常.反之则是乱七八糟, ...

最新文章

  1. VS2005快捷键大全
  2. python mysql example_Python_Example_ Pycharm(python) 与 数据库(MySQL) 连接学习/示例
  3. 执行execute时对象名 retime_record 无效_MyBatis 的执行流程怎么可以讲的这么透彻
  4. matlab7.0编辑运行,手把手解答win10系统运行matlab7.0时提示Runtime error的操作方案
  5. 叮叮叮~~~~网络面试题(一)来了☺
  6. Linux命令学习:Linux中more和less命令以及查找用法
  7. (实验)使用Protel 99se绘制2114存储器芯片(详细)
  8. python学习-02(数据类型、字符串、列表、元祖、字典)
  9. 【Linux】创建、修改和删除用户组(groupadd | groupmod | groupdel)
  10. 解决 ERROR: Could not find a version that satisfies the requirement 的一种思路
  11. 网易云音乐API使用
  12. 教育类小程序APP开发
  13. Redis实现分布式锁(setnx、getset、incr)以及如何处理超时情况(二)
  14. Innovus/Encounter Floorplan命令合集(二)
  15. 水文监测RTU遥测终端机的设计与实现
  16. 刘德华--1野性的自然
  17. 本地部署 VS 云服务
  18. rock64 linux,挑战树莓派:PINE64 发布 Rock64 Media Board Computer 开发者主板
  19. 带瀑布流的电钢琴_‎App Store 上的“完美钢琴”
  20. 如何避免碎片化知识的危害

热门文章

  1. cocos2d-x游戏实例(23)-简易动作游戏(1)
  2. 原始套接字与sniffer
  3. ElasticSearch探索之路(一)初识ElasticSearch:特点、应用场景、架构设计、基本概念
  4. 在linux中解压.tgz
  5. 机会难得,当当网抄底(五折+专属大额优惠码)优惠,双十一我囤了这些书!...
  6. 下次遇到嚣张的候选人就先这么问:系统变慢了你怎么搞?
  7. Go 语言能取代 Java,成为下一个 10 年的王者吗?
  8. 音视频技术开发周刊 | 206
  9. 【线上分享】移动音视频SDK工程实践之数据采集和处理
  10. Oceanus:基于Apache Flink的一站式实时计算平台