数据库三大范式就是数据库的设计的3个规范,通过这3个规范,设计出的表基本上比较正确了,同时你也可以用这3个规范来检查一下某个表设计得是否规范!!! 如果你没听懂这段话是什么意思,不要慌,往下看,你肯定能看懂

首先来一个作为示例的表

下面的所有讲解都是基于这张表的

算了,先把3个范式的概念说一下吧,看不懂没关系

第一范式:每一列都是不可分割的原子数据项 (啥意思?就是每一列是独立的,不准有Excel表格中的那种合并单元格出现,这样解释是不是通俗易懂?!!)


修改为下面这样就符合第一范式了

但这个表可是光修改成这样还是不够的,这个表还有很多地方设计的不够规范,上面只是改了一处地方,接下来还有修改很多地方,才能符合规范
,究竟还有哪些问题呢???

表存在的问题


首先第一个问题---------->冗余问题,表中存在大量的冗余数据,不简洁,浪费存储资源

第二个问题,添加数据困难,比如要添加一个新的系,则很难添加进去,不信你看看!!


我要添加一个计算机系,和老师,难道你就向上面那样添加吗?肯定不行啊,这样添加,也太不符合规范了吧!!!竟然还有两个数据凸出出来了,这像什么话????

第三个问题,数据删除存在问题!!假如我把张无忌的信息删除掉,那经济系也跟着删除掉了,是不是,这怎么行呢?简直乱来啊,不信你看看下图

接下来介绍几个概念


咋一看上面的几个概念,这都讲的啥啊,这么绕,怎么看得懂啊,什么什么依赖啊,还那么多箭头,指来指去的

接下来,跟大家通俗易懂的讲解一下上面的那几个概念
函数依赖 比如A依赖B,这里你可以这样来理解,孩子依赖于父母
A就是孩子,B就是父母,这里的孩子指的是五六岁的小孩子,还不懂事的孩子!!!是不是这个道理?哈哈,因为孩子依赖于父母,所以通过父母,我们能够确定孩子的性格是怎样的,是这样的吧?父母可是孩子最亲的人啊,父母不确定,那还有谁确定呢?相反,通过孩子能知道父母的性格是怎样的吗?那肯定不行啊,孩子才几岁啊,哪懂这些!!!
同时还要注意的是,这里的孩子不止一个,可能有多个孩子(多个字段),这里的父母当然也不是一个人,肯定是两个人(这里假设是多个人,即多个字段,其实这里的父母就是后面要介绍的码)!

完全函数依赖,某一个孩子(某个字段)他是完全依赖父母两个人的,这个孩子比较难捉摸一点,单凭父母中的任意一个,还无法全面了解,必须父母两个人才能完全了解

部分函数依赖,某一个孩子(某个字段)他比较容易捉摸,父母中只要一个人就可以确定这个孩子的性格

传递函数依赖 比较容易理解,就是A依赖B,B又依赖C,所以A就是传递依赖C,不是直接依赖C

码 这里的父母就是码!!!是不是so easy

主属性 就是父亲或者母亲,这两者就叫做主属性

非主属性 孩子就叫做非主属性

可以看出来,这张表中父母就是学号和课程名称,通过学号和课程名称就可以唯一确定其他的属性值,所以学号和课程这两个属性就是码

============================

好了,概念终于介绍完了,是不是很简单,接下来就要根据第二范式来进行修改了

第二范式概念:在1NF的基础上,非码属性必须完全依赖主码属性,就是所有的孩纸必须完全依赖于父母,不允许有容易捉摸的孩子出现,要将孩子全部变为难以捉摸的,因为难以捉摸的孩子比较成熟稳重,哈哈,乱猜的,父母肯定是希望自己的孩子成熟稳重


怎么修改呢,就将难以捉摸的孩子和父母放在一块,将容易捉摸的孩子与父母中其中一个放在一块

然后将重复项删除掉

但是但是,问题还没有解决完呢?可千万别高兴的太早
还有两个问题亟待解决,如下图

上图的两个问题,自己分析一下,看看是不是?
所以为了解决这两个问题,第三范式隆重登场

第三范式概念:在2NF基础上,非主属性之间不能有依赖关系,就是非主属性不能依赖于另外一个非主属性(说简单点,就是在2NF基础上消除传递依赖)



怎么修改呢?
很简单,把依赖的两个非主属性,提取出来就行了

这样上面的两个问题就成功解决了!自己分析一下,很简单的

=================================================
好了,这就是数据库三大范式,看懂了吗?
小结一下:
第一范式:看外表
第二范式:分居,难以捉摸的和父母睡,容易捉摸的和其中一个睡
第三范式:孩子之间不能相互依赖,一旦孩子之间出现依赖,就立马将出现相互依赖的孩子赶出家门

