数据库范式与关系模式示例
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第七章补充讲义
一、范式举例
BCNF.如:课程号与学号)
例4:R(X,Y,Z),F={XY->Z},R为几范式?
BCNF。
例5:R(X,Y,Z),F={Y->Z,XZ->Y},R为几范式?
3NF。R的候选码为{XZ,XY},(R中所有属性都是主属性,无传递依赖)
二、求闭包
数据库设计人员在对实际应用问题调查中,得到的结论往往是零散的、不规范的(直观问题好办,复杂问题难办了),所以,这对分析数据模型,达到规范化设计要求,还有差距,为此,从规范数据依赖集合的角度入手,找到正确分析数据模型的方法,以确定关系模式的规范化程度。
例1.已知关系模式R(U、F),其中,U={A,B,C,D,E}; F={AB→ C, B→ D, EC → B , AC→B} ,求(AB)+F.
解:设X(0)=AB
○1计算X(1),在F中找出左边为AB子集的FD,其结果是:AB→C,B→D
∴X(1)=X(0)UB=ABUCD=ABCD 显然,X(1)≠X(0)
○2计算X(2),在F中找出左边为ABCD子集的FD,其结果是:C→E,AC→B
∴X(2)=X(1)UB=ABCDUBE=ABCDE 显然,X(2)=U
所以,(AB)+ F=ABCDE.(等于U,所以AB是唯一候选关键字)
例2.设有关系模式R(U、F),其中U={A,B,C,D,E,I};F={A→D,AB→E,B→E,CD→I,E→C},计算(AE)+
解:令X={AE},X(0)=AE
○1在F中找出左边是AE子集的FD,其结果是:A→D,E→C
∴X(1)=X(0)UB=X(0)UDC=ACDE 显然,X(1)≠X(0)
○2在F中找出左边是ACDE子集的FD,其结果是:CD→I
∴X(2)=X(1)UI=ACDEI
显然,X(2)≠X(1),但F中未用过的函数依赖的左边属性已含有X(2)的子集,所以不必再计算下去,即(AE)+=ACDEI.
因为,X(3)=X(2),所以,算法结束。
三、求最小依赖集
最小依赖集是对函数依赖集合进行规范的结果,这样才能对一般关系模式进行准确分析。
例1.设函数依赖集F={AB→CE,A→C,GP→B,EP→A,CDE→P,HB→P,D→HG,ABC→PG},求与F等价的最小函数依赖集。
解:○1将F中依赖右部属性单一化:
F1= AB AB→E
HB→P A→C
D→H GP→B
D→G EP→A
ABC→P CDE→P
ABC→G
○2由于有A→C,所以AB→C为多余成份:
所以F2= AB→E HB→P
A→C D→H
GP→B D→G
EP→A ABC→P
CDE→P ABC→G
○3经过分析认为F2中无多余依赖,则:
Fmin=F2为最小函数依赖集。即Fmin={ AB→E ,HB→P, A→C ,D→H, GP→B ,D→G, EP→A , ABC→P,CDE→P,ABC→G}.
例2.已知F={A→B,B→A,B→C,A→C,C→A},求Fmin.
解:○1F1= A→B A→C
B A B→C
C A
○2Fmin1= A→B A→C
B→A C→A
Fmin2= A→B C→A
B→C
例3.已知F={A→C,C→A,B→AC,D→AC},求Fmin。
解:○1将F中依赖的右部属性单一化:
F1= A→C C→A
B→A B→C
D→A D→C
○2由于B→A,A→C,所以B→C是多余成份。
又由于D→A,A→C,所以D→C是多余成份。
所以F2= A→C C→A
B→A D→A
因为F2中所有依赖的左部都是单属性,所以不存在依赖左部的有多余属性。
所以Fmin=A→C C→A
B→A D→A
即Fmin={A→C,C→A,B→A ,D→A}.
例4.设有关系模式R(U,F),其中:U={E,F,G,H},F={E→G,G→E,F→EG,H→EG,FH→E},求F 的最小依赖集。
解:○1将F中依赖右部属性单一化:
F1= E→G H
G→E H
F→E FH
F→G
○2由于有F→E,FH→E为多余成份:(不是因为有H→E,而是,F后面加一个H和不加一样)
所以F2= E→G H→E
G→E H→G
F→E F→G
○3由于F2中,F→E和F→G以及H→E和H→G之一为多余,则:
Fmin1={E→G,G→E,F→G,H→G}
Fmin2={E→G,G→E,F→E,H→E} Fmin3,Fmin4同理。
四、求候选码
1. 候选关键字求解理论
对于给定的关系R(A1,A2,…,An)和函数依赖集F,可将其属性分为四类:
●L类:仅出现在F的函数依赖左部的属性
●R类:仅出现在F的函数依赖右部的属性
●N类:在F的函数依赖左右两边均未出现的属性
●LR类:在F的函数依赖左右两边均出现的属性
定理1:对于给定的关系模式R及其函数依赖集F,若X(X∈R)是L类属性,则X必为R 的任一候选关键字成员。
推论1:对于给定的关系模式R及其函数依赖集F,若X(X∈R)是L类属性,且X包含了R 的全部属性,则X必为R的唯一候选关键字。
定理2:对于给定的关系模式R及其函数依赖集F,若X(X∈R)是R类属性,则X不在任何候选关键字中。
定理3:设有关系模式R及其函数依赖集F,若X是R的N类属性,则X必包含在R的任一候选关键字中。
推论2:对于给定的关系模式R及其函数依赖集F,若X是R的N类和L类组成的属性集,且X+包含了R的全部属性,则X必为R的唯一候选关键字。
2. 单属性依赖集图论求解法(多属性不行)
I:关系模式R,R的单属性函数依赖集F。
O:R的所有候选关键字。
算法:
○1求F的最小依赖集Fmin。
○2构造FDG(函数依赖图)。
○3从图中找出关键属性集X(X可为空)。
○4查看G中有无独立回路,若无则输出X即为R的唯一候选关键字,转○6,若有,则转○5。
○5从各独立回路中各取一结点对应的属性与X组合成一候选关键字,并重复这一过程取尽所有可解的组合,即为R的全部候选关键字。
○6结束。