数据库系统-04关系数据库理论2节_第1页
数据库系统-04关系数据库理论2节_第2页
数据库系统-04关系数据库理论2节_第3页
数据库系统-04关系数据库理论2节_第4页
数据库系统-04关系数据库理论2节_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

4.1

规范化问题与函数依赖一.规范化的主要内容关系数据库的规范化理论最早是由关系数据库的创始人E.F.Codd

,学者对关系数据库理论作了深入的研究和发展,形成了一整套有关关系数据库设计的理论。在该理论出现以前,层次和网状数据库的设计只是遵循其模型本身固有的原则,而无具体的理论依据可言,因而带有盲目性,可能在以后的运行和使用中发生许多预想不到的问题。23在关系数据库系统中,关系模型包括一组关系模式,各个关系不是完全孤立的。如何设计一个适合的关系数据库系统,关键是关系数据库模式的设计,一个好的关系数据库模式应该包括多少关系模式,而每一个关系模式又应该包括哪些属性,又如何将这些相互关联的关系模式组建一个适合的关系模型,这些工作决定了到整个系统运行的效率,也是系统成败的关键所在,所以必须在关系数据库的规范化理论的指导下逐步完成。关系数据库的规范化理论主要包括三个方面的内容:函数依赖范式模式设计二.关系模式的

异常问题数据库的逻辑设计为什么要遵循一定的规范化理论?好的关系模式?某些不好的关系模式可能导致哪些问题?下面通过例子进行分析:4例如,要求设计教学管理数据库,其关系模式SCD如下:SCD(SNO,

O,SCORE)其中,SNO表示学生学号,SN表示学生 ,AGE表示学生 ,DEPT表示学生所在的系别,MN表示系,CNO表示课程号,SCORE表示成绩。根据实际情况,这些数据有如下语义规定:一个系有若干个学生,但一个学生只属于一个系;一个系只有一名系 ,但一个系 可以同时兼几个系的系

;一个学生可以选修多门功课,每门课程可有若干学生选修;每个学生学习课程有一个成绩。在此关系模式中填入一部分具体的数据,则可得到SCD关系模式的实例,即一个教学管理数据库,如图4.1所示。5图4.1关系SCDSNOSNAGEDEPTMNCNOSCORES117计算机C190S117计算机C285S218信息C557S218信息C680S218信息C770S218信息C570S320信息C10S320信息C270S320信息C485S4男自动化C1936根据上述的语义规定,并分析以上关系中的数据,

可以看出:(一标识一个元组,所以(O)属性的组合能唯O)是该关系模式的主关系键。但在进行数据库的操作时,会出现以下几方面的问题。1.

数据冗余。每个系名和系

的名字的次数等于该系的学生人数乘以每个学生选修的课程门数,同时学生的

也都要重多次,数据的冗余度很大,浪费了复空间。2.异常。如果某个新系没有招生,尚无学生时,则系名和系 的信息无法

到数据库中。7删除异常。某系学生全部毕业而没有招生时,删除全部学生的记录则系名、系也随之删除,而这个系依然存在,在数据库中却无法找到该系的信息。更新异常。如果学生改名,则该学生的所有记录都要逐一修改SN;又如某系更换系 ,则属于该系的学生记录都要修改MN的内容,稍有不慎,就有可能漏改某些记录,这就会造成数据的不一致性,破坏了数据的完整性。8由于存在以上问题,说,SCD是一个不好的关系模式。产生上述问题的原因,直观地说,是因为关系中

“包罗万象”,内容太杂了。那么,如何才能得到一个好的关系模式呢?把关系模式SCD分解为下面三个结构简单的关系模式,如图4.2所示。学生关系S(SNO,SN,AGE,DEPT)选课关系SC(

O,SCORE)系关系D(DEPT,MN)9S