再次总结

第一范式:外表

第二范式:分居

第三范式:赶出家门

通俗易懂讲解数据库三大范式相关推荐

  1. mysql三大范式 答案_数据库三大范式定义与理解

    数据库三大范式定义与理解 发布时间:2018-06-04 10:24, 浏览次数:291 一.第一范式(1NF) 要求: 要求:每一个分量必须是不可分的数据项. 特点: 1)有主键,且主键不能为空. ...

  2. 数据库三大范式(1NF,2NF,3NF)及ER图

    数据库三大范式(1NF,2NF,3NF)及ER图 百度官方解释: 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据 ...

  3. 3nf mysql表_数据库三大范式(1NF,2NF,3NF)及ER图

    数据库三大范式(1NF,2NF,3NF)及ER图 百度官方解释: 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据 ...

  4. Mysql数据库与数据库三大范式

    作者:左新宇 链接:https://zhuanlan.zhihu.com/p/59394493 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. MySQL 常用命令 ...

  5. 数据库三大范式详解,部分依赖、完全依赖、传递依赖

    数据库三大范式详解以及部分.完全.传递依赖 一.第一范式 二.第二范式 三.第三范式 四.部分依赖.完全依赖.传递依赖 完结撒花 一.第一范式 数据库每一列都是不可分的基本数据项(原子数据项) 就比如 ...

  6. 浅显易懂 SQLite3 笔记(08)— 数据库三大范式

    文章目录 前言 一.函数依赖 1.第一定义 2.第二定义 3.第三定义 二.数据库范式 1.第一范式 2.第二范式 3.第三范式 4.范式关系图 5.范式对查询的影响 总结 前言    本篇,我们将学 ...

  7. 数据库三大范式(重要)

    转自微信 上周四下午的VIP试听课是由芒果给大家介绍的MySQL的一些基础知识,在这里芒果给大家分享其中的一部分内容--对数据库三大范式做个小介绍: 范式(数据库的设计范式)是符合某一种级别的关系模式 ...

  8. 数据库三大范式是什么

    数据库三大范式是什么? 第一范式:每个列都不可以在拆分. 第二范式:在第一范式的基础上,非主键列完全依赖于逐渐,而不能是依赖于主键的一部分. 第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖 ...

  9. 数据库三大范式详解实例图文教程

    title: 数据库三大范式详解实例图文教程 date: 2021-09-04 20:29:31 tags: 数据库 MySQL categories: 数据库 cover: https://cove ...

  10. 关系型数据库三大范式介绍

    文章目录 一.为什么使用范式? 二.什么是数据库三大范式? 1.第一范式 2.第二范式 3.第三范式 三.数据库设计一定要遵循三大范式吗? 四.总结 一.为什么使用范式? 要想设计-个好的关系,必须使 ...

最新文章

  1. ASP.NET文件的下载
  2. 详解动态规划最长公共子序列--JavaScript实现
  3. 100道JS构造函数面试题
  4. Flask+nginx负载均衡综合使用
  5. JavaOne 2015 –又一年,又向前迈进了一步
  6. 使用OCCI连接Linux下Oracle数据库
  7. android 时间格式 各种转换
  8. 利用Metaweblog技术的API接口同步到多个博客网站(详细)
  9. 网络节点是计算机与网络的什么,网络节点是什么意思?
  10. VSCode配置cpp环境
  11. java培训一般有哪些课程_java培训有哪些课程
  12. android系统裁剪方法
  13. 全世界最全牛人的博客
  14. 成都拓嘉辰丰:拼多多商家是否可以代销
  15. 【数据分析实例】 2021年十万条厦门招聘数据分析
  16. BIT软件工程个人项目——数独sudoku
  17. BufferedInputStream。。。。。。。BufferedReader和BufferedWriter
  18. Dubbo监控中心Dubbo-admin安装
  19. 此生,依旧是我未看破红尘。
  20. 大赢家软件测试工资,C++实验:某学校对教师每月工资的计算规定如下:固定工资+课时补贴。...

热门文章

  1. 单目3D目标检测之入门
  2. 怎样彻底卸载电脑上的软件
  3. linux img 转 iso,Ubuntu下将img 转化成iso
  4. 操作系统(四)---MS-DOS微软磁盘操作系统
  5. 计算机英语性考任务答案,国开电大理工英语1单元自测7形考任务答案
  6. 研究生看论文的看的是什么
  7. 双目视觉焦距_双目视觉成像原理
  8. 语音识别工具Sphinx4
  9. verilog实现设计3*8译码器
  10. 那一年马云34岁,李彦宏30岁,马化腾27岁