1、概念
关系模型满足的确定约束条件称为范式。
根据满足约束条件的级别不同,范式由低到高分为:1NF(第一范式)、2NF(第二范式)、3NF(第三范式)、BNF(BC范式)、4NF(第四范式),不同级别的范式性质不同。
2、第一范式(1NF)
1NF是最低的规范化要求。如果关系R中所有属性的值域都是简单域,其元素(即属性)不可再分,是属性项而不是属性组,那么关系模型R是满足第一范式的。通俗点也就是说一张关系表中,所有的字段的值都必须是不可再拆分的。例如:表1所示结构就不满足1NF的定义。
表1 不满足1NF的结构
职工工号 | 职工姓名 | 住址 |
9527 | 周星星 | XXX省XXX市XXX区XXX街道 |
表1不满足第一范式,分解后满足第一范式如表2所示。
表2 满足1NF的结构
职工工号 | 职工姓名 | 所在省 | 所在市 | 所在区 | 详细地址 |
9527 | 周星星 | XXX省 | XXX市 | XXX区 | XXX街道XXX号 |
3、第二范式(2NF)
如果一个关系 R 属于 1NF,且所有的非主属性都完全依赖于主属性,则称之为第二范式(也就是除了主键以外的其他字段,都必须完全依赖于主键)。例如表3所示结构就不满足第二范式。
表3 不满足第二范式的结构
学号 | 姓名 | 课程号 | 课程名 |
S0001 | 周星星 | N0001 | 如来神掌 |
表3的结构满足1NF,其中“学号”和“课程号”为主键,但是“课程名称”只依赖于“课程号”,即只依赖主键的一部分(部分依赖),所以不符合2NF。可以将表3作拆分,得到如下表4、表5的结构:
表4
学号 | 姓名 |
S0001 | 周星星 |
表5
课程号 | 课程名 |
N0001 | 如来神掌 |
4、第三范式(3NF)
如果一个关系 R 属于 2NF,且每个非主属性不传递依赖于主属性,这种关系是 3NF。为了理解这种关系,将以表6中的字段作为讲解。
表6
职工姓名 | 薪资级别 | 薪资(元) |
周星星 | B | 8000 |
表6中所示,“职工姓名”为主键,其他属性都完全依赖于主键;但是“薪资”会根据“薪资级别”的变化而变化,即确定了“职工姓名”,就确定了姓名为“周星星”这名职工的“薪资级别”,确定了“薪资级别”,才能确定具体的“薪资”;所以除主键外其他字段存在传递依赖,不满足3NF。将表6进行拆分来满足3NF,如下表7、8。
表7
职工姓名 | 薪资级别 |
周星星 | B |
表8
薪资级别 | 薪资(元) |
B | 8000 |