3.2.3 第三范式—关系型数据库设计的第三步
第三范式是在第二范式的基础上对数据库设计进行规范,第三范式的要求是数据表中不存在非关键字段对任一候选关键字段的传递函数依赖。所谓传递函数依赖,指的是如果存在A决定B、B决定C的决定关系,则C传递函数依赖于A。因此,满足第三范式的数据库表应该不存在依赖关系,假定员工信息表为employee(员工编号,姓名,年龄,所在部门,部门电话),使用员工编号作为员工信息的主键,那么就存在决定关系:员工编号就决定了姓名、年龄、所在部门、部门电话这些字段。从上面的关系可以看出,在表中有一个主键,数据表的设计符合第二范式的要求。但是它不符合第三范式的要求,因为存在决定关系:员工编号就决定了所在部门,所在部门又决定了所在部门的电话,那么就存在了传递函数依赖关系,即员工编号决定部门电话,那么也会出现不满足第二范式时的数据冗余和更新、插入、删除异常的情况。为了满足第三范式的要求,必须把员工信息表拆分成如下两个数据表:
员工表:员工编号、姓名、年龄、所在部门;
部门表:部门名称、部门电话。
说明 除了上面的三种范式以外,还有一种范式经常使用,即鲍依斯-科得范式(BCNF)。它建立在第三范式的基础上,如果数据库表中不存在任何字段对任一候选关键字段的传递函数依赖,那么就符合BCNF范式。