如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第八章关系模式的规范化与查询优化8.1问题的提出回顾与分析:一个关系模式应当是一个五元组:R(U,D,dom,F)(1)关系名R,它是符号化的元组语义;(2)一组属性U;(3)属性组U中属性所来自的域D;(4)属性到域的映射dom;(5)属性组U上的一组数据依赖F。本章中把关系模式看作是一个三元组:R〈U,F〉当且仅当U上的一个关系r满足F时,r称为关系模式R〈U,F〉的一个关系关系,作为一张二维表,对它有一个最起码的要求:每一个分量必须是不可分的数据项。满足了这个条件的关系模式就属于第一范式(1NF)。关系必须满足一定的完整性约束条件,这些约束:(1)对属性取值范围的限定(2)数据依赖:属性值间的相互关连(主要体现于值的相等与否)函数依赖:类似x与f(x)的关系。例1中,当Sno确定后,Sdept就确定了;Sdept确定后,Sloc就确定了。F={Sno→Sdept,Sdept→Sloc,(Sno,Cno)→G}。将D-L-C分解成三个关系模式:S(Sno,Sdept,Sno→Sdept);SG(Sno,Cno,G,(Sno,Cno)→G);Dept(Sdept,Sloc,Sdept→Sloc);这三个模式都不会发生插入异常、删除异常毛病,数据的余冗也得到了控制。问题:如何描述关系模式的“好”与“不好”呢?8.2关系模式的函数依赖定义8.2在R(U)中,如果X→Y,并且对于X的任何一个真子集X′,都有X′→Y,则称Y对X完全函数依赖,记作:X→(F)Y若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作:X→(P)Y在关系S(Sno,Sname,Sdept,Sage)中,Sno→Sdept,Sno→Sage,Sno→Sname(若无重名)。在关系SC(Sno,Cno,G)中,Sno→Cno,Sno→G(Sno,Cno)→(F)G,(Sno,Cno)就是决定因素。定义8.3在R(U)中,如果X→Y,not(Y≦X),(Y→X),Y→Z,则称Z对X传递函数依赖。加上条件(Y→X),是因为如果Y→X,则X←→Y,实际上是X→Z,是直接函数依赖而不是传递函数依赖。传递函数依赖的例子:S-L(Sno,Sdept,Sloc)8.2.2码(用函数依赖的概念定义)定义8.4设K为R(U,F)中的属性或属性组合,若K→U,则K为R的候选码(Candidatekey)。若候选码多于一个,则选定其中的一个为主码(Primarykey)。包含在任何一个候选码中的属性,叫做主属性.不包含在任何码中的属性称为非主属性或非码属性.最简单的情况,单个属性是码。最极端的情况,整个属性组是码,称为全码.关系模式S(Sno,Sname,Sdept,Sage)关系模式SC(Sno,Cno,G)(Sno,Cno)是码关系模式R(P,W,A),P:演奏者,W:作品,A:听众.全码(P,W,A)。定义8.5关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外部码(Foreignkey),也称外码。如在SC(Sno,Cno,G)中,Sno不是码,但Sno是关系模式S(Sno,Sdept,Sage)的码,则Sno是关系模式SC的外码。主码与外码提供了一个表示关系间联系的手段。关系模式S与SC的联系就是通过Sno来体现的。8.3关系模式的规范化8.3.22NF定义8.6若R∈1NF,且每一个非主属性完全函数依赖于码,则R∈2NF。例2.关系D-L-C(Sno,Sdept,Sloc,Cno,G)其中Sloc为学生住处,并且每个系的学生住在同一个地方。码(Sno,Cno)。函数依赖有:(Sno,Cno)→(F)G,Sno→Sdept,(Sno,Cno)→(P)SdeptSno→Sloc,(Sno,Cno)→(P)Sloc,Sdept→Sloc非主属性Sdept和Sloc不完全依赖于码,D-L-C不属于2NF。一个关系模式R不属于2NF,就会产生以下几个问题:1.插入异常。2.删除异常。3.修改复杂。问题在于有两种非主属性。一种如G,它对码是完全函数依赖。另一种如SDEPT,SLOC,对码不完全函数依赖。解决的办法是用投影分解,把关系模式S-L-C分解为两个关系模式:SC(Sno,Cno,G)∈2NFS-L(Sno,Sdept,Sloc)∈2NF8.3.33NF定义8.7关系模式R(U,F)中,若不存在这样的码X,属性组Y及非主属性Z(notZ≤Y),使得X→Y,(Y→X),Y→Z成立,则称R(U,F)∈3NF。由定义8.7可以证明,若R∈3NF,则每一个非主属性既不部分依赖于码,也不传递依赖于码。SC(Sn