山东大学软件学院数据库系统2025期末回忆版

考试时间:2025.6.23 ,8:30~10:30

专业:软件工程

试卷总分:70

一、简答题(4*6=24分)

  1. 根据语法树写出SQL语句,及其优化后的语法树(语法树长什么样忘了,但是SQL语句是下面这个:)
    select a.name
    from instructor a,instructor b
    where a.salary > b.salary and b.name = 'Alice'
  2. 结合银行转账事务,阐述事务的ACID特性
  3. 正确的调度、可串行化调度、符合两段锁协议的调度、串行调度、符合严格的两段锁协议的调度五个调度的包含关系(21年原题)
  4. 时间戳排序协议中,为什么被回滚的事务要被赋予新的时间戳?结合题目中的例子说明(给出事务Ta,时间戳为10,在执行read(Q)时由于W-timestamp(Q)=20而被回滚)
  5. B+树实现的主索引,为什么处理范围查询和等值查询的能力都很出色?
  6. 结合学院的例子(一个学生必须有学号、姓名、学院),说明关系模式和关系实例的区别

二、ER模型(11分)

按照如下要求,绘制对应的ER模型,并把ER模型转换成关系模式

医院管理系统:

  1. 一个医院有多个科室,科室有科室编号、所在楼栋。一个科室有多个属于该科室的医生,其中的一个是科室的主任医生
  2. 一个医生只能属于一个科室。医生有工号、姓名、年龄等属性。
  3. 患者具有身份证号、年龄、性别、姓名等属性。一个患者可以选择在多个科室挂号,每次挂号自动生成唯一的一个就诊记录,记录内包含就诊时间、(忘了,不影响)
  4. 医生可以给患者开处方,处方的内容包括开方时间、总价。一个处方必须关联医生、患者和至少一个药品
  5. 药品具有药品编号、库存等属性

三、范式(5+5=10分)

应该是ppt上的一个题稍微改了一下。没记错的话是下面的关系模式:

  1. 是3NF吗?不是的话,给出无损分解和保持依赖的分解
  2. 是BCNF吗?不是的话,给出无损分解

四、关系代数与SQL(25分)

前四个小问写出关系代数表达式和SQL语句,最后两个小问只写SQL

视频管理系统。customer表示用户,用户具有lv1到lv6这几个用户等级(level)。video表示视频(其中upid表示上传者),cv记录了所有的订阅关系。用户订阅某个视频后,可以给视频投币(对应coin属性)

customer(cid,cname,level,city)

video(vid,title,price,upid)

cv(cidvid,coin)

  1. 选出与“数据库设计”这个视频price相同的视频名称
  2. 按城市和用户等级分组,统计订阅视频的总数。(比如,住在‘北京’的lv2用户一共订阅了多少个视频?)
  3. 找出没有被‘lv2’等级用户所订阅过的视频之title
  4. 订阅了up主‘abc’全部视频的用户cid
  5. 投币总数最多的用户cname
  6. 对video,删除订阅数小于10的视频

总得来说,数据库这门课的题型比较固定,尤其是SQL语句查询,几乎每年哪个小题考哪个知识点都是固定的。多看lh老师的ppt,尤其关注要QQ群投票的问题,有可能考变形。

### 关于山东大学软件学院NoSQL期末考试复习资料 对于准备参加山东大学软件学院NoSQL非关系型数据库期末考试的学生而言,可以利用多种资源来辅助学习。博客文章提供了详细的期末复习指南以及往届试题回忆[^1]。 #### 一、复习重点 复习材料涵盖了NoSQL的核心概念及其与传统关系型数据库的区别,包括但不限于键值存储、文档存储、列族存储和图数据库的特点及应用场景。此外,还涉及到了分布式系统的CAP理论等内容[^2]。 #### 二、历年真题解析 通过分析以往年度的考试题目,能够帮助考生更好地理解命题趋势并针对性地进行备考。有同学整理了部分记忆中的考题,这些题目覆盖了课程的主要知识点,如数据模型设计原则、查询优化策略等。 #### 三、教学特色说明 授课教师闫老师的PPT非常详尽,即使课堂上未能完全跟上进度,在课后也可以依据这份完整的教材来进行深入自学。值得注意的是,由于本学期安排了大量的实践环节,因此原本应该随堂提交的一些作业被推迟到了假期结束之后再完成,这给予了学生更多的时间去消化吸收所学的知识点。 ```python # 示例:简单的Python脚本用于连接MongoDB(作为NoSQL的一种) from pymongo import MongoClient client = MongoClient('mongodb://localhost:27017/') db = client['test_database'] collection = db['test_collection'] document = {"key": "value"} result = collection.insert_one(document) print(f"Inserted document with id {result.inserted_id}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值