数据库系统概论第5版答案高效使用:三遍刷题法把习题变提分利器
简介关系代数和SQL是数据库课程的两大基石而范式分解与事务并发控制则是考试的深水区。面对《数据库系统概论》这类经典教材许多学习者依赖课后习题答案来校验理解但手写答案文档存在版本错位、SQL方言差异等隐患。真正有效的做法是先梳理教材的四层知识骨架再通过“做题→按考点统计错题→拆解答案模板”三遍刷题法把静态答案转化为可迁移的解题能力。对于SQL查询、E-R图设计等开放型题目还应将答案放到MySQL等真实环境中验证并建立个人错题索引与考点地图。这样课后习题答案才能从抄写模板升级为提分工具适用于期末冲刺、考研复习与自考备考。1. 数据库系统概论第5版答案先搞清这份文档能帮你省下什么期末复习到第四章回头看第二章的关系代数合上课本想对照答案找思路才发现王珊、萨师煊主编的《数据库系统概论》第5版课后习题并没有官方解析。这份“数据库系统概论第5版答案(王珊版).doc”就是在这种背景下被反复分享的整理稿按教材章节收录了课后练习的参考答案覆盖选择、计算、SQL书写和设计题。它解决的最直接问题是“做完了没人帮我判对错”适合期末冲刺的本科生、复习专业课的考研党、自考备考者。但先泼盆冷水它不是官方解析里面既有干货也有坑用对了是提分工具用错了只是抄写模板。2. 拿到答案前先把书读薄第5版的知识骨架与习题重心2.1 教材主线四层知识骨架决定习题重心《数据库系统概论》第5版整个知识体系可以压成四层课后题也顺着这四层展开。第一层是“怎么描述数据”从绪论的数据模型、三级模式两级映像开始落点在第2章的关系模型和关系代数以及第3章的SQL。这一层最容易出大题的题型是关系代数表达式推导和SQL查询书写关系代数里“选择、投影、连接、除运算”的嵌套组合几乎每年都有一道。第二层是“怎么设计数据库”对应数据库设计一章的内容E-R图怎么画、实体和联系怎么划分、E-R模型怎么转成关系模式、范式怎么判定和分解。这一层的题目没有唯一解但判分点非常明确候选码找没找对、范式级别判断对不对是评分的关键。第三层是“怎么保护数据”数据库安全性的存取控制、视图、审计数据库完整性的实体完整性、参照完整性、用户定义完整性还有触发器和断言。这一层知识点碎小题居多但参照完整性违约处理是简答题的常客。第四层是“怎么保住性能和数据不丢”事务的ACID性质、故障恢复的日志策略、检查点技术、并发控制里的封锁协议和死锁处理。这层的恢复和并发是大题高发区尤其是两段锁协议和可串行化调度的判定。数据库编程和查询优化这两块内容考研选择题经常考到课后题里也有书写存储过程或嵌入SQL的练习答案文档里对应的内容同样处于高频位置。2.2 第5版与第六版差什么做题前先核版本市面上已经能看到《数据库系统概论》第六版它调整了部分章节顺序、更新了概念表述也补充了数据管理新技术的内容。这与第5版最大的冲突就是习题编号变了。我曾经拿第六版的教材目录对着第5版答案文档做题光是前四章就有三道题“找不着家”要么题不在同一章要么第5版的答案对应不上第六版的新表述。所以在翻开答案文档之前先做一次版本核对看教材封面印的是“第5版”还是“第六版”再看目录章节名称能否与答案文档的章节标题一一对齐对不上的章节单独标注拿到题目时先判断这题在答案文档里“有没有身份”。最稳妥的做法是列一张三栏核对表左边教材章节名中间答案文档章节名右边是否匹配。花十分钟把这张表做完后面所有对答案环节都不会因为版本错位浪费更多时间。有些学校指定教材多年不变用的就是第5版那答案文档里的章节顺序基本上能直接对接如果你的教材是第六版那就需要把第5版答案当作“知识点索引”而不是“题号字典”来用。这个认知差别决定了你后面是高效复习还是低效翻找。2.3 答案文档的有效范围先做一次覆盖度检查任何一份手动整理的答案文档都不保证覆盖教材的全部课后题尤其“思考题”部分经常缺席。我的习惯是拿到文档后先做覆盖度检查按教材章节列出所有课后题的题号再对照答案文档里实际出现的题号把缺失题目的题号单独抄到一张纸上。这个检查看起来费时间实际上半小时就能完成却能避免复习到某道题时翻遍整个文档找不到答案的恼火时刻。发现缺失题后不要立刻去别处找“另一份答案”先按教材对应小节的例题自己写一个“参考答案”。教材里每个知识点的示例题已经把解题步骤演示到位比如第2章关系代数的例题后面跟着三四个习题例题的推导过程就是习题的模板。这一步做完答案文档就从“不完整的参考”变成了“你自己补齐的复习资料”后面每一次翻阅都是对知识的一次强化。覆盖度检查的结果还可以直接告诉你在后续复习中哪些章节只能靠自己推、哪些章节有资源兜底。3. 把答案文档用在刀刃上三遍刷题法3.1 第一遍合上答案做题错了再说最浪费答案文档价值的使用方式是“这道题不会→翻开答案→抄下来→觉得自己会了”。我复习时用三遍刷题法第一遍的规矩很死合上答案把教材课后题当考试题做一遍不会做的在题号旁标一个“跳”绝对不允许当场翻答案。做题的时间不用太长每题最多十五分钟超时就算“跳”。这套做法强调的是“主动回忆”——你只有先被迫调动知识去解题大脑才会把题目和知识点建立连接直接看答案会绕过这个连接等到考场上题型换个说法照样不会。第一遍做完才能对答案。对答案时不光要判对错还要给每道题打三个标记对、错、半对。“半对”是那种结果正确但过程含糊的题——比如候选码求对了但闭包推导没写全这种题恰恰是最值得关注的因为它暴露了你“知道答案但不知道算路”的隐患。第一遍对答案的目标不是改错而是把整章习题按这三个标记分类为第二遍统计做准备。3.2 第二遍按考点统计错题定位知识盲区第二遍把第一遍的标记翻译成统计数据。我会在纸上画一张简单的错题统计表行是教材的章节列是主要考点表格里填错题题号和“错因”。错因分类不需要太细五类就够概念不清、计算失误、SQL语法、设计思路、跳题未做。统计完一眼就能看出哪类错因最密集如果范式分解题连续三题都错问题大概率在闭包求法上如果SQL书写题反复在嵌套查询上丢分那就要回到第3章 EXISTS 和 NOT EXISTS 那部分重新啃。第二遍的优先顺序是概念不清和跳题未做排最前面SQL语法排中间计算失误排最后。判断依据很简单——概念不清和跳题意味着整个知识区块没有建立起来这是结构性漏洞不补会连环丢分SQL语法是熟练度问题练几次就能追回来计算失误往往只是粗心考试时留出检查时间即可。统计完别停立刻翻回教材对应小节只看例题推导然后不看答案重做刚才错的那道题。这一步做完知识盲区才真正被补了一次。3.3 第三遍用答案反推同类题的解题模板前两遍是在“用答案”第三遍开始“拆答案”。第四遍不需要全做挑每一章的高频题型各一道把答案的推导过程拆成固定步骤。以关系数据理论这一章为例范式题目的答案几乎都长在同一套结构上求候选码、判断非主属性对候选码是否有部分函数依赖、是否有传递函数依赖、确定范式级别、需要分解时给出保持依赖且无损的连接分解。候选码怎么求看函数依赖集里只在箭头左边出现、不在右边出现的属性这些属性必然是每个候选码的子集从它们出发求闭包闭包能覆盖全部属性的就是候选码如果还不够再尝试把右边属性逐个补进去求闭包。SQL书写题也能拆出模板先看题目是“查到满足条件的所有人”还是“查一个人都不出现过”前者用 IN 和 EXISTS后者用 NOT EXISTS 的双重否定或者用除运算转关系代数。每道答案拆完在旁边用三句话写出“这道题考什么、答案用了什么手法、换参数我会不会做”。当你能把答案文档里的参考答案转成自己的一套可迁移步骤这套知识就算真正长在你身上了。4. 对答案不是终点把参考答案变成可执行验证4.1 建立个人错题索引题号、考点、状态一张表对完答案不等于复习到位还差最后一步把自己的错题库建成可检索的索引。方向很简单一张表四列就够题号、考点、错因、状态。题号和考点用来定位错因决定优先顺序状态分成“待重测”“基本掌握”“已掌握”三档每周更新一次。这张表会告诉你三件事哪些考点错题密度最高哪些题只错了一次不值得再花时间哪些题改过两遍依然会错、需要在考前再刷一遍。表格不是记给别人看的是给自己检索用的。考前一周你不可能把整本答案文档翻一遍但可以把这张表里“待重测”的题目从头到尾重做一遍。做的时候盖住答案做完再对着答案文档逐条核对。核对时只关注两件事最终结果对不对中间推导有没有跳过关键步骤。我的血泪经验是很多题第一次对了过两个礼拜再做就错了原因是当初对答案时只看结果没看推导所以错题索引的状态栏必须诚实宁可多标“待重测”不要过早标“已掌握”。4.2 把SQL答案真正跑起来验证以“查询选修了全部课程的学生”为例第3章的 SQL 课后题是答案文档里最值得动手验证的部分——文字答案写得再好也不如在一台能跑的数据库上执行一次。这里以教材里最经典的“查询选修了全部课程的学生姓名”为例展示验证步骤。教材给出的参考答案通常用双重 NOT EXISTS 实现在 MySQL 中对应的可执行写法如下-- 建三张教学库的简化表学生、课程、选课 CREATE TABLE Student ( Sno CHAR(9) PRIMARY KEY, Sname VARCHAR(20) ); CREATE TABLE Course ( Cno CHAR(4) PRIMARY KEY, Cname VARCHAR(20) ); CREATE TABLE SC ( Sno CHAR(9), Cno CHAR(4), PRIMARY KEY (Sno, Cno) ); -- 插入测试数据学生张三选了所有课李四只选了一门 INSERT INTO Student VALUES (2024001, 张三), (2024002, 李四); INSERT INTO Course VALUES (C001, 数据库), (C002, 网络); INSERT INTO SC VALUES (2024001, C001), (2024001, C002), (2024002, C001); -- 参考答案的双重 NOT EXISTS 查询 SELECT Sname FROM Student WHERE NOT EXISTS ( SELECT 1 FROM Course c WHERE NOT EXISTS ( SELECT 1 FROM SC sc WHERE sc.Sno Student.Sno AND sc.Cno c.Cno ) );这段 SQL 的逻辑是“不存在这样一门课程这个学生没选它”。先看内层子查询对某个学生 s 和某门课 c如果在 SC 表里找不到 s 选了 c 的记录内层结果集就非空外层 NOT EXISTS 拿到非空结果说明确实有一门课这个学生没选于是该学生整体不满足条件。执行结果应该只返回“张三”因为李四有一门课没选。验证时要在自己的 MySQL 里把数据跑一遍观察结果如果想知道答案在另一种写法下是否等价可以把 NOT EXISTS 换成 NOT IN 和 LEFT JOIN 分别试一次对比结果集差异。这里的参数调整也很重要表名和列名在 MySQL 下默认匹配大小写规则不同版本 SQL 对空值的处理也有差异所以验证用的样例数据一定要包含“某门课无人选修”和“某学生一门课没选”两种边界情况。4.3 概念题答案转成自己的话能复述才是真懂概念题是答案文档里最容易被“背一遍就过”的部分但考试时最吃亏的也是这种题。拿事务的 ACID 四个性质举例教材的表述是“原子性、一致性、隔离性、持久性”答案文档里通常会展开成四句话。很多人背完这四句话就觉得自己会了但考卷换个问法——“系统崩溃后为什么已提交事务的数据不丢”——就卡住了。因为背诵时没有把概念转成自己的理解框架。我的做法是盖住答案用自己的话把概念讲一遍原子性是“事务里的操作要么全提交要么全回滚不能做一半”一致性是“事务执行前和执行后数据库的完整性约束都不被破坏”隔离性是“两个事务并发修改同一行时彼此看不到对方中间状态”持久性是“提交成功之后哪怕主机断电数据也已经写进磁盘日志不会丢”。讲完再对照教材的定义找差距。每章挑五到八个关键概念做一次“复述对照”比把答案读三遍更有效因为复述强制你组织语言组织语言的过程就是在检验你是不是真的理解了这个概念的边界。5. 答案文档避坑指南五个我踩过的坑5.1 版本错位第5版答案对不上第六版题号现象用第六版教材做题翻答案文档找对应题号发现第5版的题目顺序和第六版对不上甚至一道题在第5版里是第三章的第六版已经挪到别的小节。原因《数据库系统概论》第六版对章节结构和习题编号做了调整第5版的答案文档不会同步更新。解决动手做第2.2节的版本核对表先把教材目录和答案文档目录对齐对不上的题不再硬找答案而是直接在教材对应的知识小节里自己推一遍把这道题当作“自测题”而不是“依赖答案的题”处理。5.2 SQL答案在MySQL里跑不通现象把答案文档里的 SQL 照抄进 MySQL要么报语法错误要么结果和教材不一致。原因教材在讲 SQL 时以标准 SQL 为主示例风格偏向 Oracle 系方言而本地验证环境多半是 MySQL语法细节有差异最典型的是日期函数、字符串拼接、空值判断和分页写法。解决本地验证前先做“方言转换”——把教材里的取系统日期改成 MySQL 的 CURRENT_DATE把字符串连接符 || 改成 CONCAT把 TOP n 或 ROWNUM 改成 LIMIT n把外层套的 DUAL 虚拟表去掉。做完这四类替换绝大多数 SQL 题都能在 MySQL 里跑出可对照的结果。我自己就在这翻过车后来养成了“先看答案用的哪个数据库风格再决定能不能直接执行”的习惯。5.3 手打答案的错字与漏答现象某道题的答案步骤看起来不对劲甚至前后两句自相矛盾用书上的定理验证后发现答案是错的。原因答案文档是个人或团队整理的 .doc 文件经过多次手动录入、复制粘贴或 OCR 识别错字、漏答、公式符号丢失都不奇怪尤其是关系代数和范式分解这类包含大量符号的题目。解决对计算型答案保持“半信半疑”的态度每道题的推导都亲自在草稿纸上过一遍以教材例题为基准如果发现答案与教材定理冲突优先怀疑答案错了而不是教材错了。范式分解题要特别当心无损连接判定和依赖保持判定很容易在整理过程中漏掉关键步骤。5.4 设计题没有标准答案现象自己画的 E-R 图、自己写的关系模式和答案文档给的不一样于是开始怀疑自己学得有问题。原因数据库设计本质上是一道开放题实体和属性的划分存在合理冗余空间只要满足题目需求两套设计可以同时成立。解决做“等价性三问”——第一问两套方案的实体集范围是否一致第二问实体之间的联系类型是否一致一对一、一对多、多对多的判断不能错第三问每个关系模式的主键是否一致。三问都通过方案就是等价的放心保留自己的答案不用硬背答案文档的版本。设计题没有“标准答案”但有“判分标准”判分标准就是这三个问号。5.5 思考题无解析文档覆盖不完整现象翻到某一章的末尾发现答案文档里只剩下几道题的解答其余题要么只有“略”字要么干脆没收录而那些题恰好是教材标注的思考题。原因答案文档不是官方解析整理者往往优先处理有明确结果的练习题对需要长篇论述的思考题选择跳过。解决对缺失题做“自问自答”——把教材对应小节的知识点列出关键词用自己的话组织成一段答案写在笔记本上完成后找身边同学或任课老师帮忙看一眼逻辑是否通顺。这个过程既补上了文档的缺口又顺手锻炼了论述题的表达组织能力比单纯等一份更全的答案更可靠。6. 让答案文档进入复习闭环一页考点地图与每周重测6.1 考点地图一张A4纸把全部错题装进去考前复习最大的问题是“不知道自己哪里不会”。把错题索引里的内容搬进一张考点地图就能解决拿一张A4纸横轴写章节名纵轴写高频考点每个格子填错题题号。一眼扫过去哪个格子被题号填满了哪里就是复习重点空白格子说明已经掌握或者没做过题不用浪费复习时间。这张地图比错题索引更直观因为它把“题号”还原成了“考点”你看到的是知识点的覆盖情况而不是一行行的题目记录。6.2 每周重测只有重做过的题才算会了考前三周开始每周做一次重测周一从考点地图里挑“待重测”的题合上答案重新做一遍周五对答案连续两周重做都对状态才改成“已掌握”。重测时不追求做新题只重做错过的题因为旧错题暴露的是思维漏洞新题无法精准打击漏洞。第一周重测时你会发现自己对错题的印象已经模糊一批“当初半对半错”的题会掉回“待重测”这正是正常现象。我对这个方法的信任来自一次期末考试的教训考前把答案文档从头到尾翻了三遍考场上一道变换参数的范式题照样卡壳后来改成错题重测才把成绩稳住。答案文档是省时间的工具真正提分的是你用它的方式。希望帮到你。本文还有配套的精品资源点击获取