用舔狗的方式去打开——>数据库范式,让你迅速学会数据库六大范式



前言

                                         -------------写在前面-------------

学习数据库时,对范式总是一知半解,所以打算用故事去引导学习,希望我的舔狗经历和学习引起共鸣,所以把自己的心得体会写出来,给大家陆续分享出来,如果觉得有帮助可以点赞收藏支持一下,如果能关注一下就再好不过了ヾ(≧▽≦*)o,之后还会分享许多干货,话不多说,开始学习


一、范式的概念是什么?

范式:设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求(设计标准)被称为不同的范式。
1NF的要求是最小的,越大要遵守的条条框框就越多。

范式你可以想象为初恋和你的距离,1NF就是亲密度最低的普通关系,随着关系升温到了5NF亲密无间,

在这里插入图片描述

二、范式解析

第一范式(常用)

第一范式是最基本的范式,本质就是数据表的字段(注意数据表里面属性又称为字段)无法再分割。

举个例子
在这里插入图片描述
但是地址就可以分为 省 、市、详细地址 ,又或者说是 户籍所在地、现居地址等等多种(具体问题具体看待)。所以这个表就不满足第一范式的数据库,自然而然不是关系数据库!( 如果学过非关系型数据库,例如Hbase,里面的字段就可分,例如进货字段又分为数量、单价字段)

地址拆分为 -->户籍所在地、现居地址
重新设计为
在这里插入图片描述

萍水相逢

女神、普通人、我、类比字段,这么多人之间有很多关系理不清,但是不重要我们相聚在一起,同时我们都是无法分割的字段,所以现在我们是1NF范式。
在这里插入图片描述

第二范式(常用)

第二范式:若某关系R属于第一范式,且每一个非主属性完全函数依赖于任何一个候选码,则关系R属于第二范式。(看不懂没关系)
本质就是所有的字段都和的主键有关系,(通过主键去确认其他字段)
需要解释一下关键词

候选码:候选码(字段组)确定,其他的也就确定了。例如在名字不重复的情况下,可以通过 学号、姓名确定其他字段的值,学号、姓名就是候选码。

主属性:所有候选码的属性称为主属性

非主属性:所有候选码的属性以外的称为非主属性

部分函数依赖
例如这个表
在这里插入图片描述
在这里插入图片描述
完全函数依赖
所有的非主属性都和主键相关。
在这里插入图片描述
Y{学号}—>姓名
Y{学号}—>手机
Y{学号}—>地址

一见倾心

女神认识我们每一个人,这种微妙的关系称为完全函数依赖,这个时候就是2NF关系。
在这里插入图片描述
非2NF范式例子

女神带上她的孩子找到我,我很难受,出去散散心。(这种让人0疼关系就是函数依赖)
在这里插入图片描述
结果女神走了,但是她的孩子找到我了,我更难过了(这种让人 00 疼关系就是部分函数依赖)


女神和他孩子都是主属性,女神的孩子和我这个非主属性的关系是部分函数传递,有这种关系就不是2NF。

第三范式(常用)

第三范式:3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖。也就是说, 如果存在非主属性对于码的传递函数依赖
确保每列都和主键列直接相关,而不是间接相关,则不符合3NF的要求
在这里插入图片描述

在这里插入图片描述

这种关系称为传递函数依赖,只要有这种关系的就不是3NF。

飞鸽传书

过了几天女神给通过中间人告诉我,那个小孩是她弟弟,我是眉飞眼笑,有这种传递的关系,则就不能成为3NF。去掉这个中间人则就是3NF。
在这里插入图片描述

BCNF范式(常用)

BCNF: 3NF 的基础上消除主属性对于码的部分传递函数依赖,
简单来说
若一个关系达到了第三范式,并且只有一个候选,则该关系就是到BCNF范式

一如既往

女神说完以后,就把她弟弟托付给我,(主属性之间的传递函数),我欲哭无泪,有这种关系就不能算是BCNF关系,
在这里插入图片描述

第四范式(少见)

第四范式:在BCNF的基础上,消除非平凡且非函数依赖的多值依赖(即把同一表内的多对多关系删除)

第五范式(少见)

第五范式:在第四范式的基础上,消除传递依赖

实战练习

某销售公司数据库的零件关系P(零件号,零件名称,供应商,供应商所在地,库存量),函数依赖集F={零件号→零件名称,(零件号,供应商)→库存量,供应商→供应商所在地)。零件关系模式P属于()。
查询各种零件的平均库存量、最多库存量与最少库存量之间差值的SQL语句如下:SELECT零件号,零件名称,( ) ,
FROM P( ) ;
问题1
A.1NF
B.2NF
C.3NF
D.4NF
相当于女神的孩子找到我,所以不能算是2NF,所以选A
问题2
A.AVG(库存量)AS平均库存量,MAX(库存量)-MIN(库存量)AS差值
B.平均库存量AS AVG(库存量),差值AS MAX(库存量)-MIN(库存量)
C.AVG库存量AS平均库存量,MAX库存量-MIN库存量AS差值
D.平均库存量AS AVG库存量,差值AS MAX库存量-MIN库存量
问题3
A.ORDER BY供应商
B.ORDER BY零件号
C.GROUPBY供应商
D.GROUPBY零件号

总结

学习数据库的范式,在我看来是为了有更好的数据表,更严格的范式,是把数据库拆解的更加原子化,避免数据冗余、删除异常、插入异常等等。
如果那有错误,欢迎斧正,我会去进行修改,如果觉得不错可以点赞、收藏、评论支持一下,每条评论我都会回复,谢谢大家!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值