Mysql三大范式
2021/11/29 19:06:23
本文主要是介绍Mysql三大范式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
mysql中有六大范式,但是我们一般日常工作中只会用到三大范式
第一范式
确保每列保持原子性
第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。
第一范式的合理遵循需要根据系统的实际需求来定,有什么写什么,是无法分割的。下图
第二范式
这个表就没有遵循第一范式的原则,家庭信息这栏就可以分为家庭人口跟家庭住址两栏信息
上图这样的表格就可以是完美遵循了第一范式,原子不可分解
第二范式
确保表中的每列都和主键相关
前提:满足第一范式
每个非主属性都完全函数依赖于任一候选码
第二范式在第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。
像班级地址这个东西在学生表里就是可以不用出现的,跟学生信息不是直接的关系,地址可以在班级信息里出现,所以这个表是没有遵循第二范式的基本原则
第三范式
确保每列都和主键列直接相关,而不是间接相关
第三范式就是将两张表建立相同的字段,用这个相同的字段将两张表建立联系,彼此列之间没有依赖关系
前提:满足第二范式
消除了传递函数依赖
数据不能存在传递关系,即每个属性都跟主键有直接关系而不是间接关系。像:a-->b-->c 属性之间含有这样的关系,是不符合第三范式的。
比如Student表(学号,姓名,年龄,性别,所在院校,院校地址,院校电话)
这样一个表结构,就存在上述关系。 学号--> 所在院校 --> (院校地址,院校电话)
这样的表结构,我们应该拆开来,如下。
(学号,姓名,年龄,性别,所在院校)--(所在院校,院校地址,院校电话)
总结:三大范式只是一般设计数据库的基本理念,可以建立冗余较小、结构合理的数据库。如果有特殊情况,当然要特殊对待,数据库设计最重要的是看需求跟性能,需求>性能>表结构。所以不能一味的去追求范式建立数据库。
这篇关于Mysql三大范式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程
- 2024-11-01部署MySQL集群学习:新手入门教程
- 2024-11-01部署MySQL集群入门:新手必读指南
- 2024-10-23BinLog入门:新手必读的MySQL二进制日志指南
- 2024-10-23Binlog入门:MySQL数据库的日志管理指南