SNOSNAGEDEPTS117计算机S218信息S320信息S421自动化SNSOCCNOSCORES1C190S1C285S2C557S2C680S2C7S2C570S3C10S3C270S3C485S4C193DDEPTMN计算机信息自动化图4.2 分解后的关系模式10在以上三个关系模式中,实现了信息的某种程度的分离,学生基本信息,与所选课程及系 无关;系的有关信息,与学生无关;S中D中SC中学生选课的信息,而与所学生及系的有关信息无关。与SCD相比,分解为三个关系模式后,数据的冗余度明显降低。当新

一个系时,只要在关系D中添加一条记录。当某个学生尚未选课,只要在关系S中添加一条学生记录,而与选课关系无关,这就避免了

异常。,当一个系的学生全部毕业时,只需在S中删除该系的全部学生记录,而关系D中有关该系的信息仍然保留,从而不会引起删除异常。同时,由于数据冗余度的降低,数据没有重复也不会引起更新异常。11经过上述分析,

说分解后的关系模式是一个好的关系数据库模式。从而得出结论,一个好的关系模式应该具备以下四个条件:尽可能少的数据冗余。没有 异常。没有删除异常。没有更新异常。12如何按照一定的规范设计关系模式,将结构复杂的关系分解成结构简单的关系,从而把不好的关系数据库模式转变为好的关系数据库模式,这就是关系的规范化。

要设计的关系模式中的各属性是相互依赖、相互制约的,这样才构成了一个结构严谨的整体。因此在设计关模式时,必须从语义上分析这些依赖关系。因此,

属性间的依赖关系,然后再关系规范化理论。13三.函数依赖的定义及性质关系模式中的各属性之间相互依赖、相互制约的联系称为数据依赖。数据依赖一般分为函数依赖、多值依赖和连接依赖。函数依赖(Functional

Dependency)是关系模式中属性之间的一种逻辑依赖关系。例如在关系模式SCD中,SNO与SN、AGE、DEPT之间都有一种依赖关系。由于一个SNO只对应一个学生,而一个学生只能属于一个系,所以当SNO的值确定之后,SN,AGE,DEPT的值也随之被唯一的确定了。在这里,

说(SN,AGE,DEPT)函数依赖于SNO。141.函数依赖的定义定义4.1

设关系模式R(U,F),U是属性全集,F是U上的函数依赖集,X和Y是U的子集,如果对于R(U)的任意一个可能的关系r,对于X的每一个具体值,Y都有唯一的具体值与之对应,则称X决定函数Y,或Y函数依赖于X,记作X→Y。 称X为决定因素,Y为依赖因素。当Y不函数依赖于X时,记作:X Y。当X→Y且Y→X时,则记作:XY。对于关系模式SCDU={SNO,

O,SCORE}F={SNO→SN,SNO→AGE,SNO→DEPT}一个SNO有多个SCORE的值与其对应,因此SCORE不能唯一地确定,即SCORE不能函数依赖于SNO,所以有:

SNO

SCORE。但是SCORE可以被(SNO,CNO)唯一地确定。所以可表示为:(SNO,CNO)→SCORE。15有关函数依赖的几点说明:(1)函数依赖是语义范畴的概念。只能根据语义来确定一个函数依赖,而不能按照其形式化定义来证明一个函数依赖是否成立。例如,对于关系模式S,当学生不存在重名的情况下,可以得到:SN→AGESN→DEPT这种函数依赖关系,必须是在没有重名的学生条件下才成立的,否则就不存在函数依赖了。所以函数依赖反映了一种语义完整性约束。1617(2)函数依赖与属性之间的联系类型有关。(1)在一个关系模式中,如果属性X与Y有1:1联系时,则存在函数依赖X→Y,Y→X,即XY。例如,当学生无重名时,SNO SN。如果属性X与Y有1:m的联系时,则只存在函数依赖X→Y。例如,SNO与AGE,DEPT之间均为1:m联系,所以有SNO→AGE,SNO→DEPT。如果属性X与Y有m:n的联系时,则X与Y之间不存在任何函数依赖关系。例如,一个学生可以选修多门课程,一门课程又可以为多个学生选修,所以

