SQL 范式
数据库的不同规范要求被称为不同的范式,在设计关系数据库时,应当遵从范式。
一、第一范式
每一列都是不可分割的原子数据项。
不符合任何范式:
符合第一范式:
二、第二范式
在第一范式的基础上,非码属性必须完全依赖于候选码。
- 依赖:如果通过属性 a 可以唯一确定属性 b 的值,则称 b 依赖于 a
- 完全依赖:b 值的确定需要依赖于 a 组中的所有属性,则称 b 完全依赖于 a
- 部分依赖:b 值的确定只需要依赖于 a 组中的部分属性,则称 b 部份依赖于 a
不符合第二范式:
表的候选码是“订单号 + 产品号“,又”订单金额“、”订单时间“仅与订单号有关,而与产品号无关,因此并非完全依赖于候选码,不符合第二范式。
符合第二范式:
三、第三范式
在第二范式的基础上,任何非主属性不依赖于其它非主属性。
不符合第三范式:
注意到在这张表中,虽然所有属性都依赖于”学号”,但”班主任性别”、“班主任年龄”直接依赖于“班主任姓名”,因此不符合第三范式。
符合第三范式:
参考
- 数据库系统概论