news 2026/10/10 0:57:53

数据库系统概论期末试题解析:高频考点与避坑指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
数据库系统概论期末试题解析:高频考点与避坑指南

简介:这份《数据库系统概论复习期末试题及答案》PDF面向高校计算机专业学生及备考数据库相关课程的考生,用于期末冲刺与知识点自测。内容以单项选择题、填空题为主,覆盖DBMS核心地位、三级模式与两级映像、E-R模型、关系代数、SQL授权与建表、事务隔离性、封锁协议及数据库恢复等高频考点,并附有参考答案与简要解析,便于对照查漏补缺。资源包共1个PDF文件,约174KB,轻量易携带,适合打印或移动端随时翻阅。目前已有151人学习下载,可作为考前快速过一遍概念、检验掌握程度的辅助材料,尤其适合需要梳理数据独立性、规范化与并发控制等易混知识点的读者。

1. 从一份期末试题拆解数据库系统概论的知识骨架

期末周前两周,实验室里几个同学围着一份 PDF 对答案,场面一度非常热闹。这份《数据库系统概论复习期末试题及答案.pdf》就是当时被翻得最多的一份材料——它把单项选择题、填空题、简答题、设计题和综合题五类题型压在一份文档里,每道题都带标准答案和部分解析。如果你正在准备数据库相关课程的期末考试,或者想用一套完整的题目快速检验自己对关系模型、SQL、范式、事务这些核心概念的掌握程度,这份试题的价值不在于“押题”,而在于它把考点密度拉得很高:20 道选择题覆盖了 DBMS 核心地位、三级模式、关系代数、SQL 授权、事务隔离、封锁协议等高频考点,后面的大题则直接考 E-R 图转换、BCNF 分解和视图创建。换句话说,它是一份能让你在短时间内暴露知识盲区的诊断工具,而不是一本需要从头读到尾的教材。下面我按“先理解考点逻辑,再动手做题验证,最后避开常见翻车点”的顺序,把这份资源拆开讲清楚。

2. 选择题里的高频考点:从 DBMS 核心到封锁协议

2.1 数据库系统核心与数据独立性

第 1 题问“数据库系统的核心是什么”,答案是数据库管理系统(DBMS)。这个点看起来简单,但很多人在复习时会把它和“数据库”混为一谈。数据库是数据的集合,DBMS 是管理这些数据的软件层,用户通过 DBMS 来定义、操纵和控制数据。第 4 题和第 5 题考的是数据独立性:物理独立性指应用程序与磁盘上的数据相互独立,逻辑独立性指应用程序与数据库的逻辑结构相互独立。保证逻辑独立性需要修改模式与外模式之间的映像,这一点在填空题和简答题里也会反复出现。

我一般会这样记:三级模式(外模式、模式、内模式)对应两层映像(外模式/模式映像、模式/内模式映像)。逻辑独立性靠外层映像,物理独立性靠内层映像。考试时如果问“修改哪个映像”,先判断问的是逻辑还是物理,再对应到映像层级,基本不会错。

2.2 关系代数与 SQL 语句的对应关系

第 8 题考的是 R∩S 的等价表达式,答案是 S-(S-R)。这个推导过程值得动手写一遍:S-R 表示属于 S 但不属于 R 的元组,再从 S 中减去这部分,剩下的就是同时属于 R 和 S 的元组,也就是交集。第 9 题考全外联接,场景是学生和宿舍两个关系,有的学生不住宿,有的床位空闲,要列出所有情况就得用全外联接。这里容易翻车的地方是:左外联接只保留左表全部记录,右外联接只保留右表全部记录,只有全外联接才能同时保留两侧的不匹配记录。

SQL 授权题(第 11 题)考的是GRANT UPDATE(QTY) ON SPJ TO 李勇,注意列级权限要写在权限后面的括号里,表名和用户名不要加引号(除非用户名本身是字符串常量)。第 10 题考插入元组的合法性,主键 Sno 和非空列 Sname 必须给值,Sex 和 Age 可以为 NULL,所以只有 D 选项合法。

2.3 事务隔离性与封锁协议