与 O之间不存在函数依赖关系。由于函数依赖与属性之间的联系类型有关,所以在确定属性间的函数依赖关系时,可以从分析属性间的联系类型入手,便可确定属性间的函数依赖。18(3)函数依赖关系的存在与时间无关。函数依赖关系的存在与时间无关,而只与数据之间的语义规定有关。(4)函数依赖可以保证关系分解的无损连接性。设R(X,Y,Z),X,Y,Z为不相交的属性集合,如果X→Y或X→Z,则有R(X,Y,Z)=R[X,Y]*R[X,Z],其中,R[X,Y]表示关系R在属性(X,Y)上的投影,即R等于其投影在X上的自然连接,这样便保证了关系R分解后不会丢失原有的信息,称作关系分解的无损连接性。例如,对于关系模式SCD,有SNO→(SN,AGE,DEPT,MN),SCD(SNO,SN,AGE,DEPT,MN,CNO,SCORE)=SCD[SNO,SN,AGE,DEPT,MN]*SCD[SNO,CNO,SCORE],也就是说,用其投影在SNO上的自然连接可复原关系模式SCD。192函数依赖的基本性质投影性。根据平凡的函数依赖的定义可知,一组属性函数决定它的所有子集。例如,在关系SCD中,(SNO,CNO)→SNO和(SNO,CNO)→CNO。扩张性。若X→Y且W→Z,则(X,W)→(Y,Z)。例如,SNO→(SN,AGE),DEPT→MN,则有(SNO,DEPT)→(SN,AGE,MN)。合并性。若X→Y且X→Z则必有X→(Y,Z)。例如,在关系SCD中,SNO→(SN,AGE),SNO→(DEPT,MN),则有SNO→(SN,AGE,DEPT,MN)。分解性。若X→(Y,Z),则X→Y且X→Z。很显然,分解性为合并性的逆过程。四.完全函数依赖与部分函数依赖′定义4.2

设关系模式R(U),U是属性全集,X和Y是U的子集,如果X→Y,并且对于X的任何一个真子集X′,都有X

Y,则称Y对X完全函数依赖(Full

Functional Dependency),记作Y。如果对X的某个真子集X′,有X′→Y,则称Y对部分函数依赖(Partial

Functional

Dependency),记作Xp

Y。由定义4.2可知:只有当决定因素是组合属性时,

部分函数依赖才有意义,当决定因素是单属性时,只能是完全函数依赖。.例如,在关系模式S(SNO,SN,AGE,DEPT),决定因素为单属性SNO,有SNO→(SN,AGE,DEPT),不存在部分函数依赖。Xf20五.传递函数依赖定义4.3

设有关系模式R(U),U是属性全集,X,Y,Z是U的子集,若X→Y,但Y X,而Y→Z(Y

X,Z

Y),则称Z对X传递函数依赖(Transitive

Functional

Dependency),记作:X

t

Z。如果Y→X,则X

Y,这时称Z对X直接函数依赖,而不是传递函数依赖。例如,在关系模式SCD中,SNO→DEPTN,但DEPTN

SNO,而

DEPTN→MN,则有SNOt

MN。当学生不存在重名的情况下,有

SNO→SN,SN→SNO,SNO

SN,SN→DEPTN,这时DEPTN对SNO是直接函数依赖,而不是传递函数依赖。综上所述,函数依赖分为完全函数依赖、部分函数依赖和传递函数依赖三类。214.2

范式规范化的基本思想是消除关系模式中的数据冗余,消除数据依赖中的不合适的部分,解决数据、删除时发生异常现象。这就要求关系数据库设计出来的关系模式要满足一定的条件。

把关系数据库的规范化过程中为不同程度的规范化要求设立的不同标准称为范式(NormalForm)。满足最基

