12007—2008学年第二学期闽江学院考试试卷(A)适用年级专业:06级计算机本科1、2班考试形式:闭卷考试课程:数据库原理及应用一、单项选择题(每小题1.5分,共30分)1.A2.C3.C4.A5.C6.C7.B8.D9.A10.D11.A12.A13.C14.B15.A16.B17.D18.B19.D20.C二、填空题(每小题1分,共10分)1.数据子语言2.完整性3.连接4.索引文件5.删除异常6.非过程性强7.选择存储结构8.3NF9.结构的约束10.数据流程图和数据字典三、简答题(每小题4分,共24分)1、设关系模式RU,F,其中U={A,B,C,D,E},若F={A→BC,C→D,BCD→E,E→D},则关系模式R的候选码是什么,并指出R所属的范式最高等级及原因。(6分)答:E只在函数依赖的右边出现,所以候选码中不可能包含E;A只在函数依赖的左边出现,所以候选码中一定包含A;根据F,AF+=ABCDE=U,所以A为候选码。另,除A外,其他几个属性BCD及其组合在F上的闭包都不等于U,所以,关系模式R的候选码为A。由于A是单属性,所以R至少是2NF。因A→BC,所以A→C,由于C→D,所以D传递函数依赖于A。所以R不是3NF。R范式最高等级为2NF。2、阐述活锁的产生原因及解决办法?(4分)答:如果事务T1封锁了数据对象R,另一事务T2申请对它加锁就需要等待。若此时还有其他事务T3申请对R加锁,系统根据相容矩阵首先批准了T3的请求。导致T2继续等待,若有更多的事务如T4,T5…请求对R加锁系统在相容矩阵允许的情况下批准了它们的请求,从而导致T2无限期地等待下去。这样导致活锁的产生。装订线2解决办法是采用先来先服务的策略:当多个事务请求封锁同一数据对象时,按请求封锁的先后次序对这些事务排队,该数据对象上的锁一旦释放,首先批准申请队列中第一个事务获得锁。2、登记日志文件时,为什么必须遵守“先写日志文件,后写数据库”的原则?(4分)答:写数据库和写日志文件是两个不同的操作,在这两个操作之间可能发生故障,如果先写了数据库修改,而在日志文件中没有登记下这个修改,则以后就无法恢复这个修改了,如果先写日志,但没有修改数据库,按日志文件恢复时只不过是多执行一次不必要的UNDO操作,并不会影响数据库的正确性。3、建索引的目的是什么?那些情况宜建索引?(4分)答:建索引的目的是提高数据查询速度。下列情况宜建索引:1)如果一个(或一组)属性经常在查询条件中出现,则考虑在这个(或这组)属性上建立索引(或组合索引);2)如果一个属性经常作为最大值和最小值等聚集函数的参数,则考虑在这个属性上建立索引;3)如果一个(或一组)属性经常在连接操作的连接条件中出现,则考虑在这个(或这组)属性上建立索引。4、视图的作用是什么?为什么说视图的更新是有条件的?(5分)答:视图的作用:1)视图能够简化用户的操作;2)视图机制能使不同用户以不同方式看待同一数据,适应数据库共享的需要;3)视图对重构数据库提供了一定程度的逻辑独立性;4)视图能够对机密数据提供安全保护。对视图的更新最终都转化为对基本表的更新,对于一些视图,DBMS无论用实体化法还是消解法都无法将其转换成对基本表SC的更新,他们是不可更新的,因为对这些视图的更新不能唯一地有意义地转换成对相应基本表的更新。对于视图的更新不同系统有不同限制。四、设计题(共23分)1.Π学号,姓名,课程名,分数(σ奖学金0∧专业=国际贸易(学生∞学习∞课程))2.Π课程号,名称,学分(σ分数=100(学习∞课程))3.Π学号,姓名,专业(σ奖学金=0∧分数95(学生∞学习))4.Π学号,姓名,专业(学生)—Π学号,姓名,专业(σ分数80(学生∞学习))5.SELECT学生.学号,姓名,专业FROM学生,学习WHERE学生.学号=学习.学号AND学习.课程号=课程.课程号AND奖学金=0AND分数956.SELECT学号,姓名,专业FROM学生WHERE学号NOTIN(SELECT学号FROM学习WHERE分数80)7.UPDATE学生3SET奖学金=1000WHERE奖学金=0AND学号IN(SELECT学号FROM学习WHERE分数=100)8.CREATEVIEWAAA(课程号,名称,学分)ASSELECT课程号,名称,学分FORM课程WHERE课程号IN(SELECT课程号FROM学习WHERE分数=100)五、综合题(1-3小题3分,4小题4分,共13分)1.不满足。因为码为A#B#,并且B#→E,而E是非主属性。2.R2的码为B#R2最高满足2NF3.R1(A#,B#,E)R2(B#,C)R3(C,D)都满足BCNF4.将两个实体分别对应两个关系模式,并且在“多”端实体对应模式中加入“一”端实体所对应关系模式的码,以及关联属性。