Mysql三大范式

2021/11/29 19:06:23

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

mysql中有六大范式,但是我们一般日常工作中只会用到三大范式

第一范式

确保每列保持原子性

第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。

第一范式的合理遵循需要根据系统的实际需求来定,有什么写什么,是无法分割的。下图

第二范式

 这个表就没有遵循第一范式的原则,家庭信息这栏就可以分为家庭人口跟家庭住址两栏信息

上图这样的表格就可以是完美遵循了第一范式,原子不可分解 

第二范式

确保表中的每列都和主键相关

前提:满足第一范式

每个非主属性都完全函数依赖于任一候选码

第二范式在第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。

像班级地址这个东西在学生表里就是可以不用出现的,跟学生信息不是直接的关系,地址可以在班级信息里出现,所以这个表是没有遵循第二范式的基本原则

第三范式

确保每列都和主键列直接相关,而不是间接相关

第三范式就是将两张表建立相同的字段,用这个相同的字段将两张表建立联系,彼此列之间没有依赖关系

前提:满足第二范式

消除了传递函数依赖

数据不能存在传递关系,即每个属性都跟主键有直接关系而不是间接关系。像:a-->b-->c  属性之间含有这样的关系,是不符合第三范式的。

比如Student表(学号,姓名,年龄,性别,所在院校,院校地址,院校电话)

这样一个表结构,就存在上述关系。 学号--> 所在院校 --> (院校地址,院校电话)

这样的表结构,我们应该拆开来,如下。

   (学号,姓名,年龄,性别,所在院校)--(所在院校,院校地址,院校电话)

总结:三大范式只是一般设计数据库的基本理念,可以建立冗余较小、结构合理的数据库。如果有特殊情况,当然要特殊对待,数据库设计最重要的是看需求跟性能,需求>性能>表结构。所以不能一味的去追求范式建立数据库。
 



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


扫一扫关注最新编程教程