第一范式(1NF)
若一个关系模式中的每一个元组的每一个属性都只包含原子值(atomic value),那么就称该关系模式是满足第一范式(first normal form,1NF)的。
第二范式(2NF)
若一个关系模式满足第一范式,并且每一个非键属性都不部分函数依赖(即完全函数依赖)于任何一个候选键,那么就称该关系模式是满足第二范式(second normal form,2NF)的。比如下图左侧的关系模式便不满足第二范式:
不满足第二范式的关系模式可能存在以下几个问题(以图中左侧关系模式为例,其中
{StudentId, ProjectId}
是一个候选键同时也是主键):
- 插入异常。若要向表中添加一个新学生的信息,但他还未选任何项目,那么会导致其
ProjectId
字段值为空,这是不被允许的;- 删除异常。若要撤销一个项目(比如
P1
)的信息,这需要删除表中的第 1、3 行,但这会导致学生John
的信息完全被删除;- 修改复杂。若某项目(比如
P2
)的信息需要更新,这需要同时修改ProjectName
字段的第 2、4、5 行处的值;
而将其规范化为满足第二范式的右侧几个关系模式后,将不再存在上述问题,并且数据冗余减少、占用的存储空间也会下降