刘丽娟 大连交通大学软件学院,辽宁 大连 116052
关系数据库规范化理论教学中的分析与思考
刘丽娟 大连交通大学软件学院,辽宁 大连 116052
关系数据库规范化理论是数据库设计中的一个重要参考依据,但是学生在学习时总感觉很吃力,不知道如何下手去学,掌握不住学习要点。本文结合作者多年的数据库教学经验,总结了学好关系数据库规范化理论的教学要点。
关系数据库;数据库规范化;数据库设计
当前设计数据库系统主要采用的是以逻辑数据库设计核物理数据库设计为核心的规范设计方法,通常将数据库设计分为六个阶段,即
(1)需求分析阶段;
(2)概念设计阶段;
(3)逻辑设计阶段;
(4)物理设计阶段;
(5)数据库实施阶段;
(6)数据库运行、维护阶段。逻辑结构设计阶段需要对数据模型进行优化,优化方法通常以关系数据库规范化理论为指导[1]。因此规范化理论的重要性不言而喻。
规范化理论研究的是关系模式中各属性之间的数据依赖关系以及对关系模式性能的影响,规范化理论是判断关系模式优劣的理论标准。
2.1 确定函数依赖
关系数据库的规范化理论主要包括三个方面的内容:函数依赖、范式、模式设计。其中,函数依赖起着核心的作用,是模式分解和模式设计的基础;范式是模式分解的标准。关于函数依赖,首先要正确理解函数依赖、完全函数依赖、部分函数依赖以及传递函数依赖的定义。下面给出函数依赖的定义。
定义1 函数依赖 设R(U)是一个关系模式,U是R的属性集合(如U={A1,…,An})。X、Y是U的子集。如果R(U)的所有关系r都存在着:对于X的每个值,都有Y的唯一值与之相对应,则称X函数决定Y,或Y函数依赖X。记作X→Y。其中X叫作决定属性集,Y叫作被决定属性集。
从软件系统的需求过程中,我们得出了现实生活中的语义关系,根据属性间的语义关系,我们很容易确定函数依赖。
2.2 候选键
根据现实中的语义给出的函数依赖关系来求解候选键主要有2种方法,一种是图示法,另一种是算法。图示法要求学生具有很强的理论基础,因此对于初学者来说不是很容易掌握,这里作者介绍求解算法,根据这些算法能很容易地求出候选键。(1)首先将属性分为4类,即L类属性、R类属性、N类属性以及LR类属性。(2)根据求解候选键的算法得出结论。下面给出4类属性[2]的定义。
①L类属性:只出现在函数依赖左部的属性
②R类属性:只出现在函数依赖右部的属性
③N类属性:在函数依赖左右两边都没出现的属性
④LR类属性:在函数依赖左右两边都出现的属性
算法1 对于给定的关系模式R及其函数依赖集F,若X(X∈R)是L类属性或N类属性,则X必为R的候选键的成员,若X+包含了R的全部属性,则X必为R的唯一候选键;若X+不能包含R的全部属性,则LR类属性也会成为候选键的成员;R类属性不在任何候选键中。下面举例说明求解候选键的算法过程。
例2 设有关系模式R(A、B、C、D、E、P),其函数依赖集F={A→D,E→D,D→B,BC→D,DC→A},求R的所有候选键。
解: (1)L类属性:C、E;N类属性:P。
(2)则C、E、P必为候选键的成员,又因为(CEP)+=ABCDEP,所以CEP是R的唯一候选键。
2.3 范式
范式是符合某一种级别的关系模式的集合。根据关系数据库中的关系满足的不同要求,范式分为几个等级,按照等级升序排序依次是1NF、2NF、3NF、BCNF、4NF、5NF,在低一级别的范式中满足进一步的要求就成为高一级别的范式。为了使关系模式设计达到最优化,通过将低一级别的范式分解,从而转换为若干个高级的范式,这个过程称作规范化。下面给出范式的定义。
定义21NF 如果一个关系模式R(U,F)的所有属性都是不可分的基本数据项,则R∈1NF。
定义32NF 如果R∈1NF,且所有非主属性都完全函数依赖于候选键,则R∈2NF。
定义43NF 如果R∈2NF,且所有非主属性都不传递依赖于候选键,则R∈3NF。
定义5 BCNF 如果R∈1NF,若X→Y且Y不真包含于X时X必包含键,则R∈BCNF。
从以上定义我们可以看出,(1)2NF消除了部分函数依赖,(2)3NF消除了传递依赖,(3)BCNF要求每一个决定属性集都包含候选键。下面我们举例说明范式的规范化过程。
例3 关系模式SLC(SNO,SDEPT,SLOC,CNAME,SCORE) ∈1NF,函数依赖包括:(SNO, CNAME)→SCORE, (SNO,CNAME)→ SDEPT, (SNO, CNAME)→SLOC, SNO→SDEPT, SNO→SLOC,SDEPT→SLOC。
解:根据上述候选键求解算法得出,候选键是(SNO, CNAME)。
(1)从上述函数依赖关系我们可以看出,SDEPT和SLOC都部分函数依赖于候选键,所以应该消除这些部分依赖关系,因此分解时应将SDEPT和SLOC同SNO放在同一个关系模式中,即S L (S N O,SDEPT,SLOC),毫无疑问,SCORE与候选键被分到同一个关系模式,即SC(SNO,CNAME,SCORE)。这样SL∈2NF,且SC∈2NF。
(2)从上述函数依赖关系我们可以看出,SLOC传递依赖于SNO,所以应该消除这个传递依赖,因此分解时应将SNO和S L O C分到不同的关系模式中,即S D(SNO,SDEPT)和 DL(SDEPT,SLOC)。这样SD∈3NF,且DL∈3NF。
(3)关系模式SD和DL中,每个决定因素都包含候选键,所以SD∈BCNF,且DL∈BCNF。
目前我们设计及使用的数据库在函数依赖范畴领域BCNF已经是最高级别了,如果考虑到其他依赖,比如多值依赖,还会要求4NF、5NF等等,关于多值依赖,作者这里不做介绍。BCNF消除了插入异常、更新异常、删除异常,并且减少了数据冗余,但是在实际应用中并不是所有的范式都能达到BCNF,我们通常为了满足一定的语义联系,在设计模式中基本采用3NF。
知识是靠不断学习积累的,这里只是结合本科教学中关系数据库规范化理论进行系统总结,所以不可能单凭几个教学经验总结就能解决所有学生的学习问题。因此,我们教师应该在教学中不断地探索、不断地总结,结合每个学生的学习特点,具体问题具体分析,在一些总的原则下因人而异,因为教师的真正本领,不在于他是否会讲述知识,而在于是否能唤起学生的求知欲望,让他们兴趣盎然地参与到教学过程中来。
[1] 萨师煊,王珊. 数据库系统概论[M].高等教育出版社,2003.205~206
[2]杨鑫华等.数据库原理与D B2应用教程[M].清华大学出版社,2007.114~120
10.3969/j.issn.1001-8972.2011.23.143
大连交通大学软件学院课程改革项目基金
刘丽娟 女 辽宁人1978年11月 大连交通大学软件学院 讲师。