预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共57页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

4.3关系模式的分解*4.3.2无损连接分解例4.10(1)未丢失信息的分解:r1⋈r2=r在泛关系模式R分解成数据库模式ρ={R1,…,Rk}时,泛关系r在ρ的每一模式Ri(1≤i≤n)上投影后再连接起来,比原来r中多出来的元组,称为“寄生元组”(SpuriousTuple)。实际上,寄生元组表示着错误的信息。寄生元组也就是4.1.3节模式设计准则4中提到的额外元组(在上节NO15中)。无损的‘损’指的是信息丢失而不是元组丢失.如果一个分解不具有‘无损’的性质,那么泛关系在投影连接后就可能产生寄生元组。寄生元组表示着错误的信息r的投影连接表达式πR1(r)⋈…⋈πRk(r)用符号mρ(r)表示,即mρ(r)=⋈πRi(r)。设ρ={R1,…,Rk}是关系模式R的一个分解,r是R的任一关系,ri=πRi(r)(1≤i≤k),那么有下列性质:①rmρ(r);②若s=mρ(r),则πRi(s)=ri;③mρ(mρ(r))=mρ(r),这个性质称为幂等性(idempotent)。r=mρ(r)时就是无损连接分解4.3.3无损分解的测试算法(算法4.3)例4.11设关系模式R(ABCD),R分解成ρ={AB,BC,CD}。如果R上成立的函数依赖集F1={B→A,C→D},那么ρ相对于F1是否无损分解?续例4.11设关系模式R(ABCD),R分解成ρ={AB,BC,CD}。如果R上成立的函数依赖集F1={A→B,C→D},那么ρ相对于F1是否无损分解?ABCDEABCDE定理4.6设ρ={R1,R2}是关系模式R的一个分解,F是R上成立的FD集,那么分解ρ相对于F是无损分解的充分必要条件是(R1∩R2)→(R1-R2)或(R1∩R2)→(R2-R1)。(可用CHASE(追踪)算法证明)定理4.7如果FDX→Y在模式R上成立,且X∩Y=φ,那么R分解成ρ={R-Y,XY}是无损分解。4.3.4保持函数依赖的分解两个数据库模式的等价问题,这种等价包括数据等价和依赖等价两个方面。数据等价是指两个数据库实例应表示同样的信息内容,用“无损分解”衡量。如果是无损分解,那么对泛关系反复的投影和连接都不会丢失信息。依赖等价是指两个数据库模式应有相同的依赖集闭包。在依赖集闭包相等情况下,数据的语义是不会出差错的。违反数据等价或依赖等价的分解不是一个好的模式设计。一个无损连接分解不一定是保持函数依赖的一个保持函数依赖的分解也不一定是无损连接的没有必然联系(见下例)例:设关系模式R(ABC),ρ={AB,AC}是R的一个分解。试分析分别在各种FD的情况下,ρ是否具有无损分解和保持FD的分解特性。解:①相对于F1={A→B},分解ρ是无损分解,且保持FD的分解。②相对于F2={A→C,B→C},分解ρ是无损分解,但不保持FD集(丢失了B→C)。③相对于F3={B→A},分解ρ是损失分解,但保持FD集的分解。④相对于F4={C→B,B→A},分解ρ是损失分解,且不保持FD集(丢失了C→B)。4.4关系模式的范式各种范式之间的关系4.4.1第一范式(1NF)4.4.2第二范式(2NF)属性集X本章开始例:教学管理数据库(P137)SCD(SNo,SN,Age,Dept,MN,CNo,Score)如果把SCD分解成:(将部分函数依赖分离出来)SD(SNo,SN,Age,Dept,MN)C(SNo,CNo,SCORE)SD与C都是2NF模式。部分函数依赖消失,分数关系C不存在冗余、修改、删除、插入异常。但还是有系、系主任的冗余和操作异常。说明2NF不是理想的模式分解。算法4.5分解成2NF模式集的算法设关系模式R(U),主键是W,R上还存在FD:X→Z,并且Z是非主属性,X⊂W,那么W→Z就是一个部分函数依赖。此时应把R分解成两个模式R1(XZ),主键是X;(将部分依赖分解出来)R2(Y),其中Y=U-Z,主键仍是W,外键是X(REFERENCES参照R1)。利用外键和主键的连接可以从R1和R2重新得到R。如果R1和R2还不是2NF,则重复上述过程,一直到数据库模式中每一个关系模式都是2NF为止。定义4.16:如果关系模式R是1NF,且每个非主属性都不传递函数依赖于R的候选键,那么称R属于第三范式(3NF)的模式。如果数据库模式中每个关系模式都是3NF,则称其为3NF的数据库模式。例:在上边例中,SD(SNo,SN,Age,Dept,MN)主键SNO,无部分函数依赖,是2NF模式。SD中存在函数依赖SNO→Dept和Dept→MN,那么SNO→MN就是一个传递依赖,SD不是3NF模式。此时也会出现冗余和异常操作。譬如一个系有500学生,那么系和系主任就会重复500次。还有操作异常。若将SD分解成S(SNo,SN,Age,Dept)和D(Dept,MN)已无传递函数依