化要求的关系模式叫第一范式,在第一范式中进一步满足一些要求为第二范式,以此类推就产生了第三范式等概念。22图4.3各种范式之间的关系下面逐一介绍各级范式及其规范化。23一.第一范式第一范式(

Normal

Form)是最基本的规范形式,即关系中每个属性都是不可再分的简单项。定义4.4如果关系模式R,其所有的属性均为简单属性,即每个属性都是不可再分的,则称R属于第一范式,简称1NF,记作R1NF。24然而,一个关系模式仅仅属于第一范式是不适用的。在4.1节中给出的关系模式SCD属于第一范式,异常、删但其具有大量的数据冗余,具有除异常、更新异常等弊端。为什么会存在这种问题呢?让

分析一下SCD中的函数依赖关系,它的关系键是(SNO,CNO)的属性组合,所以有:(SNO,CNO)f

SCORESNO→SN,(SNO,CNO)p

SNSNO→AGE,(SNO,CNO)p

AGESNO→DEPT,(SNO,CNO)p

DEPTMNMN,(SNO,CNO)pSNOt25可以用函数信赖图表示以上函数依赖关系,如图4.4所示。SNMNSCORE图4.4

SCD中的函数依赖关系由此可见,在SCD中,既存在完全函数依赖,又存在部分函数依赖和传递函数依赖。这种情况往往在数据库中是不允许的,也正是由于关系中存在着复杂的函数依赖,才导致数据操作中出现了种弊端。克服这些弊端的方法是用投影运算将关系分解,去掉过于复杂的函数依赖关系,向更高一级的范式进行转换。SNOCNOPPf2627二.第二范式第二范式的定义定义4.5

如果关系模式R1NF,且每个非主属性都完全函数依赖于R

的每个关系键,

则称R

属于第二范式(Second

Normal

Form),简称2NF,记作R2NF。在关系模式SCD中,SNO,CNO为主属性,AGE,DEPT,MN,MN,SCORE均为非主属性,经上述分析,存在非主属性对关系键的部分函数依赖,所以SCD2NF。由SCD分解的三个关系模式S,D,SC,其中S的关系键为SNO,D的关系键为DEPT,都是单属性,不可能存在部分函数依赖。而对于SC,(SNO,CNO)f

SCORE。所以SCD分解后,消除了非主属性对关系键的部分函数依赖,S,D,SC均属于2NF。28又如在2.4.2中,讲述全码的概念时给出的关系模式TCS(T,C,S),一个教师可以讲授多门课程,一门课程可以为多个教师讲授,同样一个学生可以选听多门课程,一门课程可以为多个学生选听,(T,C,S)三个属性的组合是关系键,T,C,S都是主属性,而无非主属性,所以也就不可能存在非主属性对关系键的部分函数依赖,TCS2NF。经以上分析,可以得到两个结论:从1NF关系中消除非主属性对关系键的部分函数依赖,则可得到2NF关系。如果R的关系键为单属性,或R的全体属性均为主属性,则R2NF。2.2NF规范化2NF规范化是指把1NF关系模式通过投影分解转换成2NF关系模式的集合。分解时遵循的基本原则就是“一事一地”,让一个关系只描述一个实体或者实体间的联系。如果多于一个实体或联系,则进行投影分解。下面以关系模式SCD为例,来说明2NF规范化的过程例

4.1

SCD(SNO,

O,SCORE)

规范到2NF。SCORE,由SNO→SN,SNO→AGE,SNO→DEPT,(SNO,CNO)f可以判断,关系SCD至少描述了两个实体,一个为学生实体,属性有SNO、SN、AGE、DEPT、MN;另一个是学生与课程的联系(选课),属性有

