SQL 范式

数据库的不同规范要求被称为不同的范式,在设计关系数据库时,应当遵从范式。

一、第一范式

每一列都是不可分割的原子数据项。

不符合任何范式:

符合第一范式:

二、第二范式

在第一范式的基础上,非码属性必须完全依赖于候选码。

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

不符合第二范式:

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

符合第二范式:

三、第三范式

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

不符合第三范式:

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

符合第三范式:

参考

  • 数据库系统概论