数据库三大范式是什么?

  • 第一范式(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就是消除这种依赖。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