通俗易懂讲解数据库三大范式
数据库三大范式就是数据库的设计的3个规范,通过这3个规范,设计出的表基本上比较正确了,同时你也可以用这3个规范来检查一下某个表设计得是否规范!!! 如果你没听懂这段话是什么意思,不要慌,往下看,你肯定能看懂
首先来一个作为示例的表
下面的所有讲解都是基于这张表的
算了,先把3个范式的概念说一下吧,看不懂没关系
第一范式:每一列都是不可分割的原子数据项 (啥意思?就是每一列是独立的,不准有Excel表格中的那种合并单元格出现,这样解释是不是通俗易懂?!!)
修改为下面这样就符合第一范式了
但这个表可是光修改成这样还是不够的,这个表还有很多地方设计的不够规范,上面只是改了一处地方,接下来还有修改很多地方,才能符合规范
,究竟还有哪些问题呢???
表存在的问题
首先第一个问题---------->冗余问题,表中存在大量的冗余数据,不简洁,浪费存储资源
第二个问题,添加数据困难,比如要添加一个新的系,则很难添加进去,不信你看看!!
我要添加一个计算机系,和老师,难道你就向上面那样添加吗?肯定不行啊,这样添加,也太不符合规范了吧!!!竟然还有两个数据凸出出来了,这像什么话????
第三个问题,数据删除存在问题!!假如我把张无忌的信息删除掉,那经济系也跟着删除掉了,是不是,这怎么行呢?简直乱来啊,不信你看看下图
接下来介绍几个概念
咋一看上面的几个概念,这都讲的啥啊,这么绕,怎么看得懂啊,什么什么依赖啊,还那么多箭头,指来指去的
接下来,跟大家通俗易懂的讲解一下上面的那几个概念
函数依赖 比如A依赖B,这里你可以这样来理解,孩子依赖于父母
A就是孩子,B就是父母,这里的孩子指的是五六岁的小孩子,还不懂事的孩子!!!是不是这个道理?哈哈,因为孩子依赖于父母,所以通过父母,我们能够确定孩子的性格是怎样的,是这样的吧?父母可是孩子最亲的人啊,父母不确定,那还有谁确定呢?相反,通过孩子能知道父母的性格是怎样的吗?那肯定不行啊,孩子才几岁啊,哪懂这些!!!
同时还要注意的是,这里的孩子不止一个,可能有多个孩子(多个字段),这里的父母当然也不是一个人,肯定是两个人(这里假设是多个人,即多个字段,其实这里的父母就是后面要介绍的码)!
完全函数依赖,某一个孩子(某个字段)他是完全依赖父母两个人的,这个孩子比较难捉摸一点,单凭父母中的任意一个,还无法全面了解,必须父母两个人才能完全了解
部分函数依赖,某一个孩子(某个字段)他比较容易捉摸,父母中只要一个人就可以确定这个孩子的性格
传递函数依赖 比较容易理解,就是A依赖B,B又依赖C,所以A就是传递依赖C,不是直接依赖C
码 这里的父母就是码!!!是不是so easy
主属性 就是父亲或者母亲,这两者就叫做主属性
非主属性 孩子就叫做非主属性
可以看出来,这张表中父母就是学号和课程名称,通过学号和课程名称就可以唯一确定其他的属性值,所以学号和课程这两个属性就是码
============================
好了,概念终于介绍完了,是不是很简单,接下来就要根据第二范式来进行修改了
第二范式概念:在1NF的基础上,非码属性必须完全依赖主码属性,就是所有的孩纸必须完全依赖于父母,不允许有容易捉摸的孩子出现,要将孩子全部变为难以捉摸的,因为难以捉摸的孩子比较成熟稳重,哈哈,乱猜的,父母肯定是希望自己的孩子成熟稳重
怎么修改呢,就将难以捉摸的孩子和父母放在一块,将容易捉摸的孩子与父母中其中一个放在一块
然后将重复项删除掉
但是但是,问题还没有解决完呢?可千万别高兴的太早
还有两个问题亟待解决,如下图
上图的两个问题,自己分析一下,看看是不是?
所以为了解决这两个问题,第三范式隆重登场
第三范式概念:在2NF基础上,非主属性之间不能有依赖关系,就是非主属性不能依赖于另外一个非主属性(说简单点,就是在2NF基础上消除传递依赖)
怎么修改呢?
很简单,把依赖的两个非主属性,提取出来就行了
这样上面的两个问题就成功解决了!自己分析一下,很简单的
=================================================
好了,这就是数据库三大范式,看懂了吗?
小结一下:
第一范式:看外表
第二范式:分居,难以捉摸的和父母睡,容易捉摸的和其中一个睡
第三范式:孩子之间不能相互依赖,一旦孩子之间出现依赖,就立马将出现相互依赖的孩子赶出家门
再次总结
第一范式:外表
第二范式:分居
第三范式:赶出家门
通俗易懂讲解数据库三大范式相关推荐
- mysql三大范式 答案_数据库三大范式定义与理解
数据库三大范式定义与理解 发布时间:2018-06-04 10:24, 浏览次数:291 一.第一范式(1NF) 要求: 要求:每一个分量必须是不可分的数据项. 特点: 1)有主键,且主键不能为空. ...
- 数据库三大范式(1NF,2NF,3NF)及ER图
数据库三大范式(1NF,2NF,3NF)及ER图 百度官方解释: 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据 ...
- 3nf mysql表_数据库三大范式(1NF,2NF,3NF)及ER图
数据库三大范式(1NF,2NF,3NF)及ER图 百度官方解释: 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据 ...
- Mysql数据库与数据库三大范式
作者:左新宇 链接:https://zhuanlan.zhihu.com/p/59394493 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. MySQL 常用命令 ...
- 数据库三大范式详解,部分依赖、完全依赖、传递依赖
数据库三大范式详解以及部分.完全.传递依赖 一.第一范式 二.第二范式 三.第三范式 四.部分依赖.完全依赖.传递依赖 完结撒花 一.第一范式 数据库每一列都是不可分的基本数据项(原子数据项) 就比如 ...
- 浅显易懂 SQLite3 笔记(08)— 数据库三大范式
文章目录 前言 一.函数依赖 1.第一定义 2.第二定义 3.第三定义 二.数据库范式 1.第一范式 2.第二范式 3.第三范式 4.范式关系图 5.范式对查询的影响 总结 前言 本篇,我们将学 ...
- 数据库三大范式(重要)
转自微信 上周四下午的VIP试听课是由芒果给大家介绍的MySQL的一些基础知识,在这里芒果给大家分享其中的一部分内容--对数据库三大范式做个小介绍: 范式(数据库的设计范式)是符合某一种级别的关系模式 ...
- 数据库三大范式是什么
数据库三大范式是什么? 第一范式:每个列都不可以在拆分. 第二范式:在第一范式的基础上,非主键列完全依赖于逐渐,而不能是依赖于主键的一部分. 第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖 ...
- 数据库三大范式详解实例图文教程
title: 数据库三大范式详解实例图文教程 date: 2021-09-04 20:29:31 tags: 数据库 MySQL categories: 数据库 cover: https://cove ...
- 关系型数据库三大范式介绍
文章目录 一.为什么使用范式? 二.什么是数据库三大范式? 1.第一范式 2.第二范式 3.第三范式 三.数据库设计一定要遵循三大范式吗? 四.总结 一.为什么使用范式? 要想设计-个好的关系,必须使 ...
最新文章
- ASP.NET文件的下载
- 详解动态规划最长公共子序列--JavaScript实现
- 100道JS构造函数面试题
- Flask+nginx负载均衡综合使用
- JavaOne 2015 –又一年,又向前迈进了一步
- 使用OCCI连接Linux下Oracle数据库
- android 时间格式 各种转换
- 利用Metaweblog技术的API接口同步到多个博客网站(详细)
- 网络节点是计算机与网络的什么,网络节点是什么意思?
- VSCode配置cpp环境
- java培训一般有哪些课程_java培训有哪些课程
- android系统裁剪方法
- 全世界最全牛人的博客
- 成都拓嘉辰丰:拼多多商家是否可以代销
- 【数据分析实例】 2021年十万条厦门招聘数据分析
- BIT软件工程个人项目——数独sudoku
- BufferedInputStream。。。。。。。BufferedReader和BufferedWriter
- Dubbo监控中心Dubbo-admin安装
- 此生,依旧是我未看破红尘。
- 大赢家软件测试工资,C++实验:某学校对教师每月工资的计算规定如下:固定工资+课时补贴。...