失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 通俗易懂讲解数据库三大范式

通俗易懂讲解数据库三大范式

时间:2020-10-14 06:25:49

相关推荐

通俗易懂讲解数据库三大范式

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

首先来一个作为示例的表

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

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

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

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

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

,究竟还有哪些问题呢???

表存在的问题

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

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

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

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

接下来介绍几个概念

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

接下来,跟大家通俗易懂的讲解一下上面的那几个概念

函数依赖比如A依赖B,这里你可以这样来理解,孩子依赖于父母

A就是孩子,B就是父母,这里的孩子指的是五六岁的小孩子,还不懂事的孩子!!!是不是这个道理?哈哈,因为孩子依赖于父母,所以通过父母,我们能够确定孩子的性格是怎样的,是这样的吧?父母可是孩子最亲的人啊,父母不确定,那还有谁确定呢?相反,通过孩子能知道父母的性格是怎样的吗?那肯定不行啊,孩子才几岁啊,哪懂这些!!!

同时还要注意的是,这里的孩子不止一个,可能有多个孩子(多个字段),这里的父母当然也不是一个人,肯定是两个人(这里假设是多个人,即多个字段,其实这里的父母就是后面要介绍的码)!

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

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

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

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

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

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

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

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

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

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

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

然后将重复项删除掉

但是但是,问题还没有解决完呢?可千万别高兴的太早

还有两个问题亟待解决,如下图

上图的两个问题,自己分析一下,看看是不是?

所以为了解决这两个问题,第三范式隆重登场

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

怎么修改呢?

很简单,把依赖的两个非主属性,提取出来就行了

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

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

好了,这就是数据库三大范式,看懂了吗?

小结一下:

第一范式:看外表

第二范式:分居,难以捉摸的和父母睡,容易捉摸的和其中一个睡

第三范式:孩子之间不能相互依赖,一旦孩子之间出现依赖,就立马将出现相互依赖的孩子赶出家门

再次总结

第一范式:外表

第二范式:分居

第三范式:赶出家门

如果觉得《通俗易懂讲解数据库三大范式》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。