# 第一范式

每一列都是不可分割的原子数据项。
第一范式是所有关系型数据库的最基本要求,如果数据表的设计不符合这一要求,则数据表的创建无法成功。

不符合任何范式:

符合第一范式:

# 第二范式

在第一范式的基础上,非码属性必须完全依赖于候选码。
第二范式在第一范式的基础上,消除了非主属性对于码的部份依赖。

  • 依赖:如果通过属性 a 可以唯一确定属性 b 的值,则称 b 依赖于 a
  • 完全依赖:b 值的确定需要依赖于 a 组中的所有属性,则称 b 完全依赖于 a
  • 部分依赖:b 值的确定只需要依赖于 a 组中的部分属性,则称 b 部份依赖于 a

不符合第二范式:

表的候选码是“订单号 + 产品号“,又”订单金额“、”订单时间“仅与订单号有关,而与产品号无关,因此并非完全依赖于候选码,不符合第二范式。
符合第二范式:

# 第三范式

在第二范式的基础上,任何非主属性不依赖于其它非主属性。

不符合第三范式:

注意到在这张表中,虽然所有属性都依赖于"学号",但"班主任性别"、“班主任年龄”直接依赖于“班主任姓名”,因此不符合第三范式。
符合第三范式: