您好,欢迎访问三七文档
数据库考试主要题型:选择题,填空题,判断题;综合设计题(或解答题):写关系代数表达式,求解关系代数表达式的结果;写SQL语句;根据给定的描述信息画E-R图,并转换为相应关系模式;画关系代数语法树和并进行优化;求关系模式的码;求最小函数依赖集;判断范式的级别等;事务并发性的分析等。下列关系模式属于第几范式?并说明理由。例1.R({A,B,C,D},{(A,C)→B,A→D})答:由题目可知,关系的候选码为(A,C)。由于存在A→D,说明存在非主属性D对码(A,C)的部分函数依赖,不符合2NF,则属于1NF。例2.R({S#,SD,SL,SN},{S#→SD,S#→SN,S#→SL,SD→SL})答:属2NF。因为由题目知,候选码是S#,但由于S#→SD,SD→SL,说明存在传递函数依赖。并且不存在部分函数依赖,故属2NF。例3.设有关系模式SCT(S,C,Tn),其中S表示学生学号,C表示课程号,Tn表示教师姓名。每个教师只能上一门课,每门课可由多个教师讲授,学生若选定了某教师则选定了某一门固定的课程,学生与课程的关系确定后,教师即可唯一确定。问:(1)该关系模式的候选码是什么?(2)请写出该关系模式中的所有函数依赖。(3)该关系模式是否满足BC范式?若不满足,请确定它满足第几范式,并说明理由。答:(1)该关系模式的候选码是(S,C),(S,Tn)。(2)该关系模式中的函数依赖如下:(S,C)→Tn,(S,Tn)→C,Tn→C。(3)在Tn→C中,决定因素Tn不含有候选码,所以SCT不满足BCNF。该关系模式满足3NF,因为不存在任何非主属性对码的传递函数依赖或部分函数依赖,故满足3NF。例4.P306第9题:设T1、T2、T3是如下三个事务,A的初值为0。T1:A=A+2;T2:A=A*2;T3:A=A**2(1)若这三个事务允许并发执行,则有多少种可能的正确结果,请一一列出。(2)请给出一个可串行化的调度,并给出执行结果。(3)请给出一个非串行化的调度,并给出执行结果。(4)若这三个事务都遵循两段锁协议,请给出一个不产生死锁的可串行化调度。(5)若这三个事务都遵循两段锁协议,请给出一个产生死锁的调度。(1)若这三个事务允许并发执行,则有多少种可能的正确结果,请一一列出。答:A的最终结果可能是2、4、8、16。因为三个事务的串行执行结果都是正确的,而它们的串行执行顺序有:T1T2T3,T1T3T2,T2T1T3,T2T3T1,T3T1T2,T3T2T1共六种,它们串行执行对应的A的结果依次是16、8、4、2、4、2。(2)请给出一个可串行化的调度,并给出执行结果。T1T2T3SlockA,R(A)=0UnlockAXlockAA=A+2,W(A)=2UnlockASlockA等待等待获得SlockAR(A)=2,UnlockAXlockAA=A*2,W(A)=4UnlockASlockA等待等待获得SlockAR(A)=4,UnlockAXlockAA=A**2,W(A)=16UnlockA(3)请给出一个非串行化的调度,并给出执行结果。解答:给出的非串行化调度如下页图所示。最终执行结果是A=0。T1T2T3SlockA,R(A)=0UnlockAXlockA等待获得XlockAA=A+2,W(A)=2UnlockASlockAR(A)=0UnlockAXlockA等待等待获得XlockAA=A*2,W(A)=0UnlockASlockA等待获得SlockAR(A)=2,UnlockAXlockAA=A**2,W(A)=4UnlockA(4)若这三个事务都遵循两段锁协议,请给出一个不产生死锁的可串行化调度。T1T2T3SlockA,R(A)=0XlockAA=A+2,W(A)=2UnlockAUnlockASlockA等待获得SlockAR(A)=2XlockA等待获得XlockAA=A*2,W(A)=4UnlockAUnlockASlockA等待等待等待获得SlockAR(A)=4XlockAA=A**2,W(A)=16UnlockAUnlockA(5)若这三个事务都遵循两段锁协议,请给出一个产生死锁的调度。T1T2T3SlockAR(A)=0XlockA等待等待…SlockAR(A)=0XlockA等待等待…SlockAR(A)=0XlockA等待…例5.教材P275第2题:对学生-课程数据库有如下的查询:SELECTCnameFROMStudent,SC,CourseWHEREStudent.Sno=SC.SnoANDSC.Cno=Course.CnoANDStudent.Sdept=‘IS’;此查询要求信息系学生选修了的所有课程名称。试画出用关系代数表示的语法树,并用关系代数表达式优化算法对原始的语法树进行优化处理,画出优化后的标准语法树。πCnameσSC.Cno=Course.CnoσStudent.Sdept=‘IS’×σStudent.Sno=SC.SnoCourse×SCStudent关系代数语法树πCnameσSC.Cno=Course.Cno×σStudent.Sno=SC.SnoCourse×SCσStudent.Sdept=‘IS’Student优化后的语法树例6.设有如下两个事务:T1:读B;A=B+1;写回AT2:读A;B=A+1;写回B1)若这两个事务并发执行,请举例说明一个可能的执行结果(设A和B的初值为2)。2)并发事务执行是否正确的标准是什么?3)请给出一个可串行化的调度,并给出执行结果。解答:1)T1,T2并发执行的一个可能结果如下图所示,它是不可串行化的调度,执行结果不正确。T1,T2串行执行的可能结果应该是A=3、B=4,或者是A=4、B=3,因此该题目中T1、T2并行执行结果A=3、B=3是错误的。T1T2SlockB,Y=B=2UnlockBXlockA,A=B+1写回A=3UnlockASlockA,X=A=2UnlockAXlockB,B=A+1写回B=3UnlockB2)多个事务并发执行是正确的,当且仅当其结果与按某一次序串行的执行它们时的结果相同。3)给出一个可串行化的调度如下:T1T2SlockB,Y=B=2UnlockBXlockAA=B+1,写回A=3UnlockASlockA等待等待X=A=3UnlockAXlockB,B=A+1写回B=4UnlockB例7.教材P234,19:请设计一个图书馆数据库,此数据库中对每个借阅者保存的记录包括:读者号、姓名、地址、性别、年龄、单位。对每本书保存有:书号、书名、作者、出版社。对每本被借出的书保存有读者号、借出日期和应还日期。要求:1)给出该图书馆数据库的E-R图。2)将E-R图转换为关系模型。1)该图书馆数据库的E-R图如下:读者姓名图书借阅读者号地址性别出版社应还日期借出日期1m年龄单位书号书名作者2)转换后的关系模型为:读者(读者号,姓名,地址,性别,年龄,单位)图书(书号,书名,作者,出版社)借阅(读者号,书号,借出日期,应还日期)例8.教材P234,18:现有一局部应用,包括两个实体:“出版社”和“作者”,这两个实体是多对多的联系,请设计适当的属性,画出E-R图,再将其转换为关系模型(包括关系名、属性名、码和完整性约束条件)。解答:E-R图如下页图所示:E-R图如下:出版社出版社号作者出版联系电话电话联系方式出书数量nm地址作者号性别年龄地址出版社名称性别姓名转化后的关系模型如下:出版社(出版社号,出版社名称,地址,联系电话)作者(作者号,姓名,性别,年龄,电话,地址)出版(出版社号,作者号,出书数量,联系方式)出版关系的主码(出版社号,作者号)分别参照出版社关系的主码出版社号和作者关系的主码作者号。例9.已知关系模式RU,F,其中U={A,B,C,D,E};F={AB→C,B→D,C→E,EC→B,AC→B}。求(AB)F+。解:设X(0)=AB;(1)计算X(1):逐一的扫描F集合中各个函数依赖,找左部为A,B或AB的函数依赖。得到两个:AB→C,B→D。于是X(1)=AB∪CD=ABCD。(2)因为X(0)≠X(1),所以再找出左部为ABCD子集的那些函数依赖,又得到:AB→C,B→D,C→E,AC→B,于是X(2)=X(1)∪BCDE=ABCDE。(3)因为X(2)=U,算法终止。所以(AB)F+=ABCDE。【例10】设F={A→BC,B→AC,C→A},对F进行极小化处理。解:1)根据分解规则把F中的函数依赖转换成右部都是单属性的函数依赖集合,分解后的函数依赖集仍用F表示:2)去掉F中冗余的函数依赖。F={A→B,A→C,B→A,B→C,C→A}判断A→B是否冗余。设:G1={A→C,B→A,B→C,C→A},得:AG1+=AC∵BAG1+∴A→B不冗余【例10】设F={A→BC,B→AC,C→A},对F进行极小化处理。判断A→C是否冗余。设:G2={A→B,B→A,B→C,C→A},得:AG2+=ABC∵CAG2+∴A→C冗余。判断B→A是否冗余。设:G3={A→B,B→C,C→A},得:BG3+=BCA∵ABG3+∴B→A冗余【例10】设F={A→BC,B→AC,C→A},对F进行极小化处理。判断B→C是否冗余。设:G4={A→B,C→A},得:BG4+=B∵CBG4+∴B→C不冗余。判断C→A是否冗余。设:G5={A→B,B→C},得:CG5+=C∵ACG5+∴C→A不冗余。3)由于该题中函数依赖表达式的左部均为单属性,因而不需进行第三步检查。最小函数依赖为:Fm={A→B,B→C,C→A}【例11】求F={AB→C,A→B,B→A}的最小函数依赖集Fm。解:(1)将F中函数依赖都分解为右部为单属性的函数依赖,显然F满足该条件。(2)去掉F中冗余的函数依赖。判断AB→C是否冗余。设:G1={A→B,B→A},得:(AB)G1+=AB∵C(AB)G1+∴AB→C不冗余。判断A→B是否冗余。设:G2={AB→C,B→A},得:AG2+=A∵BABG2+∴A→B不冗余。【例11】求F={AB→C,A→B,B→A}的最小函数依赖集Fm。判断B→A是否冗余。设:G3={AB→C,A→B},得:BG3+=B∵ABG3+∴B→A不冗余。经过检验后的函数依赖集仍然为:F={AB→C,A→B,B→A}。(3)去掉各函数依赖左部冗余的属性。本题只需考虑AB→C的情况。【例11】求F={AB→C,A→B,B→A}的最小函数依赖集Fm。方法1:在决定因素中去掉B,若CAF+,则以A→C代替AB→C。求得:AF+=ABC,∵CAF+∴以A→C代替AB→C。故:Fm={A→C,A→B,B→A}方法2:在决定因素中去掉A,若CBF+,则以B→C代替AB→C。求得:BF+=ABC,∵CBF+∴以B→C代替AB→C。故:Fm={B→C,A→B,B→A}。例12设关系模式R(A,B,C,D,E,F),函数依赖集F={AB→E,AC→F,AD→B,B→C,C→D}。1)证明AB、AC、AD均是候选码。2)证明主属性C部分函数依赖于候选码AB,传递依赖于AD。2)∵B→C,且AB是候选码,∴AB→CP∵AD→B,B→C,∴AD→C传递证明:1)∵(AB)F+=ABCDEF,∵ABCDEF(AB)F+∴AB为码。∵(AC)F+=ABCDEF,∵ABCDEF(AC)F+∴AC为码。∵(AD)F+=ABCDEF,∵ABCDEF(AD)F+∴AD为码。例12例13设关系模式R(A,B,C,D)函数依赖集F={A→C,C→A,B→AC,D→AC,BD→A}。1)求出R的候选码。2)求出R的最小函数依赖集。解:1)∵AF+=AC,CF+=AC,BF+=BAC,DF+=DAC,(BD)F+=BDAC,∴R的候选码是BD。2)求最小函数依赖集。(1)将F中函数依赖的右部分解为单属性:F={A→C,C→A,B→A,B→C,D→A,D→C,BD→A}(2)去掉F中冗余的函数依赖:判断A→C
本文标题:数据库练习题
链接地址:https://www.777doc.com/doc-4399800 .html