ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

数据库系统概论期末试题高效复习:从考点拆解到答题模板

2026/9/17 12:33:57 拓冰建站 浏览量
数据库系统概论期末试题高效复习:从考点拆解到答题模板 简介数据库系统概论期末试题及答案以PDF文档形式提供面向正在复习数据库课程的高校学生、自考生及考研备考生尤其适合考前快速回顾核心概念。试题覆盖数据库基本特征、DBMS与DBS关系、关系代数运算、自然连接、E-R模型、SQL查询与更新、函数依赖和范式、完整性约束等核心章节适合期末冲刺与阶段性自测。资源包共1个文件格式为PDF整体大小仅690KB下载后可直接打开阅读或打印可用于章节自测。目前已有274人学习使用。随题附有答案和知识点解析不仅给出正确选项还对关系代数等价变换、SQL插入合法性、UNIQUE与主键区别、BETWEEN边界取值等易混点逐一说明试题还标注难度系数方便快速定位薄弱环节帮助读者巩固数据库原理提升解题与应试能力。1. 数据库系统概论期末试题一份 PDF 的正确打开方式不是“通读”考前下载一份《数据库系统概论期末试题及答案.pdf》是很多人的固定动作。拉开分数差距的从来不是有没有这份 PDF而是怎么用。把答案从头读到尾大脑会产生「我全会了」的错觉等合上文件动笔写题才发现关系代数的选择和投影顺序、范式分解的候选码推导全都拿不准。答案 PDF 适合当判卷标准不适合当教材。更实用的策略是把它当自测工具先合上答案做题再拿采分点逐条对把错误收敛到几个具体知识块上。对正在备考数据库系统概论期末考试的学生、想考数据库系统工程师认证的从业者以及要快速召回数据库系统原理核心概念的工程师这套方法都适用。下面按考点拆解、复习流程、答题模板、考前收尾四部分把这份 PDF 用到位。2. 数据库系统概论考点拆解期末题集中在哪五个知识块一份数据库系统概论期末试题去掉填空和名词解释后真正有区分度的题基本集中在五块关系代数与 SQL、范式与模式分解、事务与并发控制、ER 图转换、索引与恢复。无论教材是数据库系统概论第六版还是偏工程的数据库系统原理及应用卷面结构都逃不开这几块各部分分值虽有浮动但关系代数和 SQL 通常是绝对大头。了解这个分布的意义在于用 PDF 练题时不必按页码顺序刷按知识块刷更接近考场的真实权重也方便最后按错题统计决定补哪里。2.1 关系代数与 SQL先写 SQL 再翻译成关系代数表达式期末卷里最常见的一类题是「给定关系模式写出查询的关系代数表达式和 SQL」。常见做法是先写 SQL再按对应关系翻译过去SELECT 对应投影 πWHERE 对应选择 σJOIN 对应连接 ⋈GROUP BY 和 HAVING 对应分组与聚合。直接对着题目憋关系代数容易漏条件先写 SQL 能保证逻辑完整。假设有三张表Student(Sno, Sname, Sdept)、SC(Sno, Cno, Grade)、Course(Cno, Cname)题目要求「查询选了 C01 课程且成绩大于 85 分的学生姓名」。先写 SQL-- 查询选了 C01 且成绩大于 85 分的学生姓名 SELECT DISTINCT s.Sname FROM Student s JOIN SC ON s.Sno SC.Sno WHERE SC.Cno C01 AND SC.Grade 85;对应的关系代数表达式为π_Sname( σ_CnoC01 ∧ Grade85 ( Student ⋈ SC ) )这里有两个采分点容易出现分歧。第一SQL 默认不去重关系代数默认去重所以 SQL 里要写 DISTINCT阅卷时常有人在这一步被扣分。第二σ 和 ⋈ 的先后顺序先做选择再做连接中间结果小先连接再选择逻辑等价但会产生冗余行答题时统一写成「先 σ 后 ⋈」的结构评卷老师一眼就能看到你的执行思路。若题目还要求写出查询优化后的表达式考的就是「选择下推」这条启发式规则。代码里的表名 Student、SC 和属性名 Sno、Cno、Grade 都来自题面不同学校的卷子可能换成 StudentNo、CourseID 之类的命名翻译成关系代数时保持题面原属性名即可。2.2 范式判断与模式分解读答案前先自己画函数依赖大多数人对范式的记忆停留在「3NF 消除传递依赖」这句话上可真正做题时第一步永远是求候选码。答案 PDF 只会给出「最高满足 2NF」这类结论推导链得自己补。以一道常见题为例R(A, B, C, D)函数依赖集 F { A → B, B → C, C → D }问 R 满足第几范式。推导过程分四步。第一步求候选码由 A → B、B → C、C → D 可推出 A 决定所有属性候选码是 A非主属性为 B、C、D。第二步看部分依赖候选码只有一个属性 A部分依赖不成立满足 2NF。第三步看传递依赖A → C 经由 B 传递A → D 经由 B、C 传递存在传递依赖不满足 3NF。因此最高是 2NF。对应的 3NF 分解为 R1(A, B)、R2(B, C)、R3(C, D)。这个分解既保持依赖又是无损连接因为每条函数依赖都完整落在某一个关系内部A → B 在 R1B → C 在 R2C → D 在 R3没有依赖跨多个关系断裂。判断分解好坏的标准就三条无损连接、保持依赖、每个关系达到目标范式。阅卷按「候选码怎么求、哪里破坏了范式」给步骤分所以练题时要把推导链写完整而不是只看答案最后的分解结果。2.3 事务与并发控制简答题的采分点是「现象 协议 例子」事务这块的简答题采分点通常藏在「现象 协议 例子」的组合里。比如问「什么是脏读、不可重复读、幻读」只写定义只能拿一半分补上隔离级别与现象的对应表再配一句例子才完整。隔离级别脏读不可重复读幻读加锁行为读未提交可能可能可能写锁持有到事务结束读已提交不会可能可能读锁即用即放可重复读不会不会可能读锁持有到事务结束可串行化不会不会不会表锁或间隙锁对工程师来说这张表要映射到具体的数据库系统MySQL InnoDB 默认是可重复读并靠间隙锁把幻读也挡掉PostgreSQL 和 Oracle 默认是读已提交。期末试题里经常反着考——给出一组并发调度问在哪个隔离级别下可能出现脏读或不可重复读这时候先把现象写全再写对应协议基本就踩满采分点了。3. 用数据库系统概论期末试题 PDF 做输出式复习从通读到限时自测3.1 给 PDF 里的试题打标签用脚本算出题密度拿到 PDF 后不要从第一页开始读。常见做法是把题目按知识块分组统计每块的题量和分值。网上流传的数据库系统概论期末试题很多带着校名比如搜「深圳大学数据库系统」能筛到风格更统一的套卷方便连续刷。不管哪所学校的卷子出题密度大致落在下表的范围里。知识块常见题型卷面分值参考关系代数与 SQL写表达式、写查询语句2030 分范式与模式分解判断范式、分解到 3NF/BCNF1015 分事务与并发控制简答、并发调度分析1020 分ER 图与关系模式转换画 ER 图、转关系模式1520 分索引与数据库恢复计算、简答510 分统计本身可以交给脚本。把题目手工登记成 CSV列名为题号、知识块、题型、是否做对填是或否然后用一个十几行的 Python 脚本算出每块的题量和错题量最后两天按结果决定先补哪块。# tag.csv 首行列名: 题号,知识块,题型,是否做对 import csv from collections import Counter with open(tag.csv, encodingutf-8) as f: rows list(csv.DictReader(f)) density Counter(r[知识块] for r in rows) wrong Counter(r[知识块] for r in rows if r[是否做对] 否) for block in sorted(density, keylambda b: -density[b]): rate wrong.get(block, 0) / density[block] print(f{block}: 共 {density[block]} 道, 错 {wrong.get(block, 0)} 道, 错误率 {rate:.0%})这段脚本的逻辑不复杂density 这个 Counter 统计每个知识块出现的题目总数wrong 这个 Counter 只统计「是否做对」为否的题最后按题量降序打印错误率。参数上要注意 CSV 列名必须和代码里引用的字符串完全一致编码用 utf-8否则 DictReader 会取不到值直接报错。错误率最高的块就是复习优先级最高的块而不是你主观觉得难的那个块。数据量小的时候用表格手算也行但脚本的好处是每次对完答案更新 CSV 再跑一次就行不用反复数题。3.2 限时做题 红笔标记采分点输出优先于通读输出式复习的核心动作是「合上答案做题」这一步没有替代品。操作流程把 PDF 里的主观题单独打印出来SQL 题每道限时 10 分钟范式分解每道 8 分钟简答题每道 5 分钟到点必须停笔哪怕没写完也进入对答案环节。提示限时做题时把手机放远SQL 题不要边查笔记边写考场没有补查的机会。对答案不是把正确答案抄一遍。用红笔在答题纸边上标三个记号漏掉的知识点、写错的结论、多写的废话。以范式题为例答案第一行通常是「候选码为 A」如果你写了同样的候选码但闭包推导过程是错的红笔应标「闭包推导」而不是「范式判断」。这样标完错题表里积累的是一条条可执行的动作而不是一句「我范式没学好」。3.3 错题表只记「卡点」不记整道题题号知识块卡点下一轮要做的动作T07范式与分解闭包推错候选码漏了 C重做 3 道求闭包小题T12关系代数连接条件写反默写 θ 连接语法T19事务恢复日志 undo/redo 先后搞混重画日志恢复时序图表格里真正起作用的列是最后一列它把模糊的「不会」转成了具体动作。复盘时只看这列做掉一项划一项比反复翻答案有效得多。注意不要把卡点写成「粗心」凡是能归因到知识点的都写具体名称比如「候选码漏了 C」「undo 和 redo 顺序反了」只有这样才能在下一轮练到点子上。4. 数据库系统概论高频题型的答题模板阅卷按点给分写对结构就拿一半分4.1 事务隔离级别题现象 → 协议 → 结论的三段式结构前面给了隔离级别与加锁行为的对照表这里说怎么组织答案。答题模板固定为三句第一句写该级别下会出现哪些现象比如可重复读下仍可能出现幻读第二句写实现协议说明读锁何时释放、是否加间隙锁第三句写结论点明适用场景。以「为什么可重复读不能防止幻读」为例标准答法是可重复读下普通读锁持有到事务结束但只锁已读取的行不锁范围因此其他事务仍可在范围内插入新行导致同一查询返回不同的行集所以需要可串行化或间隙锁来补。这样三段写下来即使结论不完整前两段的采分点也稳了。4.2 B 树索引计算题先算页容量再算树高和 IO 次数索引题分值不高但几乎每年都出标准题型是给出表的行数、页大小、索引项大小求 B 树层数和点查询的 IO 次数。答题顺序固定先算每个叶子页能放多少索引项再算需要多少叶子页再反推内部节点层数最后给 IO 次数。以 1000 万行、页大小 16KB、索引项 16 字节为例步骤算式结果每页可存索引项数16KB ÷ 16B1000 项叶子页数量1000 万 ÷ 100010000 页内部节点层数10000 ÷ 1000 后继续上卷2 层树高叶子层 内部层3 层点查询 IO 次数根节点常驻内存23 次这类题的采分点全部在计算过程里直接写「3 次」没有过程分必须把每步算式列全必要时画一棵三层树的示意图。要注意题目有没有给「根节点常驻内存」这个条件没给时就按每层各一次 IO 算给了则根层不算 IO。4.3 ER 图转关系模式1:1、1:N、M:N 三种映射规则别混淆ER 图转关系模式是设计题的主角规则只有三条但每年都有人混。1:1 联系把任一方的主键放入另一方作外键联系属性一并带过去。1:N 联系在 N 方关系中加入 1 方的主键作外键。M:N 联系新建一张关系表主键取双方主键的组合联系属性放在关系表里。-- 学生选课 M:N 联系转换出的关系表 CREATE TABLE SC ( Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade DECIMAL(3, 1), PRIMARY KEY (Sno, Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno), FOREIGN KEY (Cno) REFERENCES Course(Cno) );注意 M:N 转出的表主键是 (Sno, Cno) 组合键而不是另设一个自增 id阅卷时丢了组合主键会被扣掉一半分。DECIMAL(3, 1) 表示三位有效数字、一位小数能存 0.0 到 99.9 的成绩若题面要求百分制整数可换成 SMALLINT。偏应用的课程会把这道题和后面的 SQL 查询串在一起先画 ER 图、再写建表语句、再写查询是整张卷子里综合度最高的一题。5. 数据库系统概论考前 48 小时用答案做反向倒查收尾考前两天不适合再刷整卷适合用答案做反向倒查。具体动作有三个。第一个动作是「看答案反推题目」。把 PDF 翻到答案部分遮住题目只看答案的结论尝试恢复出它回答的问题。比如看到「候选码为 A存在传递依赖最高 2NF」要能反推出原题的函数依赖集和关系模式。反推不出来的地方就是最后两天要补的地方。这个方法比再做一遍题划算因为它是直接对着采分点检查知识召回能力而不是顺着题面走一遍熟悉路径。第二个动作是「对着错题表最后一列逐个清账」。错题表里累积的每个动作重做时控制在 15 分钟内做完一项划一项。清理顺序有讲究先清「闭包推导」「关系代数翻译」这类高频基础动作再清「日志恢复时序」「两段锁」这类需要完整推导的最后留时间给 SQL 表达式默写。若某个卡点出现两次以上直接回到教材例题重做不要再用套卷里的同一道题验证。第三个动作是「掐表重写两道论述题」。事务恢复和并发调度是最耗时的两道题各用 15 分钟完整写一遍训练节奏和版面先写结论一句话再列推导过程最后补一句场景说明。考前最后一晚不开新题只看错题表第一列的卡点词每个词能说出对应知识点和一句推导就放下合上 PDF 前再扫一遍没有划掉的项能说清楚就去休息说不清楚就回到对应章节的例题重做一遍。本文还有配套的精品资源点击获取