陕西师范大学2005—2006学年第二学期期末考试
计算机科学学院2003级计算机科学与技术专业
数据库原理(F)试题参考答案
一、单项选择题 (将一个正确的答案代码填入括号中,每小题1分,共15
分)
(1)B (2) C (3)D (4) D (5) A (6) C (7)B (8)B (9) C
(10)C (11) A (12) C (13) D (14) C (15) B
二、填空题(在横线上填写正确的答案,每空1分,共10分)
(16)数据的安全性、数据的完整性、并发控制、数据库恢复
(17)自顶向下、自底向上、逐步扩张
(18)意向共享锁、意向排它锁、共享意向排它锁
三、判断题(判断下述结论是否正确,对正确的结论加以证明,对错误的
结论说明原因或举一反例进行说明,每小题5分,共10分)
(19)错误。
关系模式R为1NF,其中(A,C)为候选码,存在非主属性对码的部分函数依赖,因此不是2NF。
(20)正确。
因为根据一次封锁法和两段锁协议的定义,一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行,因此
一次封锁法必定遵守两段锁协议,从而并发调度是可串行化的。
四、简答题(每小题5分,共15分)
(21)试述查询优化的一般步骤。
答:各个关系系统的优化方法不尽相同,大致的步骤可以归纳如下: (1)把查询转换成某种内部表示,通常用的内部表示是语法树。
(2)把语法树转换成标准(优化)形式。
即利用优化算法,把原始的语法树转换成优化的形式。
(3)选择低层的存取路径。
(4)生成查询计划,选择代价最小的。
(22)试述把E-R图转换为关系模型的转换规则。
答: E-R图向关系模型的转换规则:
对于实体,一个实体型转换为一个关系模式。
实体的属性就是关系的属性,实体的码就是关系的码。
对于实体间的联系则有以下不同的情况:
(1)一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。
如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的候选码。
如果与某一端实体对应的关系模式合并,则需要在该关系模式的属性中加入另一个关系模式的码和联系本身的属性。
(2)一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。
如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。
(3)一个m:n联系转换为一个关系模式。
与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体码的组合组成该关系的码,或码的一部分。
(4)三个或三个以上实体间的一个多元联系可以转换为一个关系模式。
与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。
(5)具有相同码的关系模式可合并。
(23)关系数据库管理系统在实现参照完整性时需要考虑哪些方面?
答:RDBMS在实现参照完整性时需要考虑以下几个方面:1)外码是否可以接受空值;2)删除被参照关系的元组时的考虑,这时系统可能采取的作法有三种:(a)级联删除;(b)受限删除;(c)置空值删除;3)在参照关系中插入元组时的问题,这时系统可能采取的作法有:(a)受限插入,(b)递归插入。
4)修改关系中主码的问题,一般是不能用UPDATE语句修改关系主码的。
如果需要修改主码值,只能先删除该元组,然后再把具有新主码值的元组插入到关系中。
如果允许修改主码,首先要保证主码的唯一性和非空,否则拒绝修改。
然后要区分是参照关系还是被参照关系。
五、综合题(第24小题20分,第25小题10分,第26小题20分,共50
分)
(24)答:
(i)注:下图忽略了各个实体及联系的属性;
(ii)对应的关系模式如下:
学院(学院名,学院编号,学院地址,邮编),候选码为学院名或者学院编号;
系(系名,系编号,学院编号,系办公地点,系教师人数),候选码为系编号;
教师(教师名,教师编号,系编号,年龄,职称),候选码为教师编号;
项目(项目名,项目编号,系编号,起止时间,经费),候选码为项目编号;
参加(项目编号,教师编号,工作量),候选码为(项目编号,教师编号)。
(25)答:
(i)基本函数依赖:(学号,课程号)→成绩,课程号→任课教师,
任课教师→教师所在系
候选码为(学号,课程号)
(ii) 该关系模式为1NF,因为存在非主属性对于码的部分函数依赖。
分解为R1(学号,课程号,成绩)
R2(课程号,任课教师)
R3(任课教师,任课教师所在系)
(26)答:
(i)Π课程名,成绩(σ籍贯=’上海’S(SC C))
(ii)update sc set 成绩=成绩+3 where 课程号 in
(select 课程号 from c where 教师姓名='王志伟')
(iii)select 姓名 from s where 学号 in
(select distinct 学号 from sc scx where not exists
(select * from sc scy where 学号='98603' and not exists (select * from sc scz where scz.学号=scx.学号 and
scz.课程号=scy.课程号)))
(iv)select max(成绩), min(成绩), avg(成绩) from sc,c where
(sc.课程号=c.课程号 and c.课程名='编译原理')。