1.3.4 关系规范化
关系规范化理论是设计数据库的有力工具。规范化理论认为,关系数据库中的每一个关系都要满足一定的规范。根据满足规范的条件不同,可以划分为5级,从第一范式(1NF)到第五范式(5NF),其中第一范式为最低级范式。
在数据库应用时,通常只需把关系规范到第三范式,就基本满足关系的设计要求。
1.第一范式(1NF)
如果一个关系的所有属性都是不可再分的基本数据项,则该关系满足第一范式。第一范式是关系最低的规范化要求,是关系必须要满足的条件。如果不满足第一范式,则必须对数据项加以分割,使分割后的每个数据项都是不可再分的基本数据项。
任务1.4 分析学生关系,如表1-14所示。问是否满足第一范式,如果不满足,加以优化使之满足。
表1-14 学生关系
解答:
“QQ号”属性,其属性值有的学生有两个号,就不是基本数据项,可再分,故学生关系不满足第一范式,把“QQ号”分割为两列,每列显示一个QQ号,分别命名为“QQ1”、“QQ2”,如表1-15所示,经过分割后,则学生关系满足第一范式。
表1-15 变更学生联系关系
2.第二范式(2NF)
如果一个关系满足1NF,且所有的非主关键字都完全依赖于主关键字,则该关系满足第二范式。
如果不满足第二范式,可能造成数据冗余、插入和删除异常、修改复杂等问题,则必须分离所有不完全依赖于主关键字的非主关键字数据项,其数据项重新构造一个新的关系。
任务1.5 分析成绩关系,如表1-16所示,问是否满足第二范式,如果不满足,会导致怎样后果,采用什么方法加以优化使之满足。
表1-16 成绩关系
解答:
分析:成绩关系的主关键字为“学号+课程编号”的组合属性,其非主关键字“成绩”完成依赖于主关键字,而非主关键字“课程名称”和“学分”只完全依赖于主关键字中的“课程编号”,而不是完成依赖于组合的主关键字,即部分依赖,故成绩关系不满足第二范式。
不满足第二范式后果:可能造成数据冗余、插入和删除异常,修改复杂等问题,可以想象,如果有50名学生选择“基础英语”,则该数据项在表中出现50次,造成数据冗余。
优化方法:拆成两个关系,成绩(学号,课程编号,成绩),主关键字“学号+课程编号”。课程(课程编号,课程名称,学分),主关键字“课程编号”。这样,各关系的非主关键字各自依赖于主关键字,两个关系都满足2NF了。如表1-17、表1-18所示。
表1-17 成绩关系
表1-18 课程关系
3.第三范式(3NF)
如果一个关系满足2NF,且所有的非主关键字都不传递依赖于主关键字,则该关系满足第三范式。
如果不满足第三范式,则必须分离所有传递依赖于主关键字的非主关键字数据项,其数据项重新构造一个新的关系。
任务1.6 分析学生关系,如表1-19所示。问是否满足第三范式,如果不满足,加以优化使之满足。
表1-19 学生关系
解答:
分析:学生关系中,“学号”为主关键字,则非主关键字“系编号”依赖于“学号”,而非主关键字“系名称”、“系主任”、“联系电话”依赖于“系编号”,即“学号”←“系编号”←“系名称”、“系主任”、“联系电话”,这称为传递依赖于主关键字,不满足3NF。
优化方法:分离为两个关系,学生(学号,姓名,性别,系编号),系(系编号,系名,系主任,联系电话),这样每个关系非主关键字都不传递依赖于主关键字,两个关系都满足3NF,如表1-20、表1-21所示。
表1-20 学生关系
表1-21 系关系