资讯详情

数据库系统概论期末自测题详解:覆盖SQL、E-R图与范式核心考点

📅 2026/10/11 14:49:06 | 华诺云谱 👁 阅读
数据库系统概论期末自测题详解:覆盖SQL、E-R图与范式核心考点
简介《数据库系统概论》期末考试试卷含答案是一份面向高校数据库课程复习备考的经典试卷资料。内容围绕数据库系统核心知识展开覆盖实体联系、关系模型、关系代数、SQL语言、数据安全、数据依赖、数据库设计、CGI规范、面向对象数据库系统等章节并包含填空题、判断题、单选题、简答题与综合题适合期末考前自测与查漏补缺帮助学习者巩固重点概念与SQL应用能力。资源包共1个PDF文件大小218KB内容紧凑可直接下载打印练习。目前已有825人学习使用。试卷附有完整参考答案尤其是综合题部分提供了SQL语句和E-R图设计示例便于对照解题思路。通过这套试题读者既能检验自己对数据库原理的理解又能演练常见题型是备考《数据库系统概论》期末考试的高效辅助资料。1. 数据库系统概论期末卷一整套带答案的重点自测题数据库系统概论这门课期末复习最容易犯的错就是拿一堆没有答案的题库硬刷刷完也不知道自己哪里错。这套资源不一样一份完整期末考试试卷从填空、判断、单选到简答、综合题全部齐活而且大部分题目直接给了标准答案。它覆盖的考点非常集中——实体联系、关系模型、关系代数、SQL、数据依赖、范式、数据库设计、DBMS 功能全是教材里反复出现的内容。适合三类人正在备考的在校生想快速检验自己数据库底子的考研复试者以及带新人的后端工程师找一套标准自测题。二十道题认真过一遍比盲目刷十套题管用得多。2. 题型与分值先看懂 100 分是怎么分布的再安排复习顺序2.1 填空和判断考的是术语精确度不是知识广度这份卷子的分值分布很有意思填空 20 分、判断 10 分、单选 20 分、简答 30 分、综合 20 分。算下来概念类题目占了 50 分真正需要写 SQL 和画 E-R 图的只有最后 20 分。也就是说哪怕你 SQL 写得再熟练前面概念题丢一半总分照样不及格。填空一共 12 题 20 个空覆盖范围相当固定。第 1 题实体之间的联系分为 1∶1、1∶n、m∶n这里有个坑教材表述是“一对一、一对多、多对多”你要是写成“一对一、多对一、多对多”就错了因为多对一和一对多只是观察角度不同在关系模型里不单独作为一类联系。第 2 题问数据库系统的核心答案是数据库管理系统注意题干说的是“系统”不是数据库本身。第 3 题关系模型中实体和联系都用关系表示这是和层次模型、网状模型最本质的区别。第 4 题关系代数中专门的关系运算包括选择、投影、连接、除题目已经把“选择”和“投影”写出来了剩下两个空填“连接”和“除”。第 5 题 QBE 语言属于域关系演算这里要和下一题的 SQL 特点一起记QBE 是面向用户的可视化查询语言SQL 是标准关系数据库语言两者侧重完全不同。第 6 题 SQL 语言集数据查询、数据操纵、数据定义和数据控制于一体四个功能缺一个都不完整。第 7 题数据库管理系统保证数据安全的主要措施是存取控制。第 8 题最重要的数据依赖是函数依赖和多值依赖函数依赖是基础。第 9 题关系模式由 3NF 转化为 BCNF是消除了主属性对码的部分函数依赖和传递函数依赖这是范式章节最容易被绕进去的点。第 10 题数据库设计包括结构数据设计和行为处理设计。第 11 题 CGI 规范允许 Web 服务器执行外部程序把输出发给浏览器这个考点现在虽然不常考但它是数据库与 Web 结合的老知识。第 12 题数据库技术与面向对象技术结合形成面向对象数据库系统。判断题这 10 道题资源里没有附答案这反而是一个值得动手的机会。第 1 题说 IMS 系统使用 HSAM 存储结构时检索、插入、删除都很方便HSAM 是层次顺序存取方法检索确实方便但插入和删除非常不便所以这个判断是错的。第 5 题说完整性约束的检查总是在每个维护操作执行后立即进行事实上还有延迟约束模式不是绝对的也是错的。2.2 单选和简答把教科书原文变成自己的话单选题只有 5 道每道 4 分性价比比填空高得多。第 1 题问数据库类型按什么划分答案是数据模型——关系型、层次型、网状型这些分类本质上是按数据模型分的不是按文件形式或记录形式。第 2 题问关系演算的基础答案是数理逻辑中的谓词演算注意“数理逻辑”和“形式逻辑”的措辞差异。第 3 题是经典陷阱要求分解保持函数依赖模式分解一定能达到 3NF但未必能达到 BCNF。反过来达到 BCNF 也不一定能保持函数依赖这两句话要放在一起理解。第 4 题封锁协议等级问题1 级封锁协议加上对要读取的数据 R 加 S 锁就是 2 级封锁协议这个递进关系我在第 4 章会具体拆。第 5 题问数据字典建立时机答案是需求分析阶段。简答题 5 道每题 6 分答案核心点其实都能在教材原文里找到。DBMS 的功能教材列得很清楚数据定义、数据操纵、数据库运行管理、数据组织存储和管理、数据库的建立和维护、数据通信接口。SQL 语言的特点是综合统一、高度非过程化、面向集合的操作方式、以同一种语法结构提供两种操作方式、语言简洁易学。数据库系统的定义要答完整的组成关联数据的集合、DBMS 和用户应用程序。完整性保护的主要任务包括适时检查完整约束条件、控制并发操作、系统故障后即时恢复。倒排文件查找那题如果只建立了部分关键字辅索引先在已建立的辅索引中求指针交集再逐个验证其它关键字是否匹配。2.3 综合题SQL 和 E-R 图是概念知识的试金石综合题就两道但占 20 分第一道是学生课程库的 SQL 查询第二道是 E-R 图转换。为什么出题人把它们放在最后因为这两道题是“背概念”和“用概念”的分水岭。就算你把前三道大题全背下来如果写不出 select...from...where 的自然连接、画不对学生和课程的 m:n 联系这门课只能算掌握了前半部分。第一道综合题的三张表是经典的 Student、Course、SC 结构。Student 表有学号、姓名、性别、年龄、所在系Course 表有课程号、课程名、先行课、学分SC 表有学号、课程号、成绩。三张表构成了一个完整的学生选课场景也构成了外键约束和连接查询的基础数据。第二道综合题要求把关系表示的学生、课程以及学习联系转换成 E-R 图并标注联系类型。一个学生可以选多门课一门课也可以被多个学生选所以是 m:n 联系而成绩是联系“学习”的属性不是学生或课程实体的属性。3. 综合题实战把学生课程库的 SQL 和 E-R 图完整跑一遍3.1 还原三张基础表建表语句与字段约束纸上得来终觉浅把这张卷子的 SQL 题真正跑一遍先要把数据表搭起来。常见做法是在本机装一个 MySQL 或者用 SQLite 内存库跑。下面这段建表语句可以直接在 MySQL 8.x 里执行-- 学生表Sno 主键Sname 非空Ssex 只存一个字符 CREATE TABLE Student ( Sno CHAR(5) PRIMARY KEY, Sname VARCHAR(10) NOT NULL, Ssex CHAR(1), Sage INT, Sdept VARCHAR(20) ); -- 课程表Cno 主键Cpno 是先行课自引用另一门课的 Cno CREATE TABLE Course ( Cno CHAR(2) PRIMARY KEY, Cname VARCHAR(20) NOT NULL, Cpno CHAR(2), Ccredit INT ); -- 选课表Sno Cno 联合主键同时做两个外键 CREATE TABLE SC ( Sno CHAR(5), Cno CHAR(2), Grade INT, PRIMARY KEY (Sno, Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno), FOREIGN KEY (Cno) REFERENCES Course(Cno) );几个参数说明一下。Sno 用 CHAR(5) 而不是 VARCHAR因为学号是定长字符串试卷里是 95001 这种五位编码定长类型在等值查询和连接时性能更好。Sage 用 INT年龄不需要精度。Cpno 自引用 Course 表自己的 Cno这个字段在教材里叫先行课是递归关系建表时先建 Course 再建 SC 就避免了循环引用的问题。SC 表的联合主键是关键。一个学生选一门课只有一条选课记录用 (Sno, Cno) 做主键能保证同一学生不会重复选同一门课。外键约束是为了保证参照完整性本科生课程里这道题不会让你写建表语句但在实际工程里参照完整性是数据库设计的基本功。3.2 三个查询的写法、等价变形与执行顺序试卷给了三道查询题答案用的是传统隐式连接写法。对于这道题来说这样写完全没问题但我要给出更规范的显式写法并解释两种写法的区别。第一题查询所有年龄在 20 岁以下的学生姓名与年龄-- 标准写法Sage 小于 20 SELECT Sname, Sage FROM Student WHERE Sage 20; -- 等价变形用 NOT 反向过滤 SELECT Sname, Sage FROM Student WHERE NOT Sage 20;第一种写法在执行计划上优于第二种。Sage 20 可以直接走范围索引而 NOT Sage 20 在部分数据库里会被改写成相同执行计划但有些优化器不识别可能做全表扫描。数据量小的时候看不出区别养成写正向条件的好习惯更重要。第二题查询年龄不在 2023 岁之间的学生姓名、系别和年龄SELECT Sname, Sdept, Sage FROM Student WHERE Sage NOT BETWEEN 20 AND 23;注意 BETWEEN 在 SQL 里是闭区间BETWEEN 20 AND 23 包含 20 和 23。这道题的答案里还有一个容易踩的坑有些同学写成 Sage 20 OR Sage 23这在逻辑上等价但语义上不如 NOT BETWEEN 清晰。我一般建议用 NOT BETWEEN 表达区间排除可读性更好也避免边界值判断错误。第三题查询每个学生及其选修课程的情况-- 传统写法试卷答案 SELECT Student.*, SC.* FROM Student, SC WHERE Student.Sno SC.Sno; -- 现代写法显式 INNER JOIN语义更清晰 SELECT Student.Sno, Student.Sname, SC.Cno, SC.Grade FROM Student INNER JOIN SC ON Student.Sno SC.Sno;显式 JOIN 是现代 SQL 的推荐做法。旧写法把连接条件放在 WHERE 里如果后面再跟过滤条件连接条件和过滤条件混在一起语句一长就很难读。而且一旦漏写 WHERE 条件会产生笛卡尔积学生表 4 条记录、SC 表 6 条记录出来的结果集就是 24 条数据量一大排查起来非常痛苦。用 INNER JOIN 时连接条件就固定在 ON 后面漏写的概率低很多。3.3 E-R 图转换从关系模式反推联系类型第二道综合题是把关系表示的学生、课程、学习联系转换成 E-R 图。学生学号、姓名、性别、年龄关键字是学号课程课程号、课程名、学分数关键字是课程号学习学号、课程号、成绩关键字是学号 课程号。E-R 图的画法逻辑是这样的实体用矩形属性用椭圆联系用菱形。学生和课程之间有一个“学习”联系因为一个学生可以选多门课程一门课程也可以被多个学生选所以联系类型是 m:n。成绩是学习联系的属性因为它只存在于某个学生选了某门课之后不属于学生也不属于课程。有一个细节值得单独说联系“学习”的关键字是学号 课程号这个联合关键字恰恰是 m:n 联系的标志。如果是 1:n 联系比如班级和学生联系的关键字只需要“班级号”这一边不需要加学生那一侧。看到这里可以做个自测如果题目改成“班级和学生”联系的关键字应该是什么答案是只有班级号因为一个班级对应多个学生靠班级号就能唯一确定所有学生。4. 常见问题排查这份卷子最容易翻车的四个知识点4.1 现象一填空题第 1 题的联系类型顺序写反这是每届都会出现的低级失误。有同学填“一对一、多对一、多对多”也有同学填“1∶1、n∶1、m∶n”。原因是对“联系方式”三个字的理解有偏差把同一种关系从两个方向表述成两类。解决方法是死记住分类标准实体之间的联系按联系方式的“数”来分只有三种组合——1∶1、1∶n、m∶n不存在 n∶1 这个独立类别。写答案的时候先写基数小的再写基数大的能避免大部分批改争议。4.2 现象二单选第 4 题封锁协议等级记混这题的原文是“1 级封锁协议加上 T 要读取的数据 R 加 S 锁这是几级封锁协议”正确答案是 2 级。很多同学在 2 级和 3 级之间摇摆。原因是把封锁协议的功能层叠关系忘了。1 级封锁协议只要求在修改数据前加 X 锁解决的是丢失修改2 级封锁协议在 1 级基础上要求读取数据前加 S 锁解决的是脏读3 级封锁协议在 2 级基础上事务结束前不释放 S 锁解决的是不可重复读。解决的层次不一样等级自然就不一样。记忆方式是1 级管写2 级管读3 级管到底。4.3 现象三3NF 转 BCNF 的主属性判断失误第 9 题填空问 3NF 转 BCNF 消除了什么很多同学答“部分函数依赖和传递函数依赖”的时候漏了“主属性对码的”这个限定语。这里有一个更隐蔽的翻车点BCNF 要求每一个决定因素都包含候选码而 3NF 允许主属性对码存在部分依赖或传递依赖。判断的时候要先找出所有候选码再看非主属性和主属性分别依赖什么。实际做题时最好把每个函数依赖写出来然后在旁边标注主属性、非主属性、候选码再判断属于哪一级范式。我在带新人做数据库设计评审时一直要求他们画函数依赖图就是因为在纸面上一步跳很容易漏。4.4 现象四判断题和简答题没答案只能靠教材核对这套资源里判断题 10 道没有给出答案说明原始卷面本身就没附。这是一个诚实的信息不要在脑子里给它补一个“标准答案”。我的解决方法是把判断题当成填空题来做每题先判断对错再写出判断依据然后回到教材对应章节找原文。比如第 1 题 IMS 的 HSAM教材树形结构章节一定会讲“检索方便、插入删除不便”你把它标成错误依据是插入删除不方便这个推理过程比答案本身更有价值。顺序文件那题说“插入记录比较困难”这也是正确的因为顺序文件插入记录需要移动后续所有记录时间复杂度高。这样整理下来的判断题笔记其实比有答案的卷子记得更牢。5. 考前自查考点映射、二刷节奏与上机跑题5.1 把试卷考点映射到教材章节我拿到任何一份试卷后的第一个动作是把每道题对应回教材章节做一张映射表。这套卷子的映射大概是这个样子试卷题目对应教材章节核心知识点填空第 1 题数据模型实体联系类型填空第 2、3 题关系数据库DBMS 核心地位、关系表示填空第 4 题关系代数专门的关系运算填空第 6 题SQL 语言SQL 四大功能填空第 8、9 题数据依赖与范式函数依赖、BCNF 转换填空第 10 题数据库设计结构与行为设计单选第 3 题范式与分解保持函数依赖的分解单选第 4 题并发控制封锁协议等级简答第 1 题DBMS 概述数据库管理系统功能综合第 1 题SQL 查询基本查询与连接查询综合第 2 题数据库设计E-R 图转换做这个映射的用处是快速定位自己的薄弱章节。如果你概念题错了一大半往回翻教材的时候不需要从头看直接定位到映射表对应章节重点重读。市面上《数据库系统概论》的教材版本不少常见已经从早期版本更新到第六版但核心章节结构基本一致这套映射对大多数版本都适用。5.2 错题标记与二刷节奏第一遍做题不要直接在试卷上写答案我会用空白纸或者在 PDF 上做标注把错题分成两类一类是“记忆性错误”比如 SQL 四个功能记不全这类题只需要背诵二刷时快速过另一类是“理解性错误”比如范式判断逻辑混乱、封锁协议做不到题这类题需要回到教材重新推导。二刷的时间要隔开至少隔三天。三天内重做同一道题很容易因为短期记忆形成假熟练。二刷时只做第一遍标记的错题做对的就划掉不要重复刷。三刷只刷那些二刷仍然错的题这时候要对自己狠一点——如果三刷还错说明不是记不住是根本没理解必须找到教材原文重新看示例。5.3 在 VSCode 里用 SQLite 跑这套 SQL 题身边没有 MySQL 环境的时候我习惯直接用 VSCode 加 SQLite 扩展来跑试卷里的 SQL 题。这个组合轻量、启动快适合在手机或平板环境下完成数据库复习。具体做法是装 SQLite3 浏览器插件新建一个 test.db 数据库把第 3 章的建表语句和执行语句敲进去。SQLite 对标准 SQL 的支持足够覆盖本科生阶段的所有查询题目唯一要注意的是 SQLite 默认没有强制外键约束需要执行一行 PRAGMA 语句开启。-- SQLite 里启用外键约束 PRAGMA foreign_keys ON; -- 验证建表是否成功 .tables跑完建表语句后把试卷的 INSERT 数据打进去你到底查没查对结果集马上见分晓。我让学生在 VSCode 里做这件事就是因为可视化执行结果比纸上写 SQL 更容易暴露逻辑错误——比如忘记连接条件产生笛卡尔积结果集行数明显不对一眼就能看出来。6. 把真题改造成知识点卡片考前一周的最高效整理法考前一周再回头整段翻教材效率很低。我用的方法是把这张卷子的知识点拆成问题卡片一张卡一个考点正面是问题背面是答案加一句“为什么”。具体做法是这样的。先把卷子里所有考到的知识点整理成问题列表什么是超关键字和主关键字的关系、1 级封锁协议解决了什么问题、2 级封锁协议加了什么锁、保持函数依赖的分解一定能达到几级范式、倒排文件部分辅索引如何查找。每个知识点正面是问题背面是先写标准答案再写一句我的理解比如“2 级封锁协议解决脏读因为 S 锁保证读取到的是已提交数据”。卡片本质上是把试卷的“题目”和“答案”拆开重排。试卷第 2 章的选择题问 1 级封锁协议加 S 锁是几级转换成卡片就是一道 Q/A。简答题里“SQL 特点”有五个要点拆成五张卡每张卡只记一个要点。这个过程会强迫你重新理解每个概念而不是机械背诵。制作卡片时我习惯用双列样式左列是问题列表右列是答案。关键在与给每张卡打一个知识点标签比如“范式”“并发控制”“SQL 语法”这样考前可以按标签筛选突击。整天刷卷子的时候把做错的那几题对应的卡片单独提出来集中看一个主题效率比从头到尾过十遍高得多。我自己的习惯是任何考试复习到最后一天只留三样东西一份错题清单、一叠知识点卡片、一个能跑 SQL 的本地环境。这三样全部由真题改造成不额外加负担。从那以后我每次复习数据库相关课程都强制自己先做一遍“试卷拆卡”再把卡片的“为什么”写到背面最后一天只翻卡不动卷。这套方法帮我用一份试卷拿下了好几个项目的数据库设计笔试。希望帮到你。本文还有配套的精品资源点击获取
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