范式是指导数据库表设计的一种模式,一层比一层严格,并且上层依赖下层。比如要满足第二范式,那么久必须先满足第一范式

1NF — 第一范式

数据库表中的所有字段值都是不可分解的原子值
一个字段中不能放入多个属性。比如把 “姓名+学号”放入一个列。
PS: 这里前提是 姓名+学号, 并不是一个实体概念,如果在你的系统中就是有这么一个概念,这个概念就是’姓名+学号’ ,那么就不算违反范式。

2NF — 第二范式

数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖
比如,表的主键是 ‘学科 + 学号’。 如果在表中存在一列 学分,那就是违反第二范式。因为学分只依赖学科,和学号没有关系。这叫做非完全依赖,这种情况会导致表中的数据冗余。

3NF — 第三范式

表中的字段和主键直接对应不依靠其他中间字段,即,决定某字段值的必须是主键
和第二范式很像。比如主键是userId,表中有一个字段叫做公司。这没问题,人的一个属性。但是表中还有一个字段,就是这个公司的电话。那就有问题了,公司电话和userId没有直接的关系,而是关联在公司上面的。