Skip to content

24数据库原理与设计-试题回忆

文档信息

编者:Egopposer(line2345)
日期:2025/12/13

0、前言及试题概览

由于数据库考卷试题量很大,加之送分题很多,课件上的难题超纲题几乎不会出现。本文档只列举其中部分题目和需要专门背诵的题目。部分题目可能存在描述模糊或错误的情况。

说明

斜体为记忆模糊的题目
黑体为我认为需要关注的点

试题概览:(主观评价较多,仅供娱乐)

题量 特大
难易度(软院专业课中) 8/10
送分题占比 50%?
背诵记忆占比 30%(但内容多)
21-23均分
21-23平均满绩率


1、 选择题(1.5*20=30)

例如:

  • 给出两表等值连接的结果
  • 插入、删除在给定视图中是否合法
  • Mysql 语句的某些性质
  • 复合属性怎么转化为表

2、填空题(1*10=10)

纯送分,非常简单的概念

例如:(左侧为题目概述,右侧为填空答案)

  • 系统为sql语句提供的缓存区----游标
  • 索引依赖的数据结构----B+树
  • 开始事务的sql语句--START TRANSACTION或BEGIN
  • 什么什么什么什么--触发器

不限于此,注意误写错字

3、简答题(4*4=16)

24年考题:

  • 数据库的设计步骤及每一步的结果(重点)

  • 排序规则和字符集的作用(冷门点)

  • 保证数据库安全性的措施(重点)

  • 事务的特征ACID及每一项的含义(重点)

大部分都是常看的重点,只有一个排序规则和字符集的作用出的很冷,(课件上好像不是很详细)

总之是很磨人的部分,内容又多,又不能不背。

4、关系代数与sql语句题(12+8)

题干(关系模式):

患者(患者号,姓名,年龄)
医生(医生号,姓名,科室)
就诊表(患者号,医生号,就诊时间,诊断结果)
  • 同时编写关系代数和sql语句(三小题,每题4分)
  • 查询就诊过李医生的所有患者号
  • 查询就诊过王医生且曾有过高血压诊断历史的患者姓名
  • 查询就诊过医院所有科室的患者号(FOR ALL查询)
  • 只编写sql语句
  • 忘了
  • 查询没有接诊记录的医生姓名
  • 查询就诊过王医生两次以上的患者姓名
  • 授予用户user1查询患者姓名,患者姓名,医生姓名,就诊科室,就诊时间的权限,但不能查看诊断结果(视图+授权)

总结:

  • 第一部分由于需要同时编写关系代数,所以sql基本只能出基本的连接查询和一部分EXIST和IN查询,我觉的FOR ALL查询应该是重点中的重点,应该每年都会考
-- 对于关系代数,有个小的点,课件和作业上对于连接的处理基本都是先选择(投影)再连接,习惯问题,建议按课件的风格来。
-- 对于sql语句,当你写完并重新审视曾经的作业和课件时,你应该注意到了一点,那就是你院非常极其特别喜欢EXIST查询嵌套,以至于几乎就没有JOIN、UNION、INTERSECT、EXCEPT的事。而且我想吐槽的就是,FOR ALL查询使用EXCEPT实现逻辑非常的清晰,没有任何嵌套。但是无一例外,课件和习题中都是用的是EXIST查询嵌套,想必答案也是吧,也可能给分,但我就不知道了。
-- 建议往死里练EXIST嵌套查询
  • 第二部分就考察第一部分没有的东西了,例如聚合函数(SUM,COUNT)、GROUP BY、HAVING、授权和视图之类的,难度不大。
  • 今年没有任何编写触发器,存储过程,控制流和函数的题(更不用说游标了),好像对这一块要求极低,仅在填空部分出现?可供参考
  • 注:不要在网上Leetcode、牛客这些地方找sql的题做,效率极低且收益不大。低难度的题你看看就会了,高难的题这些刷题网站都聚焦于开窗函数,日期处理。考察点差距很大。
-- 你猜我为什么知道

5、设计题(6+8+10)

  • 范式及其分解(原题,(司机编号,汽车牌照,行驶路程,车队编号,车队总管)那个)(6分)

  • 找候选键(2分)

  • 为什么不是第二范式,并分解为第二范式(2分)
  • 分解为第三范式(2分)

  • ER图及表转换(8分)

  • 画ER图

  • 转化为表(关系模式)
没啥好说的,就注意多对多关系加张表,一对多关系加外键就行了
  • 大型sql填空(10分,一空一分)
  • 建表,完整性约束等等(4分)
    • 主键外键定义
    • CHECK检查
  • 关系运算符(2分)
    • BETWEEN AND
  • 补写sql语句
    • 相当于第四大题第二部分的类型