函数依赖集投影
给定关系模式R(U,F),若有Ui是U的子集,令Fi={X->Y|X->Y是F+的子集^XY是
Ui的子集},则Fi的一个覆盖叫作F在属性集Ui上的投影(^是交)
关系模式R<U,F>的一个分解p需满足如下条件(不满足无损连接性,不好)
p={R1(U1,F1),R2(U2,F2),...,Rn(Un,Fn)}
U=(U1)U(U2)U(U3)U...U(Un),且不存在Ui是Uj的子集(i!=j),Fi为F在Ui上的投影
判断一个模式分解是否是好的模式分解应该判断该分解是否满足无损连接性和函数依赖性
如果一个分解具有无损连接性,则它能够保证不丢失信息
如果一个分解保持了函数依赖,则它可以减轻或解决各种异常情况
分解具有无损连接性和保持函数依赖型是两个相互独立的标准。具有无损连接性的分解不一定能够保证函数依赖;同样,保持函数依赖的分解不一定具有无损连接性
若要求分解保持函数依赖,那么模式分解一定能够达到3NF,但不一定能够达到BCNF
若要求分解既具有无损连接性,又保持函数依赖,则模式分解一定能够达到3NF,但不一定能够达到BCNF
若要求分解只具有无损连接性,那么模式分解一定能够达到4NF
例题1
设有关系模式R(U,F),其中:
U={A,B,C,D,E,P}
F={A->B,C->P,E->A,CE->D}
(1)请给出CE关于F的闭包
(2)请给出R的所有候选关键字
(1)(CE)F+
第一步(CE)F(0)={C,E}
第二步(CE)F(1)={C,E,P,A,D}
第三部(CE)F(2)={C,E,P,A,D,B}
所以(CE)F+={C,E,P,A,D,B}
(2)
先判断没有没有被其他属性所决定的属性CE
在判断是否满足全部函数依赖,如果满足直接退出,不满足依次添加属性直到
其满足,上以满足所以结果是CE
例题2
给定关系模型R(A,B,C,D,E,G}
F={AB->C,C->A,BC->D,ACD->B,D->BG,BE->C,CG->BD,CE->AG}
请求出F的最小函数依赖集
第一个函数依赖AB->C:(AB)F+={A,B},C不属于(AB)F+
第二个函数依赖C->A:(C)F+={C},A不属于(C)F+
第三个函数依赖BC->D:(BC)F+={A,B,C},D不属于(BC)F+
第四个函数依赖ACD->B:(ACD)F+={A,B,C,D,G},B属于(ACD)F+,ACD->B被去掉
第五个函数依赖D->BG:(D)F+={D},BG不属于(D)F+
第六个函数依赖BE->C:(BE)F+={B,E},C不属于(BE)F+
第七个函数依赖CG->BD:(CG)F+={A,C,G},BD不属于(CG)F+
第八个函数依赖CE->AG:(CE)F+={A,C,E},AG不属于(CE)F+
所以F的极小函数依赖为Fm={AB->C,C->A,BC->D,D->BG,BE->C,CG->BD,CE->AG}
1、是
2、图书编号,读者编号,借阅日期
3、(图书编号,读者编号)->作者名
(图书编号,读者编号)->出版社
4、1NF,存在非主属性对码的部分函数依赖
5、(图书编号,读者编号,借阅日期,归还日期),(图书编号,书名),(图书编号,作者名),(图书编号,出版社),(读者编号,读者姓名)