、 O和SCORE。根据分解的原则,4.5所示。可以将SCD分解成如下两个关系,如图29SD(SNO,SN,AGE,DEPT,MN),描述学生实体;SC(

O,SCORE),描述学生与课程的联系。SDSNOSNAGEDEPTMNS117计算机S218信息S320信息S421自动化SCSNOCNOSCORES1C190S1C285S2C557S2C680S2C7S2C570S3C10S3C270S3C485S4C193图4.5关系SD和SC30对于分解后的两个关系SD和SC,主键分别为SNO和(SNO,CNO),非主属性对主键完全函数依赖。因此,SD2NF,SC2NF,而且前面已经

,SCD的这种分解没有丢失任何信息,具有无损连接性。分解后,SD和SC的函数依赖分别如图4.6和4.7所示。SNOSNSNOCNOSCOREAGEDEPTMN图4.6

SD中的函数依赖关系图4.7

SC中的函数依赖关系311NF的关系模式经过投影分解转换成2NF后,消除了一些数据冗余。分析图4.5中SD和SC中的数据,可以看出,它们的冗余度比关系模式SCD有了较大辐度的降低。学生的、不需要重复

多次。这样便可在一定程度上避免数据更新所造成的数据不一致性的问题。由于把学生的基本信息与选课信息分开,则学生基本信息因没选课而不能的问题得到了解决,异常现象得到了部分改善。因此可以说关系模式SD和SC在性能上比SCD有了显著提高。323.2NF的缺点2NF的关系模式解决了1NF中存在的一些问题,2NF规范化的程度比1NF前进了一步,但2NF的关系模式在进行数据操作时,仍然存在着一些问题:数据冗余。每个系名和系 的名字 的次数等于该系的学生人数。。异常。当一个新系没有招生时,有关该系的信息无法删除异常。某系学生全部毕业而没有招生时,删除全部学生的记录也随之删除了该系的有关信息。4.更新异常。更换系

时,仍需改动较多的学生记录。之所以存在这些问题,是由于在SCD中存在着非主属性对主键的传递依赖。分析SCD中的函数依赖关系,SNO→SN,SNO→AGE,MN,非主属性MN对主键SNO→DEPT,DEPT→MN,SNO

tSNO传递依赖。为此,对关系模式SCD还需进一步简化,消除这种传递依赖,得到3NF。3334三.第三范式第三范式的定义定义4.6如果关系模式R2NF,且每个非主属性都不传递依赖于R的每个关系键,则称R属于第三范式(Third

Normal

Form),简称3NF,记作R3NF。第三范式具有如下性质:1.如果R3NF,则R也是2NF。2.如果R2NF,则R不一定是3NF。例如, 前面由关系模式SCD分解而得到的SD和SC都为2NF,其中,SC3NF,但在SD中存在着非主属性MN对主键SNO传递依赖,SD3NF。对于SD,应该进一步进行分解,使其转换成3NF。3NF规范化3NF规范化是指把2NF关系模式通过投影分解转换成3NF关系模式的集合。和2NF的规范化时遵循的原则相同,即“一事一地”,让一个关系只描述一个实体或者实体间的联系。下面以2NF关系模式SD为例,来说明3NF规范化的过程。35例4.2

将SD(SNO,SN,AGE,DEPT,MN)规范到3NF。

分析SD的属性组成,可以判断,关系SD实际上描述了两个实体:一个为学生实体,属性有SNO,SN,AGE,DEPT;另一个是系的实体,其属性DEPT和MN。可以将SD分解成如下两个关根据分解的原则,系,如图4.8所示。S(SNO,SN,AGE,DEPT),描述学生实体;

D(DEPT,MN),描述系的实体。36SDDEPTMN计算机信息自动化SNOSNAGEDEPTS117计算机S218信息S320信息S421自动化图4.8关系S和D对于分解后的两个关系S和D,主键分别为SNO和DEPT,不存在非主属性对主键的传递函数依赖。因此,S3NF,D3NF。37分解后,S和D的函数依赖分别如图4.9和4.10所示。SNOSNDEPTAGEDEPTMN38图4.9

