考试时间:2025.6.23 ,8:30~10:30
专业:软件工程
试卷总分:70
一、简答题(4*6=24分)
- 根据语法树写出SQL语句,及其优化后的语法树(语法树长什么样忘了,但是SQL语句是下面这个:)
select a.name from instructor a,instructor b where a.salary > b.salary and b.name = 'Alice'
- 结合银行转账事务,阐述事务的ACID特性
- 正确的调度、可串行化调度、符合两段锁协议的调度、串行调度、符合严格的两段锁协议的调度五个调度的包含关系(21年原题)
- 时间戳排序协议中,为什么被回滚的事务要被赋予新的时间戳?结合题目中的例子说明(给出事务Ta,时间戳为10,在执行read(Q)时由于W-timestamp(Q)=20而被回滚)
- B+树实现的主索引,为什么处理范围查询和等值查询的能力都很出色?
- 结合学院的例子(一个学生必须有学号、姓名、学院),说明关系模式和关系实例的区别
二、ER模型(11分)
按照如下要求,绘制对应的ER模型,并把ER模型转换成关系模式
医院管理系统:
- 一个医院有多个科室,科室有科室编号、所在楼栋。一个科室有多个属于该科室的医生,其中的一个是科室的主任医生
- 一个医生只能属于一个科室。医生有工号、姓名、年龄等属性。
- 患者具有身份证号、年龄、性别、姓名等属性。一个患者可以选择在多个科室挂号,每次挂号自动生成唯一的一个就诊记录,记录内包含就诊时间、(忘了,不影响)
- 医生可以给患者开处方,处方的内容包括开方时间、总价。一个处方必须关联医生、患者和至少一个药品
- 药品具有药品编号、库存等属性
三、范式(5+5=10分)
应该是ppt上的一个题稍微改了一下。没记错的话是下面的关系模式:
- 是3NF吗?不是的话,给出无损分解和保持依赖的分解
- 是BCNF吗?不是的话,给出无损分解
四、关系代数与SQL(25分)
前四个小问写出关系代数表达式和SQL语句,最后两个小问只写SQL
视频管理系统。customer表示用户,用户具有lv1到lv6这几个用户等级(level)。video表示视频(其中upid表示上传者),cv记录了所有的订阅关系。用户订阅某个视频后,可以给视频投币(对应coin属性)
customer(cid,cname,level,city)
video(vid,title,price,upid)
cv(cid,vid,coin)
- 选出与“数据库设计”这个视频price相同的视频名称
- 按城市和用户等级分组,统计订阅视频的总数。(比如,住在‘北京’的lv2用户一共订阅了多少个视频?)
- 找出没有被‘lv2’等级用户所订阅过的视频之title
- 订阅了up主‘abc’全部视频的用户cid
- 投币总数最多的用户cname
- 对video,删除订阅数小于10的视频
总得来说,数据库这门课的题型比较固定,尤其是SQL语句查询,几乎每年哪个小题考哪个知识点都是固定的。多看lh老师的ppt,尤其关注要QQ群投票的问题,有可能考变形。