数据库规范化理论习题.doc_第1页
数据库规范化理论习题.doc_第2页
数据库规范化理论习题.doc_第3页
数据库规范化理论习题.doc_第4页
数据库规范化理论习题.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

。规范化理论习题1. 解释下列名词:函数依赖、部分函数依赖、完全函数依赖、传递函数依赖、候选关键字、主关键字、全关键字、1NF、2NF、3NF、BCNF、多值依赖、4NF、连接依赖、5NF、最小函数依赖集、无损分解函数依赖:FD(function dependency),设有关系模式R(U),X,Y是U的子集, r是R的任一具体关系,如果对r的任意两个元组t1,t2,由t1X=t2X导致t1Y=t2Y, 则称X函数决定Y,或Y函数依赖于X,记为XY。XY为模式R的一个函数依赖。 部分函数依赖:即局部依赖,对于一个函数依赖WA,如果存在XW(X包含于W)有XA成立, 那么称WA是局部依赖,否则称WA为完全依赖。 完全函数依赖:见上。传递函数依赖:在关系模式中,如果YX,XA,且XY(X不决定Y), AX(A不属于X),那么称YA是传递依赖。 候选关键字:设K为关系模式R(U,F)中的属性或属性集合。若KF U,则K称为R的一个候选码(Candidate Key),也称作为候选关键字或码。主关键字:若关系模式R有多个候选码,则选定其中一个作为主关键字(Primary Key),有时也称作为主码。全关键字:若关系模式R整个属性组都是码,称为全关键字(All Key)或全码。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),那么称多值依赖(MultiValued Dependency MVD) XY在关系模式R中成立。4NF:第四范式。设R是一个关系模式,D是R上的多值依赖集合。如果D中成立非平凡多值依赖XY时, 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中的任一函数依赖XA,其F-XA与F是不等价的;(3)F中的任一函数依赖XA,Z为X的子集,(F-XA)ZA与F不等价。则称F为最小函数依赖集合,记为Fmin。无损分解:设R是一个关系模式,F是R上的一个依赖集,R分解为关系模式的集合R1(U1),R2(U2), ,Rn(Un)。如果对于R中满足F的每一个关系r,都有rR1(r) R2(r) Rn(r)则称分解相对于F是无损连接分解(lossingless join decomposition),简称为无损分解,否则就称为有损分解(lossy decomposition)。2. 现要建立关于系、学生、班级、学会等信息的一个关系数据库。语义为:一个系有若干专业,每个专业每年只招一个班,每个班有若干学生,一个系的学生住在同一个宿舍区,每个学生可参加若干学会,每个学会有若干学生。描述学生的属性有:学号、姓名、出生日期、系名、班号、宿舍区;描述班级的属性有:班号、专业名、系名、人数、入校年份;描述系的属性有:系名、系号、系办公室地点、人数;描述学会的属性有:学会名、成立年份、地点、人数、学生参加某会有一个入会年份。 请写出关系模式。 写出每个关系模式的最小函数依赖集,指出是否存在传递依赖,在函数依赖左部是多属性的情况下,讨论函数依赖是完全依赖,还是部分依赖。 指出各个关系模式的候选关键字、外部关键字,有没有全关键字。解:各关系模式如下:学生(学号,姓名,出生年月,系名,班级号,宿舍区) 班级(班级号,专业名,系名,人数,入校年份) 系(系名,系号,系办公地点,人数) 社团(社团名,成立年份,地点,人数) 加入社团(社团名,学号,学生参加社团的年份) 学生(学号,姓名,出生年月,系名,班级号,宿舍区) “学生”关系的最小函数依赖集为: Fmin=学号姓名,学号班级号,学号出生年月,学号系名,系名宿舍区 以上关系模式中存在传递函数依赖,如:学号系名,系名宿舍区 候选键是学号,外部键是班级号,系名。 注意: 在关系模式中,如果YX,XA,且XY(X不决定Y), A不属于X,那么称YA是传递依赖。 班级(班级号,专业名,系名,人数,入校年份) “班级”关系的最小函数依赖集为: Fmin=(系名,专业名)班级号,班级号人数,班级号入校年份,班级号系名,班级号专业名 (假设没有相同的系,不同系中专业名可以相同) 以上关系模式中不存在传递函数依赖。 “(系名,专业名)班级号”是完全函数依赖。 候选键是(系名,专业名),班级号,外部键是系名。 系(系名,系号,系办公地点,人数) “系”关系的最小函数依赖集为: Fmin=系号系名,系名系办公地点,系名人数,系名系号 以上关系模式中不存在传递函数依赖 候选键是系名,系号 社团(社团名,成立年份,地点,人数) “社团”关系的最小函数依赖集为: Fmin=社团名成立年份,社团名地点,社团名人数 以上关系模式中不存在传递函数依赖。 候选键是社团名 加入社团(社团名,学号,学生参加社团的年份)“加入社团”关系的最小函数依赖集为: Fmin=(社团名,学号)学生参加社团的年份 “(社团名,学号)学生参加社团的年份”是完全函数依赖。以上关系模式中不存在传递函数依赖。 候选键是(社团名,学号)。3. 设关系模式R(A,B,C,D),函数依赖集FAC,CA,BAC,DAC,BDA。1) 求出R的候选码;2) 求出F的最小函数依赖集;3) 将R分解为3NF,使其既具有无损连接性又具有函数依赖保持性。解:(1)根据函数依赖可得:属性B、D、BD为L类(仅出现在F的函数依赖左部)。且在函数依赖的左部和右部均未出现的属性为0。根据定理:对于给定的关系模式R及其函数依赖集F,若X(XR)是L类属性,则X必为R 的任一候选码的成员。因此属性B、D必为候选码的成员。且它们的闭包为:BF+=ABC,D F+=ACD,BD F+=ABCD再根据推论:对于给定的关系模式R及其函数依赖集F,若X(XR)是L类属性,且X F+包含了R的全部属性,则X必为R的唯一候选码。故BD是R的唯一候选码。所以R的候选码为BD。(2)将F中所有函数依赖的依赖因素写成单属性集形式:FAC,CA,BA,BC,DA,DC,BDAF中的BC可以从BA和AC推导出来,BC是冗余的,删掉BC可得:FAC,CA,BA,DA,DC,BDAF中的DC可以从DA 和 AC推导出来,DC是冗余的,删掉DC可得:FAC,CA,BA,DA,BDAF中的BDA可以从BA 和 DA推导出来,是冗余的,删掉BDA可得:FAC,CA,BA,DA 所以F的最小函数依赖集FminAC,CA,BA,DA 。(3) 由于R中的所有属性均在Fmin中都出现,对F按具有相同左部的原则分为:R1=AC,R2=BA,R3=DA。其中,U1=A,C,U2=B,A,U3=D,A,F1= F1U1AC,F2U2BA,F3U3DA。所以=R1(AC),R2(BA),R3(DA) 。4. 设关系模式R(A,B,C,D,E,F),函数依赖集FA BE,BCD,BEC,CDB,CEAF,CFBD,CA,DEF,求F的最小函数依赖集。解: 利用分解规则,将所有的函数依赖变成右边都是单个属性的函数依赖,得F为:F A BE,BCD,BEC,CDB,CEA,CEF,CFB,CFD,CA,DE,DF 去掉F中多余的函数依赖A设ABE为冗余的函数依赖,则从F中去掉ABE,得:F1= BCD,BEC,CDB,CEA,CEF,CFB,CFD,CA,DE,DF计算(AB)F1+:设X(0)=AB计算X(1):扫描F1中各个函数依赖,找到左部为AB或AB子集的函数依赖,因为找不到这样的函数依赖。故有X(1)=X(0)=AB,算法终止。(AB)F1+= AB不包含E,故ABE不是冗余的函数依赖,不能从F中去掉。即:F1= A BE,BCD,BEC,CDB,CEA,CEF,CFB,CFD,CA,DE,DFB设BCD为冗余的函数依赖,则从F1中去掉BCD,得:F2=A BE,BEC,CDB,CEA,CEF,CFB,CFD,CA,DE,DF计算(BC)F2+:设X(0)=BC计算X(1):扫描F2中的各个函数依赖,找到左部为BC或BC子集的函数依赖,得到一个CA函数依赖。故有X(1)=X(0)A=BCA=ABC。计算X(2):扫描F2中的各个函数依赖,找到左部为ABC或ABC子集的函数依赖,得到一个A BE函数依赖。故有X(2)=X(1)E=ABCE。计算X(3):扫描F2中的各个函数依赖,找到左部为ABCE或ABCE子集的函数依赖,得到三个BEC,CEA和 CEF 函数依赖。故有X(3)=X(2)CAF=ABCEF。计算X(4):扫描F2中的各个函数依赖,找到左部为ABCEF或ABCEF子集的函数依赖,得到二个CFB和CFD 函数依赖。故有X(3)=X(2)BD=ABCDEF。因为X(3)=U,算法终止。(BC)F2+=ABCDEF包含D,故BCD是冗余的函数依赖,从F1中去掉。即:F2=A BE,BEC,CDB,CEA,CEF,CFB,CFD,CA,DE,DFC设BEC为冗余的函数依赖,从F2中去掉BEC,得:F3=A BE, CDB,CEA,CEF,CFB,CFD,CA,DE,DF计算(BE)F3+:设X(0)=BE计算X(1):扫描F3中的各个函数依赖,找到左部为BE或BE子集的函数依赖,因为找不到这样的函数依赖。故有X(1)=X(0)=BE,算法终止。(BE)F3+= BE不包含C,故BEC不是冗余的函数依赖,不能从F2中去掉。即:F3=A BE, BEC,CDB,CEA,CEF,CFB,CFD,CA,DE,DFD设CDB为冗余的函数依赖,从F3中去掉CDB,得:F4=A BE,BEC,CEA,CEF,CFB,CFD,CA,DE,DF计算(CD)F4+:设X(0)=CD计算X(1):扫描F4中的各个函数依赖,找到左部为CD或CD子集的函数依赖,得到三个CA,DE和 DF函数依赖。故有X(1)=X(0) AEF =ACDEF。计算X(2):扫描F4中的各个函数依赖,找到左部为ACDEF或ACDEF子集的函数依赖,得到四个CEA,CEF,CFB,CFD 函数依赖。故有X(2)=X(1)ABDF=ABCDEF。因为X(2)=U,算法终止。(CD)F4+=ABCDEF包含B,故CDB是冗余的函数依赖,从F3中去掉。即:F4=A BE,BEC,CEA,CEF,CFB,CFD,CA,DE,DFE设CEA为冗余的函数依赖,从F4中去掉CEA,得:F5=A BE,BEC,CEF,CFB,CFD,CA,DE,DF计算(CE)F5+:设X(0)=CE计算X(1):扫描F5中的各个函数依赖,找到左部为CE或CE子集的函数依赖,得到一个CA函数依赖。故有X(1)=X(0)A=ACE。计算X(2):扫描F5中的各个函数依赖,找到左部为ACE或ACE子集的函数依赖,得到一个CEF函数依赖。故有X(2)=X(1)F=ACEF。计算X(3):扫描F5中的各个函数依赖,找到左部为ACEF或ACEF子集的函数依赖,得到二个CFB和CFD 函数依赖。故有X(3)=X(2)BD=ABCDEF。因为X(3)=U,算法终止。(CE)F5+=ABCDEF包含A,故CEA是冗余的函数依赖,从F4中去掉。即:F5=A BE,BEC, CEF,CFB,CFD,CA,DE,DFF设CEF为冗余的函数依赖,从F5中去掉CEF,得:F6=A BE,BEC,CFB,CFD,CA,DE,DF计算(CE)F6+:设X(0)=CE计算X(1):扫描F6中的各个函数依赖,找到左部为CE或CE子集的函数依赖,得到一个CA函数依赖。故有X(1)=X(0)A=ACE。计算X(2):扫描F6中的各个函数依赖,找到左部为ACE或ACE子集的函数依赖,因为找不到这样的函数依赖。故有X(2)=X(1)=ACE,算法终止。(CE)F6+=ACE不包含F,故CEF不是冗余的函数依赖,不能从F5中去掉。即:F6=A BE,BEC,CEF,CFB,CFD,CA,DE,DFG设CFB为冗余的函数依赖,从F6中去掉CFB,得:F7=A BE,BEC,CEF,CFD,CA,DE,DF计算(CF)F7+:设X(0)=CF计算X(1):扫描F7中的各个函数依赖,找到左部为CF或CF子集的函数依赖,得到二个CFD和CA函数依赖。故有X(1)=X(0)AD=ACDF。计算X(2):扫描F7中的各个函数依赖,找到左部为ACDF或ACDF子集的函数依赖,得到二个DE和DF函数依赖。故有X(2)=X(1)EF=ACDEF。计算X(3):扫描F7中的各个函数依赖,找到左部为ACDEF或ACDEF子集的函数依赖,得到一个CEF函数依赖。故有X(3)=X(2)F=ACDEF= X(2),算法终止。(CF)F7+=ACDEF不包含B,故CFB不是冗余的函数依赖,不能从F6中去掉。即:F7=A BE,BEC,CEF,CFB,CFD,CA,DE,DFH设CFD为冗余的函数依赖,从F7中去掉CFD,得:F8=A BE,BEC,CEF,CFB,CA,DE,DF计算(CF)F8+:设X(0)=CF计算X(1):扫描F8中的各个函数依赖,找到左部为CF或CF子集的函数依赖,得到二个CFB和CA函数依赖。故有X(1)=X(0)AB=ABCF。计算X(2):扫描F8中的各个函数依赖,找到左部为ABCF或ABCF子集的函数依赖,得到一个A BE函数依赖。故有X(2)=X(1)E=ABCEF。计算X(3):扫描F8中的各个函数依赖,找到左部为ABCEF或ABCEF子集的函数依赖,得到二个BEC和CEF函数依赖。故有X(3)=X(2)CF= ABCEF = X(2),算法终止。(CF)F7+= ABCEF不包含D,故CFD不是冗余的函数依赖,不能从F7中去掉。即:F8=A BE,BEC,CEF,CFB,CFD,CA,DE,DF 去掉F8中各函数依赖左边多余的属性(只检查左部不是单个属性的函数依赖)由于F8中各函数依赖左边无多余的属性,故:Fmin=ABE,BEC,CEF,CFB,CFD,CA,DE,DF5. 判断下面的关系模式是不是BCNF,为什么? 任何一个二元关系。 关系模式选课(学号,课程号,成绩),函数依赖集F(学号,课程号) 成绩。关系模式R(A,B,C,D,E,F),函数依赖集FABC,BCA,BCDEF,EC。解:(1) 是BCNF。二元关系中或为全关键字,或为一个单属性候选关键字。 (2) 是BCNF。关系模式中只有一个候选关键字。 (3) 不是BCNF。因为模式中存在候选关键字为AD、BCD和BE,显然C对AD是部分依赖。 U1U2E U1U2AB U1U2U1U2=EAB=EA,EB U1U2U1U2F+ 该分解具备无损连接。 6. 设关系模式R(B,O,I,S,Q,D),函数依赖集FSD,IS,ISQ,BQ。 求出R的主码。 把R分解为BCNF,且具有无损连接性。解:(1) R的主关键字为IBO。 (2) FminSD,IS,IQ,BQ 令=BOISQD 由于R的关键字为IBO,选择SD分解 得出: =S1,S2 其中:S1=SD, F1=SD S2=BOISQ, F2=I

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论