第1页共5页华东交通大学2007—2008学年第二学期考试卷试卷编号:(A)卷数据库系统原理及应用课程课程类别:必闭卷(√)、开卷(范围)():考试日期:题号一二三四五六七八九十总分累分人签名题分20105614100得分一、选择题:(每题2分,共20分)12345678910CCBB,CCBCBBA二、填空题:(每题1分,共10分)三、应用题:(共56分)1、(6分)R⋈SR⋈SABCDAR.BR.CBCD642564242565386425265684653538得分评阅人(1)数据库管理系统(DBMS)(2)数据库系统(3)完整性约束(4)物理独立性(5)沿箭头方向存在一个循环(6)系统故障(7)可串行化(8)冗余(9)封锁粒度(10)数据转储得分评阅人得分评阅人3=2第2页共5页5686842、(共20分)(1)查询籍贯在江西南昌的职工信息。(3分)SELECT*FROMEMPWHEREECITY=’江西南昌’(2)查询在南昌工作的职工信息。(3分)SELECTE#,ENAME,AGE,SEX,ECITYFROMEMP,WORKS,COMPWhereEMP.E#=WORKS.E#ANDWORKS.C#=COMP.C#ANDCITY=”南昌”(3)假设每个职工可以在多个公司工作,查询在编号为C4和C8公司兼职的职工工号和姓名。(4分)SELECTA.E#,A.ENAMEFROMEMPA,WORKSB,WORKSCWHEREA.E#=B.E#ANDB.E#=C.E#ANDB.C#=‘C4’ANDC.C#=’C8’;(4)假设每个职工可以在多个公司工作,查询每个职工的兼职公司数目和工资总数,按(E#,NUM,SUM_SALARY)显示,分别表示职工工号、公司数目和工资总数。(4分)SELECTE#,COUNT(C#)ASNUM,SUM(SALARY)ASSUN_SALARYFROMWORKSGROUPBYE#;(5)设职工工号为E6的职工在多个公司工作,查询至少在E6职工兼职的所有公司工作的职工工号。(6分)SELECTX.E#FROMWORKSXWHERENOTEXISTS(SELECT*FORMWORKSYWHEREE#=‘E6’ANDNOTEXISTS(SELECT*FROMWORKSZWHEREZ.E#=X.E#ANDZ.C#=Y.C#));第3页共5页3、(12分)解:SQL语句为:(4分)SELECTJNOFROMJWHEREJNONOTIN(SELECTJNOFROMS,SPJ,PWHERES.SNO=SPJ.SNOANDSPJ.PNO=P.PNOANDS.CITY=‘天津’ANDP.COLOR=‘红’)(2)(8分)优化后的标准语法树为语法树为::πJno(J)-πJno(σS.Sno=SPJ.SnoP.Pno=SPJ.PnoCity=‘天津’Color=‘红’(S×SPJ×P)≡πJno(J)-πJno(σS.Sno=SPJ.Sno(σP.Pno=SPJ.Pno(σCity=‘天津’(σColor=‘红’(S×SPJ×P)))))≡πJno(J)-πJno(σS.Sno=SPJ.Sno(σP.Pno=SPJ.Pno(σCity=‘天津’(S)×SPJ×σColor=‘红’(P))))≡πJno(J)-πJno(σP.Pno=SPJ.Pno(σCity=‘天津’(S)SPJ×σColor=‘红’(P)))≡πJno(J)-πJno(σCity=‘天津’(S)SPJσColor=‘红’(P))4、(14分)设关系模式R(A,B,C,D)函数依赖集F={A→C,C→A,B→AC,D→AC,BD→A}。1)求(BD)F+,并说明BD是否为R的候选码。(4)2)求出R的最小函数依赖集。(10分)解:1)(BD)F+=BD∵BAC,DAC∴(BD)F+ABCD(B)F+=B∵BAC∴(B)F+=ABC不等于{A,B,C,D}(D)F+=D∵DAC∴(B)F+=ABD不等于{A,B,C,D}由以上条件可知,ABCDBDf∴BD是R的候选码。2)求最小函数依赖集。(1)将F中函数依赖的右部分解为单属性:(2分)F={A→C,C→A,B→A,B→C,D→A,D→C,BD→A}(2)去掉F中冗余的函数依赖:(6分)判断A→C是否冗余。结果—JnoJnoColor=’红’City=’天津’P.Pno=SPJ.PnoS.Sno=SPJ.SnoSPJSPJ结果—JnoJnoColor=’红’City=’天津’P.Pno=SPJ.PnoS.Sno=SPJ.SnoSPJSPJ第4页共5页设:G1={C→A,B→A,B→C,D→A,D→C,BD→A},得:AG1+=A,∵CAG1+∴A→C不冗余。判断C→A是否冗余。设:G2={A→C,B→A,B→C,D→A,D→C,BD→A},得:CG2+=C,∵ACG2+∴C→A不冗余。判断B→A是否冗余。设:G3={A→C,C→A,B→C,D→A,D→C,BD→A},得:BG3+=ABC,∵ABG3+∴B→A冗余。判断B→C是否冗余。设:G4={A→C,C→A,D→A,D→C,BD→A},得:BG4+=B,∵CBG4+∴B→C不冗余。判断D→A是否冗余。设:G5={A→C,C→A,B→C,D→C,BD→A},得:DG5+=ADC,∵ADG5+∴D→A冗余。判断D→C是否冗余。设:G6={A→C,C→A,B→C,BD→A},得:DG6+=D,∵CDG6+∴D→C不冗余。判断BD→A是否冗余。设:G7={A→C,C→A,B→C,D→C},得:(BD)G7+=BDCA,∵A(BD)G7+∴BD→A冗余所以:F={A→C,C→A,B→C,D→C}。3)由于F的左部均为单属性,所以:(2分)最小函数依赖集F={A→C,C→A,B→C,D→C}。5(4分)考虑以下两个事务,并回答问题。两个事务的并发执行会产生死锁,例如:T1T2lock-S(A)lock-S(B)read(B)read(A)lock-X(B)lock-X(A)两个事务死锁四、(14分)综合题:解:(8分)(1)得分评阅人第5页共5页(2)(6分)这个ER图可以转换3个关系模式:公司(公司编号,公司名,地址)仓库(仓库编号,仓库名,地址,公司编号)职工(职工编号,姓名,性别,仓库编号,聘用,工资)公司编号公司隶属仓库1N仓库编号仓库名地址聘用聘期工资1N职工职工编号姓名性别公司名地址