什么是数据库三大范式,通俗讲解 一讲就懂

数据库三大范式是什么?

  • 第一范式(1NF): 确保每列的原子性(强调的是列的原子性,即列不能够再分成其他几列)。实际上,第一范式是所有关系型数据库的最基本要求。

举例说明:
第一种表设计:

地址
青青草原,羊村,肥羊小学

第二种表设计:

小镇 具体地址
青青草原 羊村 肥羊小学

阐述:
第一种表设计不满足第一范式,为什么不满足第一范式?因为地址列不具有原子性,能拆分成省份具体地址


  • 第二范式(2NF): 是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)
  • 第二范式要求确保表中每列与主键相关,而不能只与主键的某部分相关(主要针对联合主键),主键列与非主键列遵循完全函数依赖关系,也就是完全依赖

举例说明:
第一种表设计::

学号 姓名 系名 系主任 课程名 分数
001 喜洋洋 信息工程系 羊村村长 《如何打败灰太狼》 95
001 喜洋洋 信息工程系 羊村村长 《如何打败灰太狼它老婆》 95
001 喜洋洋 信息工程系 羊村村长 《如何收养小灰灰》 60
002 美洋洋 信息工程系 羊村村长 《如何收养小灰灰》 100
002 美洋洋 信息工程系 羊村村长 《如何打败灰太狼》 60
002 美洋洋 信息工程系 羊村村长 《如何打败灰太狼它老婆》 60
003 懒洋洋 没关系 黑大帅 《青草100种烹饪方法》 60
003 懒洋洋 没关系 黑大帅 《毛选》 100
003 懒洋洋 没关系 黑大帅 《思政》 100

第二种表设计(分开两个表,将表拆分为每列可依赖于首列的两张表)

选课表:

学号 课程名 分数
001 如何打败灰太狼》 95
001 《如何打败灰太狼它老婆》 95
001 《如何收养小灰灰》 60
002 《如何收养小灰灰》 100
002 《如何打败灰太狼》 60
002 《如何打败灰太狼它老婆》 60
003 《青草100种烹饪方法》 60
003 《毛选》 100
003 《思政》 100

人员表:

学号 姓名 系名 系主任
001 喜洋洋 信息工程系 羊村村长
001 喜洋洋 信息工程系 羊村村长
001 喜洋洋 信息工程系 羊村村长
002 美洋洋 信息工程系 羊村村长
002 美洋洋 信息工程系 羊村村长
002 美洋洋 信息工程系 羊村村长
003 懒洋洋 没关系 黑大帅
003 懒洋洋 没关系 黑大帅
003 懒洋洋 没关系 黑大帅

阐述:
就是根据主键或者联合主键,将一个表最有关联的属性分别放在一起


  • 第三范式(3NF): 是在第二范式的基础上建立起来的。第三范式指:属性不依赖于其他非主属性
  • 第三范式确保主键列之间没有传递函数依赖关系,也就是消除传递依赖

举例说明:
继续 第二范式 继续拆分:

选课表:

学号 课程名 分数
001 如何打败灰太狼》 95
001 《如何打败灰太狼它老婆》 95
001 《如何收养小灰灰》 60
002 《如何收养小灰灰》 100
002 《如何打败灰太狼》 60
002 《如何打败灰太狼它老婆》 60
003 《青草100种烹饪方法》 60
003 《毛选》 100
003 《思政》 100

学生表:

学号 姓名 系名
001 喜洋洋 信息工程系
002 美洋洋 信息工程系
003 懒洋洋 没关系

系表:

系名 系主任
信息工程系 羊村村长
没关系 黑大帅

阐述:
第三范式,在表中,一个系名能确定一个系主任。这样,系名依赖于学号(学生)姓名,而系主任又依赖于系名,这就导致了传递依赖,3NF就是消除这种依赖。

猜你喜欢

转载自blog.csdn.net/weixin_44355591/article/details/106194714