第 16 题到第 20 题集中考事务和并发控制。事务的隔离性指一个事务内部的操作及使用的数据对并发的其他事务是隔离的。第 18 题考 S 锁:事务 T 对数据 A 加 S 锁后可以读 A 但不能修改 A,其他事务只能再加 S 锁,不能加 X 锁。第 19 题给了两个事务的并发操作图,T1 读 A=100,T2 也读 A=100,T1 写回 A=95,T2 写回 A=92,最终 A=92,T1 的修改被覆盖了,这就是典型的丢失修改。

第 20 题考两段锁协议,选项 D 中 Slock A 之后直接 Unlock A,然后又 Slock B,违反了“所有加锁操作必须在所有解锁操作之前”的规则。两段锁协议的核心就一句话:事务分为扩展阶段和收缩阶段,扩展阶段只能加锁不能解锁,收缩阶段只能解锁不能加锁。做题时先找 Unlock 后面还有没有 Lock,有就违反。

提示:选择题里凡是涉及“等价”“正确评价”“违反协议”的题,不要凭语感选,把每个选项代入定义走一遍,尤其是关系代数和封锁协议这两类。

3. 填空题与简答题:把碎片知识串成可复述的答案

3.1 关系模型三要素与候选码判定

填空题第 1 题问关系数据模型由哪三部分组成,答案是关系数据结构、关系操作和关系完整性约束。这三要素是关系模型的理论骨架,简答题里问参照完整性规则时,本质上也是在考完整性约束这一要素。参照完整性的表述要抓住几个关键词:外码 F 与基本关系 S 的主码 Ks 对应,F 的取值要么为空,要么等于 S 中某个元组的主码值。

填空题第 5 题给了一个函数依赖集 {A→B, A→C, A→D, (B,C)→A},要求判断候选码和范式等级。候选码是 A 和 (B,C),因为 A 能推出所有其他属性,(B,C) 也能推出 A 进而推出所有属性。R 属于 BCNF,因为每个函数依赖的决定因素都包含候选码。这里容易错的地方是:判断范式等级时要先找候选码,再看函数依赖的决定因素是否都是候选码或包含候选码,不要一上来就数属性个数。

3.2 日志登记原则与视图作用

简答题第 3 题问登记日志文件的原则,答案是两条:登记的次序严格按并发事务执行的时间次序;必须先写日志文件,后写数据库。第二条是恢复机制的核心,如果先写数据库再写日志,一旦系统在写日志前崩溃,数据库的修改就无法回滚或重做。我一般会把这个原则记成“日志先行”(write-ahead logging),考试时展开成两句就行。

简答题第 2 题问视图的作用,标准答案给了四条:简化用户操作、多角度看待同一数据、对重构数据库提供逻辑独立性、对机密数据提供安全保护。这四条在选择题和设计题里也会以不同形式出现,比如设计题第 4 题要求创建视图 VIEW6,考的就是视图的定义和子查询的结合。

3.3 设计题里的 SQL 与关系代数转换

设计题第 1 题给了一个 SQL 查询,要求用汉语阐述含义并用关系代数表示。SQL 是:

SELECT CNO FROM C WHERE CNO NOT IN ( SELECT CNO FROM S, SC WHERE S.SNO = SC.SNO AND SNAME = '张三' );

这段 SQL 的含义是“查询张三同学没有选修的课程的课程号”。关系代数表达式为 πCNO(C) - πCNO(σSNAME='张三'(S) ⋈ SC)。这里的关键是理解 NOT IN 对应差集运算,子查询先找出张三选修的课程号,再从全部课程号中减掉。

设计题第 2 题要求写两个 SQL 查询。第一个是“找出店员人数不超过 100 人或者在长沙市的所有商店的代号和商店名”:

SELECT A#, ANAME FROM A WHERE WQTY <= 100 OR CITY = '长沙';

第二个是“找出至少供应了代号为 '256' 的商店所供应的全部商品的其它商店的商店名和所在城市”,这个查询用到了双重 NOT EXISTS,是 SQL 里比较难写的部分:

