mysql三大范式

2021/11/28 19:11:01

本文主要是介绍mysql三大范式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

上星期,正感觉生活安逸,项目功能写的差不多了,突然学长说这周要面试我们java基础,突然就精神了起来。昨天面试过了结果也出来了,下面是学长对我的评价
在这里插入图片描述
数据库的知识忘了好多,虽然平常总是在项目中使用,但是一些基础的知识还是没记住。

数据库的三大范式:

范式的概念:

设计数据库的时候需要遵从的一些规范,目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。

满足前三个范式就能设计一个比较规范的数据库了。

设计数据库的时候需要遵从的一些规范,目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。

一、第一范式(1NF):每个列都不可以再拆分
在这里插入图片描述
上图,专业那一列下面有分出来了两个子列,显然是不符合第一范式的。

在这里插入图片描述
这才是符合第一范式的。

二、第二范式(2NF):在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。

1.函数依赖:如果通过A属性(属性组),可以确定唯一B属性的值,那么B依赖于A。比如上图的姓名,完全依赖于学号
2.完全函数依赖:如果A是一个属性组,则B属性值的确定需要依赖于A属性组中的所有的属性值。属性组是指多个字段,那么比如我们要想知道一个分数,就必须依赖于学号和课程名称两个属性才能确定一个分数,其他的属性是不能确定某一个分数的
3.部分函数依赖:如果A是一个属性组,则B属性值的确定需要依赖A属性组的某一些字段即可,例如学号和课程名称为一个属性组,那么学生姓名其实就只需要学号就可以确定
4.传递函数依赖:如果A属性(属性组),可以确定唯一个B属性的值,再通过B属性的值又可以唯一确定C属性的值,例如一个学号确定一个系名,一个系名对应一个系主任
5.主键:在一张表中,一个属性或者属性组,被其他所有属性完全依赖,则称这个属性为该码的表,比如上图的学号和课程名称组成的属性组

1.函数依赖:如果通过A属性(属性组),可以确定唯一B属性的值,那么B依赖于A。比如上图的姓名,完全依赖于学号
2.完全函数依赖:如果A是一个属性组,则B属性值的确定需要依赖于A属性组中的所有的属性值。属性组是指多个字段,那么比如我们要想知道一个分数,就必须依赖于学号和专业名称两个属性才能确定一个分数,其他的属性是不能确定某一个分数的
3.部分函数依赖:如果A是一个属性组,则B属性值的确定需要依赖A属性组的某一些字段即可,例如学号和专业名称为一个属性组,那么学生姓名其实就只需要学号就可以确定
4.传递函数依赖:如果A属性(属性组),可以确定唯一个B属性的值,再通过B属性的值又可以唯一确定C属性的值,例如一个学号确定一个专业名,一个专业名对应一个专业长。
5.主键:在一张表中,一个属性或者属性组,被其他所有属性完全依赖,则称这个属性为该码的表,比如上图的学号和专业名称组成的属性组

简单来说,第二范式是在第一范式的基础上消除非主键对主键的部分依赖。
这样我们可以把表分为两个
在这里插入图片描述
在这里插入图片描述
三、第三范式(3NF):在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。

在这里插入图片描述



这篇关于mysql三大范式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程