数据库规范化理论习题.docx
- 文档编号:26498826
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:14
- 大小:25.37KB
数据库规范化理论习题.docx
《数据库规范化理论习题.docx》由会员分享,可在线阅读,更多相关《数据库规范化理论习题.docx(14页珍藏版)》请在冰豆网上搜索。
数据库规范化理论习题
规范化理论习题
1.解释下列名词:
函数依赖、部分函数依赖、完全函数依赖、传递函数依赖、候选关键字、主关键字、全关键字、1NF、2NF、3NF、BCNF、多值依赖、4NF、连接依赖、5NF、最小函数依赖集、无损分解
函数依赖:
FD(functiondependency),设有关系模式R(U),X,Y是U的子集,r是R的任一具体关系,如果对r的任意两个元组t1,t2,由t1[X]=t2[X]导致t1[Y]=t2[Y],则称X函数决定Y,或Y函数依赖于X,记为X→Y。
X→Y为模式R的一个函数依赖。
部分函数依赖:
即局部依赖,对于一个函数依赖W→A,如果存在X
W(X包含于W)有X→A成立,那么称W→A是局部依赖,否则称W→A为完全依赖。
完全函数依赖:
见上。
传递函数依赖:
在关系模式中,如果Y→X,X→A,且X
Y(X不决定Y),A
X(A不属于X),那么称Y→A是传递依赖。
候选关键字:
设K为关系模式R(U,F)中的属性或属性集合。
若K—→FU,则K称为R的一个候选码(CandidateKey),也称作为候选关键字或码。
主关键字:
若关系模式R有多个候选码,则选定其中一个作为主关键字(PrimaryKey),有时也称作为主码。
全关键字:
若关系模式R整个属性组都是码,称为全关键字(AllKey)或全码。
1NF:
第一范式。
如果关系模式R的所有属性的值域中每一个值都是不可再分解的值,则称R是属于第一范式模式。
如果某个数据库模式都是第一范式的,则称该数据库存模式属于第一范式的数据库模式。
第一范式的模式要求属性值不可再分裂成更小部分,即属性项不能是属性组合和组属性组成。
2NF:
第二范式。
如果关系模式R为第一范式,并且R中每一个非主属性完全函数依赖于R的某个候选键,则称是第二范式模式;如果某个数据库模式中每个关系模式都是第二范式的,则称该数据库模式属于第二范式的数据库模式。
(注:
如果A是关系模式R的候选键的一个属性,则称A是R的主属性,否则称A是R的非主属性。
)。
3NF:
第三范式。
如果关系模式R是第二范式,且每个非主属性都不传递依赖于R的候选键,则称R是第三范式的模式。
如果某个数据库模式中的每个关系模式都是第三范式,则称为3NF的数据库模式。
BCNF:
BC范式。
如果关系模式R是第一范式,且每个属性都不传递依赖于R的候选键,那么称R是BCNF的模式。
多值依赖:
设R(U)是属性集U上的一个关系模式,X,Y,Z是U的子集,并且Z=U-X-Y,用x,y,z分别代表属性集X,Y,Z的值,只要r是R的关系,r中存在元组(x,y1,z1)和(x,y2,z2)时,就也存在元组(x,y1,z2)和(x,y2,z1),那么称多值依赖(MultiValuedDependencyMVD)X→→Y在关系模式R中成立。
4NF:
第四范式。
设R是一个关系模式,D是R上的多值依赖集合。
如果D中成立非平凡多值依赖X→→Y时,X必是R的超键,那么称R是第四范式的模式。
连接依赖:
关系模式R(U)中,U是全体属性集,X,Y,…,Z是U的子集,当且仅当R是由其在X,Y,…,Z上投影的自然连接组成时,称R满足对X,Y,…,Z的连接依赖。
记为JD(X,Y,…,Z)。
5NF:
关于模式R中,当且仅当R中每个连接依赖均为R的候选码所蕴涵时,称R属于5NF。
最小函数依赖集:
如果函数集合F满足以下三个条件:
(1)F中每个函数依赖的右部都是单属性;
(2)F中的任一函数依赖X→A,其F-{X→A}与F是不等价的;(3)F中的任一函数依赖X→A,Z为X的子集,(F-{X→A})∪{Z→A}与F不等价。
则称F为最小函数依赖集合,记为Fmin。
无损分解:
设R是一个关系模式,F是R上的一个依赖集,R分解为关系模式的集合ρ={R1(U1),R2(U2),…,Rn(Un)}。
如果对于R中满足F的每一个关系r,都有
r=∏R1(r)∏R2(r)…∏Rn(r)
则称分解相对于F是无损连接分解(lossinglessjoindecomposition),简称为无损分解,否则就称为有损分解(lossydecomposition)。
2.现要建立关于系、学生、班级、学会等信息的一个关系数据库。
语义为:
一个系有若干专业,每个专业每年只招一个班,每个班有若干学生,一个系的学生住在同一个宿舍区,每个学生可参加若干学会,每个学会有若干学生。
描述学生的属性有:
学号、姓名、出生日期、系名、班号、宿舍区;
描述班级的属性有:
班号、专业名、系名、人数、入校年份;
描述系的属性有:
系名、系号、系办公室地点、人数;
描述学会的属性有:
学会名、成立年份、地点、人数、学生参加某会有一个入会年份。
请写出关系模式。
写出每个关系模式的最小函数依赖集,指出是否存在传递依赖,在函数依赖左部是多属性的情况下,讨论函数依赖是完全依赖,还是部分依赖。
指出各个关系模式的候选关键字、外部关键字,有没有全关键字。
解:
各关系模式如下:
学生(学号,姓名,出生年月,系名,班级号,宿舍区)
班级(班级号,专业名,系名,人数,入校年份)
系(系名,系号,系办公地点,人数)
社团(社团名,成立年份,地点,人数)
加入社团(社团名,学号,学生参加社团的年份)
学生(学号,姓名,出生年月,系名,班级号,宿舍区)
●“学生”关系的最小函数依赖集为:
Fmin={学号→姓名,学号→班级号,学号→出生年月,学号→系名,系名→宿舍区}
●以上关系模式中存在传递函数依赖,如:
学号→系名,系名→宿舍区
●候选键是学号,外部键是班级号,系名。
注意:
在关系模式中,如果Y→X,X→A,且X
Y(X不决定Y),A不属于X,那么称Y→A是传递依赖。
班级(班级号,专业名,系名,人数,入校年份)
●“班级”关系的最小函数依赖集为:
Fmin={(系名,专业名)→班级号,班级号→人数,班级号→入校年份,班级号→系名,班级号→专业名}
(假设没有相同的系,不同系中专业名可以相同)
●以上关系模式中不存在传递函数依赖。
●“(系名,专业名)→班级号”是完全函数依赖。
●候选键是(系名,专业名),班级号,外部键是系名。
系(系名,系号,系办公地点,人数)
●“系”关系的最小函数依赖集为:
Fmin={系号→系名,系名→系办公地点,系名→人数,系名→系号}
●以上关系模式中不存在传递函数依赖
●候选键是系名,系号
社团(社团名,成立年份,地点,人数)
●“社团”关系的最小函数依赖集为:
Fmin={社团名→成立年份,社团名→地点,社团名→人数}
●以上关系模式中不存在传递函数依赖。
●候选键是社团名
加入社团(社团名,学号,学生参加社团的年份)
●“加入社团”关系的最小函数依赖集为:
Fmin={(社团名,学号)→学生参加社团的年份}
●“(社团名,学号)→学生参加社团的年份”是完全函数依赖。
●以上关系模式中不存在传递函数依赖。
●候选键是(社团名,学号)。
3.设关系模式R(A,B,C,D),函数依赖集F={A→C,C→A,B→AC,D→AC,BD→A}。
1)求出R的候选码;
2)求出F的最小函数依赖集;
3)将R分解为3NF,使其既具有无损连接性又具有函数依赖保持性。
解:
(1)根据函数依赖可得:
属性B、D、BD为L类(仅出现在F的函数依赖左部)。
且在函数依赖的左部和右部均未出现的属性为0。
根据定理:
对于给定的关系模式R及其函数依赖集F,若X(X∈R)是L类属性,则X必为R的任一候选码的成员。
因此属性B、D必为候选码的成员。
且它们的闭包为:
BF+=ABC,DF+=ACD,BDF+=ABCD
再根据推论:
对于给定的关系模式R及其函数依赖集F,若X(X∈R)是L类属性,且XF+包含了R的全部属性,则X必为R的唯一候选码。
故BD是R的唯一候选码。
所以R的候选码为BD。
(2)将F中所有函数依赖的依赖因素写成单属性集形式:
F={A→C,C→A,B→A,B→C,D→A,D→C,BD→A}
F中的B→C可以从B→A和A→C推导出来,B→C是冗余的,删掉B→C可得:
F={A→C,C→A,B→A,D→A,D→C,BD→A}
F中的D→C可以从D→A和A→C推导出来,D→C是冗余的,删掉D→C可得:
F={A→C,C→A,B→A,D→A,BD→A}
F中的BD→A可以从B→A和D→A推导出来,是冗余的,删掉BD→A可得:
F={A→C,C→A,B→A,D→A}
所以F的最小函数依赖集Fmin={A→C,C→A,B→A,D→A}。
(3)由于R中的所有属性均在Fmin中都出现,对F按具有相同左部的原则分为:
R1=AC,R2=BA,R3=DA。
其中,U1={A,C},U2={B,A},U3={D,A},F1=F1=∏U1={A→C},F2=∏U2={B→A},F3=∏U3={D→A}。
所以ρ={R1(AC),R2(BA),R3(DA)}。
4.设关系模式R(A,B,C,D,E,F),函数依赖集F={AB→E,BC→D,BE→C,CD→B,CE→AF,CF→BD,C→A,D→EF},求F的最小函数依赖集。
解:
①利用分解规则,将所有的函数依赖变成右边都是单个属性的函数依赖,得F为:
F={AB→E,BC→D,BE→C,CD→B,CE→A,CE→F,CF→B,CF→D,C→A,D→E,D→F}
②去掉F中多余的函数依赖
A.设AB→E为冗余的函数依赖,则从F中去掉AB→E,得:
F1={BC→D,BE→C,CD→B,CE→A,CE→F,CF→B,CF→D,C→A,D→E,D→F}
计算(AB)F1+:
设X(0)=AB
计算X
(1):
扫描F1中各个函数依赖,找到左部为AB或AB子集的函数依赖,因为找不到这样的函数依赖。
故有X
(1)=X(0)=AB,算法终止。
(AB)F1+=AB不包含E,故AB→E不是冗余的函数依赖,不能从F中去掉。
即:
F1={AB→E,BC→D,BE→C,CD→B,CE→A,CE→F,CF→B,CF→D,C→A,D→E,D→F}
B.设BC→D为冗余的函数依赖,则从F1中去掉BC→D,得:
F2={AB→E,BE→C,CD→B,CE→A,CE→F,CF→B,CF→D,C→A,D→E,D→F}
计算(BC)F2+:
设X(0)=BC
计算X
(1):
扫描F2中的各个函数依赖,找到左部为BC或BC子集的函数依赖,得到一个C→A函数依赖。
故有X
(1)=X(0)∪A=BCA=ABC。
计算X
(2):
扫描F2中的各个函数依赖,找到左部为ABC或ABC子集的函数依赖,得到一个AB→E函数依赖。
故有X
(2)=X
(1)∪E=ABCE。
计算X(3):
扫描F2中的各个函数依赖,找到左部为ABCE或ABCE子集的函数依赖,得到三个BE→C,CE→A和CE→F函数依赖。
故有X(3)=X
(2)∪CAF=ABCEF。
计算X(4):
扫描F2中的各个函数依赖,找到左部为ABCEF或ABCEF子集的函数依赖,得到二个CF→B和CF→D函数依赖。
故有X(3)=X
(2)∪BD=ABCDEF。
因为X(3)=U,算法终止。
(BC)F2+=ABCDEF包含D,故BC→D是冗余的函数依赖,从F1中去掉。
即:
F2={AB→E,BE→C,CD→B,CE→A,CE→F,CF→B,CF→D,C→A,D→E,D→F}
C.设BE→C为冗余的函数依赖,从F2中去掉BE→C,得:
F3={AB→E,CD→B,CE→A,CE→F,CF→B,CF→D,C→A,D→E,D→F}
计算(BE)F3+:
设X(0)=BE
计算X
(1):
扫描F3中的各个函数依赖,找到左部为BE或BE子集的函数依赖,因为找不到这样的函数依赖。
故有X
(1)=X(0)=BE,算法终止。
(BE)F3+=BE不包含C,故BE→C不是冗余的函数依赖,不能从F2中去掉。
即:
F3={AB→E,BE→C,CD→B,CE→A,CE→F,CF→B,CF→D,C→A,D→E,D→F}
D.设CD→B为冗余的函数依赖,从F3中去掉CD→B,得:
F4={AB→E,BE→C,CE→A,CE→F,CF→B,CF→D,C→A,D→E,D→F}
计算(CD)F4+:
设X(0)=CD
计算X
(1):
扫描F4中的各个函数依赖,找到左部为CD或CD子集的函数依赖,得到三个C→A,D→E和D→F函数依赖。
。
故有X
(1)=X(0)∪AEF=ACDEF。
计算X
(2):
扫描F4中的各个函数依赖,找到左部为ACDEF或ACDEF子集的函数依赖,得到四个CE→A,CE→F,CF→B,CF→D函数依赖。
故有X
(2)=X
(1)∪ABDF=ABCDEF。
因为X
(2)=U,算法终止。
(CD)F4+=ABCDEF包含B,故CD→B是冗余的函数依赖,从F3中去掉。
即:
F4={AB→E,BE→C,CE→A,CE→F,CF→B,CF→D,C→A,D→E,D→F}
E.设CE→A为冗余的函数依赖,从F4中去掉CE→A,得:
F5={AB→E,BE→C,CE→F,CF→B,CF→D,C→A,D→E,D→F}
计算(CE)F5+:
设X(0)=CE
计算X
(1):
扫描F5中的各个函数依赖,找到左部为CE或CE子集的函数依赖,得到一个C→A函数依赖。
故有X
(1)=X(0)∪A=ACE。
计算X
(2):
扫描F5中的各个函数依赖,找到左部为ACE或ACE子集的函数依赖,得到一个CE→F函数依赖。
故有X
(2)=X
(1)∪F=ACEF。
计算X(3):
扫描F5中的各个函数依赖,找到左部为ACEF或ACEF子集的函数依赖,得到二个CF→B和CF→D函数依赖。
故有X(3)=X
(2)∪BD=ABCDEF。
因为X(3)=U,算法终止。
(CE)F5+=ABCDEF包含A,故CE→A是冗余的函数依赖,从F4中去掉。
即:
F5={AB→E,BE→C,CE→F,CF→B,CF→D,C→A,D→E,D→F}
F.设CE→F为冗余的函数依赖,从F5中去掉CE→F,得:
F6={AB→E,BE→C,CF→B,CF→D,C→A,D→E,D→F}
计算(CE)F6+:
设X(0)=CE
计算X
(1):
扫描F6中的各个函数依赖,找到左部为CE或CE子集的函数依赖,得到一个C→A函数依赖。
故有X
(1)=X(0)∪A=ACE。
计算X
(2):
扫描F6中的各个函数依赖,找到左部为ACE或ACE子集的函数依赖,因为找不到这样的函数依赖。
故有X
(2)=X
(1)=ACE,算法终止。
(CE)F6+=ACE不包含F,故CE→F不是冗余的函数依赖,不能从F5中去掉。
即:
F6={AB→E,BE→C,CE→F,CF→B,CF→D,C→A,D→E,D→F}
G.设CF→B为冗余的函数依赖,从F6中去掉CF→B,得:
F7={AB→E,BE→C,CE→F,CF→D,C→A,D→E,D→F}
计算(CF)F7+:
设X(0)=CF
计算X
(1):
扫描F7中的各个函数依赖,找到左部为CF或CF子集的函数依赖,得到二个CF→D和C→A函数依赖。
故有X
(1)=X(0)∪AD=ACDF。
计算X
(2):
扫描F7中的各个函数依赖,找到左部为ACDF或ACDF子集的函数依赖,得到二个D→E和D→F函数依赖。
故有X
(2)=X
(1)∪EF=ACDEF。
计算X(3):
扫描F7中的各个函数依赖,找到左部为ACDEF或ACDEF子集的函数依赖,得到一个CE→F函数依赖。
故有X(3)=X
(2)∪F=ACDEF=X
(2),算法终止。
(CF)F7+=ACDEF不包含B,故CF→B不是冗余的函数依赖,不能从F6中去掉。
即:
F7={AB→E,BE→C,CE→F,CF→B,CF→D,C→A,D→E,D→F}
H.设CF→D为冗余的函数依赖,从F7中去掉CF→D,得:
F8={AB→E,BE→C,CE→F,CF→B,C→A,D→E,D→F}
计算(CF)F8+:
设X(0)=CF
计算X
(1):
扫描F8中的各个函数依赖,找到左部为CF或CF子集的函数依赖,得到二个CF→B和C→A函数依赖。
故有X
(1)=X(0)∪AB=ABCF。
计算X
(2):
扫描F8中的各个函数依赖,找到左部为ABCF或ABCF子集的函数依赖,得到一个AB→E函数依赖。
故有X
(2)=X
(1)∪E=ABCEF。
计算X(3):
扫描F8中的各个函数依赖,找到左部为ABCEF或ABCEF子集的函数依赖,得到二个BE→C和CE→F函数依赖。
故有X(3)=X
(2)∪CF=ABCEF=X
(2),算法终止。
(CF)F7+=ABCEF不包含D,故CF→D不是冗余的函数依赖,不能从F7中去掉。
即:
F8={AB→E,BE→C,CE→F,CF→B,CF→D,C→A,D→E,D→F}
③去掉F8中各函数依赖左边多余的属性(只检查左部不是单个属性的函数依赖)
由于F8中各函数依赖左边无多余的属性,故:
Fmin={AB→E,BE→C,CE→F,CF→B,CF→D,C→A,D→E,D→F}
5.判断下面的关系模式是不是BCNF,为什么
任何一个二元关系。
关系模式选课(学号,课程号,成绩),函数依赖集F={(学号,课程号)→成绩}。
关系模式R(A,B,C,D,E,F),函数依赖集F={A→BC,BC→A,BCD→EF,E→C}。
解:
(1)是BCNF。
二元关系中或为全关键字,或为一个单属性候选关键字。
(2)是BCNF。
关系模式中只有一个候选关键字。
(3)不是BCNF。
因为模式中存在候选关键字为AD、BCD和BE,显然C对AD是部分依赖。
∵U1∩U2=EU1-U2=AB
U1∩U2→U1-U2={E→AB}={E→A,E→B}
U1∩U2→U1-U2∈F+
∴该分解具备无损连接。
6.设关系模式R(B,O,I,S,Q,D),函数依赖集F={S→D,I→S,IS→Q,B→Q}。
求出R的主码。
把R分解为BCNF,且具有无损连接性。
解:
(1)R的主关键字为IBO。
(2)Fmin={S→D,I→S,I→Q,B→Q}
令ρ=BOISQD
①由于R的关键字为IBO,选择S→D分解
得出:
ρ={S1,S2}
其中:
S1=SD,F1={S→D}
S2=BOISQ,F2={I→S,I→Q,B→Q}。
显然,S2不服从BCNF,需继续分解。
②对S2分解。
S2的关键字为IBO,选择I→S分解。
得出:
ρ={S1,S3,S4}。
其中:
S3=IS,F3={I→S}
S4=BOIQ,F4={I→Q,B→Q}。
显然,S4不服从BCNF,还需继续分解。
③对S4分解。
S4的关键字为IBO,选择I→Q分解。
得出:
ρ={S1,S3,S5,S6}
其中S5=IQ,F5={I→Q}
S6=BIOF6=Φ
④最后的分解为:
ρ={SD,IS,IQ,BIO}
7.设有关系模式R(A,B,C),函数依赖集F={AB→C,C→→A},R属于第几范式为什么
解:
BCNF。
由于A多值依赖于动而C不是码.故不服从4NF。
但在函数依赖式中C依赖于码AB.故该模式服从BCNF。
8.设有关系模式R(A,B,C,D),函数依赖集F={A→B,B→A,AC→D,BC→D,AD→C,BD→C,A→→CD,B→→CD}。
求R的主码。
R是否为4NF为什么
R是否为BCNF为什么
R是否为3NF,为什么
解:
l)候选码为AC,BC.AD,BD、可选其中之一为主码。
2)不服从4NF。
在多值依赖中泱定因素中不包含码。
3)不服从BCNF。
在函数依赖中决定因素中不包含码。
4)服从3NF。
该模式中不存在非主属性。
9.设关系模式R(U,F)的属性集U={A,B,C},函数依赖集F={A→B,B→C},试求属性闭包A+。
解:
设X(0)=A;
计算X
(1):
扫描F中的各个函数依赖,找到左部为A的函数依赖,得到一个:
A→B。
故有X
(1)=A∪B,即X
(1)=AB。
计算X
(2):
扫描F中的各个函数依赖,找到左部为AB或A、B的函数依赖,得到一个:
B→C。
故有X
(2)=AB∪C,即X
(2)=ABC=U。
算法终止。
故A+=ABC。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 规范化 理论 习题