S中的函数依赖关系图图4.10

D中的函数依赖关系图由以上两图可以看出,关系模式SD由2NF分解为3NF后,函数依赖关系变得更加简单,既没有非主属性对键的部分依赖,也没有非主属性对键的传递依赖,解决了2NF中存在的四个问题。1.数据冗余降低。系 的名字关系D中

一次。的次数与该系的学生人数无关,只在不存在 异常。当一个新系没有学生时,该系的信息可以直接

到关系D中,而与学生关系S无关。不存在删除异常。要删除某系的全部学生而仍然保留该系的有关信息时,可以只删除学生关系S中的相关学生记录,而不影响系关系D中的数据。不存在更新异常。更换系 时,只需修改关系D中一个相应元组的MN属性值,从而不会出现数据的不一致现象。SCD规范到3NF后,所存在的异常现象已经全部

。但是,3NF只限制了非主属性对键的依赖关系,而没有限制主属性对键的依赖关系。如果发生了这种依赖,仍有可能存在数据冗余、异常、删除异常和修改异常。这时,则需对3NF进一步规范化,消除主属性对键的依赖关系,为了解决这种问题,Boyce与Codd共同提出了一个新范式的定义,这就是Boyce-Codd范式,通常简称BCNF或BC范式。它弥补了3NF的不足。39四.BC范式1.BC范式的定义定义4.7

如果关系模式R1NF,且所有的函数依赖X→Y(Y

X),决定因素X都包含了R的一个候选键,则称R属于BC范式(

Boyce-CoddNormal

Form),记作

F。BCNF具有如下性质:1.满足BCNF的关系将消除任何属性(主属性或非主属性)对键的部分函数依赖和传递函数依赖。也就是说,如果

F,则R也是3NF。证明:采用反证法。设R不是3NF。则必然存在如下条件的函数依赖,X→Y(Y

X),Y→Z,其中X是键属性,Y是任意属性组,Z是非主属性,Z

Y,这样Y→Z函数依赖的决定因素Y不包含候选键,这与BCNF范式的定义相 ,所以如果

F,则R也是3NF。402.如果R3NF,则

不一定是

F。现举例说明。设关系模式SNC(SNO,SN,CN0,SCORE),其中

SNO代表学号,SN代表学生

并假设没有重名,CNO代表课程号,SCORE代表成绩。可以判定,SNC有两个候选键(SNO,CNO)和(SN,CNO),其函数依赖如下:SNO

SN(SNO,CNO)→SCORE(SN,CNO)→SCORE。唯一的非主属性SCORE对键不存在部分函数依赖,也不存在传递函数依赖。所以SNC3NF。但是,因为SNO

SN,即决定因素SNO或SN不包含候选键,从另一个角度说,存在着主属性对键的部分函数依赖:(SNO,p

CNO)

SN,(SN,p

CNO) SNO,所以 不是

F。正是存在着这种主属性对键的部分函数依赖关系,造成了关系SNC中存在着较大的数据冗余,学生

次数等于该生所选的课程数。从而会引起修改异常。比如,当要更改某个学生的时,则必须搜索出现该的每个学生记录,并对其逐一修改,这样容易造成数据的不一致问题。解决这一问题的办法仍然是通过投影分解进一步提高SNC的范式等级,将规范到F。412.BCNF规范化BCNF规范化是指把3NF关系模式通过投影分解转换成BCNF关系模式的集合。下面以3NF关系模式SNC为例,来说明BCNF规范化的过程。例4.3

将SNC(

O,SCORE)规范到BCNF。分析SNC数据冗余的原因,是因为在这一个关系中存在两个实体,一个为学生实体,属性有SNO、SN;另一个是选课实体,属性有、O和SCORE。根据分解的原则,

可以将SNC分解成如下两个关系:S1(SNO,SN),描述学生实体;S2(

O,SCORE),描述学生与课程的联系。对于S1,有

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论