SELECT ANAME, CITY FROM A WHERE NOT EXISTS ( SELECT * FROM B WHERE EXISTS ( SELECT * FROM AB AB1 WHERE A# = '256' AND B# = B.B# ) AND NOT EXISTS ( SELECT * FROM AB AB2 WHERE A# != '256' AND A# = A.A# AND B# = B.B# ) );

逻辑说明:外层查询遍历每个商店,内层第一个 EXISTS 找出 256 号商店供应的所有商品,第二个 NOT EXISTS 检查当前商店是否缺少其中任何一种商品。如果不存在“256 供应了但当前商店没供应”的商品,说明当前商店至少供应了 256 的全部商品。参数说明:A# 是商店代号,B# 是商品号,AB 是供应关系表。

注意:写双重 NOT EXISTS 时,别名不要重复,AB1 和 AB2 要区分清楚,否则子查询里的 A# 和 B# 会指向错误的表。

4. 综合题拆解:E-R 图转换与 BCNF 分解的完整流程

4.1 E-R 图到关系模型的转换规则

综合题给了一个企业集团的语义描述:工厂生产产品,产品可在多个工厂生产,每个工厂按固定计划数量生产;工厂聘用职工,每名职工只能在一个工厂工作,聘用有聘期和工资。要求画 E-R 图、转换为关系模型、指出主码和外码。

转换规则是这样的:每个实体型转换为一个关系模式,实体的属性就是关系的属性,实体的码就是关系的码。1:n 联系可以合并到 n 端的关系中,m:n 联系必须转换为独立的关系模式,其属性为两端实体的码加上联系本身的属性。

按照这个规则,工厂、产品、职工三个实体各转换为一个关系。工厂和产品之间是 m:n 联系(一个工厂生产多种产品,一种产品可在多个工厂生产),所以要单独建一个“生产”关系,属性包括工厂编号、产品编号和计划数量,主码是(工厂编号,产品编号),两个外码分别指向工厂和产品。工厂和职工之间是 1:n 联系(一个工厂聘用多名职工,每名职工只能在一个工厂工作),所以可以把工厂编号合并到职工关系中,职工关系的主码是职工号,外码是工厂编号。

最终的关系模型是:工厂(工厂编号,厂名,地址),产品(产品编号,产品名,规格),职工(职工号,姓名,工厂编号,聘期,工资),生产(工厂编号,产品编号,计划数量)。主码和外码的标注要一一对应,考试时漏写外码会扣分。

4.2 BCNF 分解的逐步推导

设计题第 5 题给了一个关系 R(A, B, C, D, E) 和函数依赖集 F = {ABC→DE, BC→D, D→E},要求求候选码、判断范式等级并逐步分解为 BCNF。

第一步找候选码。ABC 能推出 DE,所以 ABC 能推出全部属性,是候选码。BC 能推出 D,D 能推出 E,但 BC 不能推出 A,所以 BC 不是候选码。候选码只有 ABC。

第二步判断范式等级。R 中存在非主属性 D 和 E 对候选码 ABC 的部分函数依赖(BC→D 中 BC 是 ABC 的真子集),所以 R 属于 1NF,不属于 2NF。

第三步分解。先消除部分函数依赖,把 R 分解为 R1(A, B, C) 和 R2(B, C, D, E)。R1 的候选码是 ABC,不存在非平凡函数依赖,已经是 BCNF。R2 的候选码是 BC,但存在 D→E,E 传递依赖于 BC,所以 R2 不属于 BCNF。

继续分解 R2,消除传递函数依赖,得到 R21(B, C, D) 和 R22(D, E)。R21 的候选码是 BC,函数依赖 BC→D 的决定因素包含候选码,属于 BCNF。R22 的候选码是 D,函数依赖 D→E 的决定因素就是候选码,也属于 BCNF。

最终分解结果是 R1(A, B, C)、R21(B, C, D)、R22(D, E),三个关系模式都满足 BCNF。每一步分解要写清楚消除了什么类型的函数依赖:第一步消除部分函数依赖,第二步消除传递函数依赖。

4.3 视图创建与更新操作的 SQL 写法

设计题第 3 题要求为工资低于 1000 元的女职工加薪 200 元:

UPDATE EMP SET SALARY = SALARY + 200 WHERE SALARY < 1000 AND SEX = '女';

设计题第 4 题要求创建有关女车间主任的视图 VIEW6,结构为(ENO, ENAME):

CREATE VIEW VIEW6 AS SELECT ENO, ENAME FROM EMP WHERE SEX = '女' AND ENO IN ( SELECT MGR_ENO FROM DEPT );

逻辑说明:先从 DEPT 表中找出所有车间主任的职工号,再在 EMP 表中筛选性别为女且职工号在其中的记录。参数说明:ENO 是职工号,ENAME 是姓名,MGR_ENO 是车间主任的职工号。注意视图定义中的子查询不能引用视图本身,否则会报循环依赖错误。

提示:BCNF 分解题不要跳步,每一步都要写出当前关系的候选码、函数依赖集和所属范式,阅卷时按步骤给分,跳步容易丢分。

5. 用这份试题做自测的四个避坑习惯

5.1 现象:选择题正确率忽高忽低,同一知识点换问法就错

原因:对定义的理解停留在“眼熟”层面,没有形成条件反射式的判断链路。比如数据独立性,知道有物理和逻辑之分,但问到“修改哪个映像”时就开始犹豫。

解决:每做完一道选择题,不要只看答案,把每个错误选项为什么错写出来。比如第 5 题问保证逻辑数据独立性需要修改什么,错误选项包括模式、内模式、模式与内模式映像,你要能说出每个选项对应的是哪种独立性或哪种操作。我一般会准备一张 A4 纸,左边写题号,右边写“考点 + 错误选项分析”,考前只看这张纸。

5.2 现象:SQL 设计题能看懂答案,但自己写就卡壳

原因:平时看题多、动手少,尤其是双重 NOT EXISTS 和关系代数转换这类需要多步推理的题,光看答案觉得“懂了”,实际写的时候别名一多就乱。

解决:把设计题第 2 题和第 5 题单独拎出来,关掉答案,在空白文档里从头写一遍。写完再对照答案,重点检查别名是否冲突、子查询的嵌套层级是否正确、关系代数的投影和选择顺序是否合理。写三遍以上,手感就出来了。

5.3 现象:BCNF 分解题每一步都觉得自己对了,最后结果和答案不一致

原因:分解过程中没有严格按“先找候选码、再判断依赖类型、再决定分解方式”的顺序走,有时候凭直觉拆关系,拆到后面发现依赖丢了或者多出来了。

解决:分解前先把函数依赖集画成有向图,标出哪些是部分依赖、哪些是传递依赖。每分解一步,把新的函数依赖集写出来,确认没有丢失原有的依赖。最后验证每个关系模式的决定因素是否都是候选码或包含候选码。这个流程走两遍,基本不会出错。

5.4 现象:综合题 E-R 图转换时漏写外码或主码标注错误

原因:转换规则记不全,尤其是 1:n 联系合并到 n 端之后,外码的指向容易搞反。

解决:转换前先把实体和联系列成表格,标出联系类型(1:1、1:n、m:n)。1:n 联系合并到 n 端,外码指向 1 端的主码;m:n 联系独立成表,主码是两端主码的组合,外码分别指向两端。转换完成后逐表检查:每个关系模式的主码是否唯一标识元组,外码是否指向正确的关系模式。这个检查习惯能帮你捡回不少分。

5.5 现象:简答题写了很多字,但得分不高

原因:没有踩到得分点,或者把定义和例子混在一起写,阅卷时找不到关键词。

解决:简答题按“定义 + 要点 + 简短例子”的结构写。比如参照完整性规则,先写定义,再写“取空值或等于 S 中某个元组的主码值”这两个要点,最后用一句话举例。不要写大段铺垫,直接上关键词。平时练习时对着答案数得分点,养成按点答题的习惯。

注意:这份试题的答案里有个别笔误,比如设计题第 4 题的视图定义中表名写成了 EMP,但前面给的职工基本表名是 ERP,做题时以题目正文的表名为准,不要被答案里的笔误带偏。

6. 从试题到知识体系:用错题反推复习优先级

做完这份试题之后,最有价值的动作不是对答案,而是把错题按知识点归类,反推自己的复习优先级。我一般会把错题分成三类:概念模糊型、计算失误型、表达不全型。概念模糊型对应选择题和填空题,说明定义没记牢,需要回到教材重新梳理;计算失误型对应关系代数和 BCNF 分解,说明步骤不熟练,需要动手重写;表达不全型对应简答题和综合题,说明答题结构有问题,需要按得分点重新组织语言。

具体操作上,我会建一个三列的表格:第一列写题号,第二列写考查的知识点,第三列写错误原因和正确思路。比如第 19 题考丢失修改,错误原因可能是“没有画出两个事务的执行时序”,正确思路是“先读后写、后写覆盖先写”。这个表格填完之后,复习优先级自然就出来了:错得多的知识点排前面,错得少但反复错的排后面。

还有一个技巧是把这份试题里的 SQL 语句全部复制到一个可执行的数据库环境里跑一遍。比如建一个 Student 表、一个 SC 表、一个 C 表,把设计题里的查询逐条执行,观察结果是否符合预期。跑通之后再改条件,比如把“张三”换成其他名字,把“女”换成“男”,看看结果怎么变。这种动手验证比单纯看答案印象深得多。

最后说一个我自己的习惯:每次做完一套试题,我会挑三道最有代表性的题,合上答案,从头到尾讲一遍解题过程,假装在给同学讲题。如果讲到某一步卡住了,说明那里就是我的薄弱点。这个办法看起来笨,但对我这种一看答案就懂、一合答案就懵的人特别管用。从那以后我每次复习数据库都强制走一遍“做题、归类、重讲”的流程,希望帮到你。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/10 0:57:07

Sybase 15.7安装全攻略:图形与静默安装、内核参数及避坑指南

简介&#xff1a;Sybase 15.7 是金融、电信行业广泛使用的数据库管理系统&#xff0c;其安装过程涉及许可协议、组件选择、服务账户配置等多个环节。这份 doc 文档以分步图解方式呈现安装全流程&#xff0c;适合初次接触 Sybase 的 DBA、开发人员及运维人员按图对照操作&#x…

作者头像 李华
网站建设 2026/10/10 0:55:21

驾驶员安全带检测数据集:YOLO训练全流程与避坑指南

简介&#xff1a;驾驶员佩戴安全带检测的YOLO格式数据集&#xff0c;面向目标检测初学者、课题研究者以及需要快速验证效果的开发者。数据按YOLOv5文件夹结构保存&#xff0c;标注采用yolo相对坐标&#xff08;类别、中心点x、y、宽高&#xff09;&#xff0c;仅含seatbelt一个…

作者头像 李华
网站建设 2026/10/10 0:55:18

VS Code + Volar 配置 Vue 3 开发环境:从零到生产级

1. 为什么 VS Code 是现在 Vue 3 开发绕不开的选择聊到 Vue 3 开发&#xff0c;我最大的体会是&#xff1a;真正决定开发效率的不是框架本身&#xff0c;而是编辑器有没有真正理解.vue文件。很多人从 Vue 2 时代就开始用 VS Code&#xff0c;装了几个扩展写 Vue 3&#xff0c;结…

作者头像 李华
网站建设 2026/10/10 0:55:09

R语言数据挖掘实战:互联网金融风控模型从特征工程到评分卡部署

简介&#xff1a;这份资源是面向数据挖掘学习者与互联网金融风控从业者的课程资料包&#xff0c;聚焦如何用R语言对海量互金数据做深入分析并构建有效风控模型&#xff0c;适合具备一定统计与编程基础、希望提升实战能力的中高级学员。包内共4个文件&#xff0c;含R程序源代码、…

作者头像 李华
网站建设 2026/10/10 0:53:26

HTML快速教程:从文档结构到表单与语义化的实战指南

1. 为什么还要写HTML快速教程说实话&#xff0c;现在前端框架满天飞&#xff0c;React、Vue、Svelte轮番上阵&#xff0c;很多人觉得HTML已经是“上古遗物”了。但我带过的新人里&#xff0c;十个有八个连<div>和<span>的区别都说不清楚&#xff0c;写出来的页面结…

作者头像 李华
网站建设 2026/10/10 0:53:22

AIDA64深度解析:硬件诊断的底层原理与工程实践

1. 为什么AIDA64不是“又一个硬件检测工具”&#xff0c;而是系统级诊断的底层标尺你可能在装新机后随手跑个鲁大师&#xff0c;也可能在排查蓝屏前点开任务管理器看一眼CPU占用——但真正想搞清楚“这台机器到底在发生什么”&#xff0c;90%的用户卡在第一步&#xff1a;看到的…

作者头像 李华