数据库总结作业关系数据理论六

一.规范化程度判断

4NF:
消除了非平凡且非函数依赖的多值依赖
BCNF:
关系模式R<U,V>中,若每一个决定因素都包含有码,则属于BCNF范式
消除了插入删除异常,消除了主属性对码的部分和传递依赖
3NF:
设关系模式R<U,V>是1NF,若R中不存在这样的码X,属性组Y及非主属性Z(Z不包含U),使得X->Y,Y->Z,Y->\X
消除了非主属性传递依赖
2NF:
若R是1NF,且每一个非主属性完全依赖于任何一个候选码,则R是2NF;
消除了非主属性部分函数依赖
例5  关系模式R(U,F),其中U={A,B,C,D},函数依赖集F={B→D,AB→C},试求R最高属于第几范式。
AB为候选码
AB->C、D且B->D存在非主属性对码的部分依赖,最高位1NF
例6  关系模式R(U,F),其中U={A,B,C,D,E},函数依赖集F={AB→CE,E→AB,C→D},试求R最高属于第几范式。
在R(U)中,如果X→Y(Y⊈X),Y-叉号X Y→Z,Z⊈Y, 则称Z对X传递函数依赖
AB)+=ABCDE=U,且(E)+=ABCDE=U,所以AB、E为候选码;
由于F中不存在部分依赖,故R至少属于2NF;
因AB→C,AB→E,C→D,存在非主属性对码的传递依赖,所以最高为2NF。

 例7  关系模式R(U,F),其中U={A,B,C},函数依赖集F={A→B,B→A,A→C},试求R最高属于第几范式。

A和B闭包都是U,候选码仅有一个属性,故不存在部分依赖,至少为2NF;
A->B,B->A,A->C,由于A->B,B->A,属于3NF
也符合BCNF
在3NF基础上
关系模式R<U,F>中,如果每一个决定属性集都包含候选码,则R∈BCNF

例8  关系模式R(U,F),其中U={A,B,C},函数依赖集F={A→B,B→A,C→A},试求R最高属于第几范式。 

必须先求出C是候选码,唯一,不存在部分函数依赖,故2NF,但C→A,A→B,存在非主属性对码的传递依赖,所以R最高为2NF。

例9  关系模式R(U,F),其中U={A,B,C,D},函数依赖集F={A→C,D→B},试求R最高属于第几范式。
解:根据判定定理及推论得:属性AD肯定在候选码中,又因(AD)+=ABCD=U,所以AD为候选码;
而AD→B,D→B,存在非主属性对码的部分依赖,所以R最高为1NF。

例10 关系模式R(U,F),其中U={A,B,C,D},函数依赖集F={A→C,CD→B},试求R最高属于第几范式。
解:根据判定定理及推论得:属性AD肯定在候选码中,又因(AD)+=ABCD=U,所以AD为候选码;
必须逐个求解闭包,不能主观臆断。
而AD→C,A→C,存在非主属性对码的部分依赖,所以R最高为1NF。

 

二.闭包求法

先看一下求解闭包

例:关系模式R(U,F),其中U={A,B,C,D,E,I},F={A→D,AB→E,BI→E,CD→I,E→C},计算(AE)+。
1.令X={A,E},X(0)=AE;
2.计算X(1),逐一扫描集合中各个函数依赖,在F中找到左边是AE子集的函数依赖,其结果是X(1)=ACDE;
3.X(0)!=x(1),且X(1)!=U,重新扫描,得到X(2)=ACDEI
4.X(2)!=X(1),但在F中用过的函数依赖的左边属性已经没有X(2)的子集,所以不必计算下去,其闭包为ACDEI

三.求最小依赖集

例:设有依赖集:F={AB→C,C→A,BC→D,ACD→B,D→EG,BE→C,CG→BD,CE→AG},计算与其等价的最小依赖集。
我们分三个步骤实现
1.将依赖右边属性单一化,结果为
F1={...D->E,D->G,CG->B,CG->D,CE->A,CE->G...}(这里只列出了增加的部分)
2.在F1中去掉依赖左部多余的属性,结果为
已经有C->A,CE->A去掉;求CD闭包为ABCEDG,故将ACD->B改为CD->B
F2={AB→C,C→A,BC→D,CD→B,D→E,D→G,BE→C,CG→B,CG→D,CE→G}
3.在F2中去掉多余依赖
根据CD→B,CG→B,CG→D得到CG→B多余,去掉//也就是原依赖关系
F3={AB→C,C→A,BC→D,CD→B,D→E,D→G,BE→C,CG→D,CE→G }
CG→B与CD→B不能同时存在,但去掉任何一个都可以,说明最小依赖集不唯一

 

1.
右边属性单一化
F={AB→C,D→E,D→G,C→A,BE→C,BC→D,CG→B,CG→D,ACD→B,CE→A,CE→G}
2.
去除左边冗余属性
C->A,可去掉CE->A
可以推出CD->B 则可去掉ACD->B,变成CD->B 
CG
F1={AB→C,D→E,D→G,C→A,BE→C,BC→D,CG→B,CD->B,CG→D,CE→G}
3.
去除多余依赖
CG->B,CG闭包为ACGDB去除CG->B
F2={AB→C,D→E,D→G,C→A,BE→C,BC→D,CD->B,CG→D,CE→G}

 

 四.求候选码

例1:关系模式R(U,F),其中U={A,B,C,D},F={A→B,C→D},试求此关系的候选键。
可以求出各个闭包
A+=AB
B+=B
C+=CD
D+=D
AB+=AB
AC+=ACBD=U
AD+=ABD
......
因为AC+=U,A+!=U,C+!=U,故AC为其候选码
这样求法保证一定正确

 算法:

对于给定的关系RA1A2…, An)和函数依赖集F,可将其属性分为四类:

L类:仅出现在F的函数依赖左部的属性;

R类:仅出现在F的函数依赖右部的属性;

N类:在F的函数依赖左右两边均未出现的属性;

LR类:在F的函数依赖左右两边均出现的属性

定理对于给定的关系模式R及其函数依赖集F,若XX属于R)是L类属性,则X必为R的任一候选关键字的成员。

(好像是废话)

推论  对于给定的关系模式R及其函数依赖集F,若X(X属于R)是L类属性,且X+包含了R的全部属性,则X必为R的惟一候选关键字。

定理对于给定的关系模式R及其函数依赖集F,若XX属于R)是R类属性,则X不在任何候选关键字中。

定理 3 对于给定的关系模式R及其函数依赖集F,若X(X属于R)是N类属性,则X必为R的任一候选关键字的成员

推论 对于给定的关系模式R及其函数依赖集F,若XX属于R)是N类和L类组成的属性集,且X+包含了R的全部属性,则X必为R的惟一候选关键字

1、先消除部分函数依赖
R1=ABC
R2=BCDE
2、消除传递依赖
R2中BC->D,D->E
分解R2为R22=BCD,R23=DE
3、R22中非平凡函数依赖且决定因素都含有码,R23中同R22,R1也是
故分解为 R1,R22,R23

 

 

 

 

 

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值