数据库的这三大范式是为了处理数据冗余、构建比较严谨的数据库结构,设计数据库时必须遵循一定的规则。
在关系型数据库中这种规则就称为范式。

第一范式1NF(域的原子性)


  • 如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF)

01数据库基础之三大范式_第二范式

第二范式 (2NF)(表中除主键外的字段都完全依赖主键)

  • 第二范式是在第一范式基础上建立的。
  • 第二范式有两个重点:
    (1)表中必须有主键;
    (2)其他非主属性必须完全依赖主键,不能只依赖主键的一部分(主要针对联合主键而言)。

通俗的来说,就是一个表只能描述一件事情。

01数据库基础之三大范式_主键_02


通过第二范式可以分成为:

学生选修课成绩表

01数据库基础之三大范式_主键_03


选修课信息表

01数据库基础之三大范式_第二范式_04

将表中课程信息单独分离出来,符合了第二范式原则。表三中的非主属性都依赖于主键,即,“成绩”字段完全依赖于“学号”和“课程编号”组成的联合主键,符合第二范式原则

第三范式3NF(表中除主键外的字段都完全直接依赖,不能是传递依赖)

不能是传递依赖,即不能存在:非主键列 A 依赖于非主键列 B,非主键列 B 依赖于主键的情况。

第二范式(2NF)和第三范式(3NF)的概念很容易混淆,区分它们的关键点在于,2NF:非主键列是否完全依赖于主键,还是依赖于主键的一部分;3NF:非主键列是直接依赖于主键,还是直接依赖于非主键列。

01数据库基础之三大范式_第二范式_05


将room里面的信息分开,在第一第二范式的前提之上,将传递依赖剔除掉。再讲第一二三范式放在一起进行总结(举例)。

一个数据表:

01数据库基础之三大范式_第二范式_06

第一范式:

01数据库基础之三大范式_三大范式_07


第二范式:

01数据库基础之三大范式_第一范式_08


第三范式:

01数据库基础之三大范式_主键_09