资讯动态

数据库系统工程师复习资料:按分值重排与高频考点避坑指南

发布时间:2026/10/27 11:07:05 来源:尧图企业网站定制
简介这份《软考数据库系统工程师复习资料 完全版》面向备考软考数据库系统工程师的考生也适合需要系统梳理数据库与计算机基础知识的自学者使用重点解决考点覆盖面广、复习线索零散的问题。包内共1个docx文档压缩包约2.93MB打开后可按章节连续阅读便于打印或在本地做标注。文档共十五章从计算机系统知识、数据结构与算法、操作系统、程序设计基础、网络与多媒体知识延伸到数据库技术基础、关系数据库、SQL语言、系统开发与运行、数据库设计、网络与数据库并补充数据库发展趋势与新技术、知识产权和标准化基础知识目录层次清晰便于按考试模块定位薄弱环节。目前已有2232人学习或下载可作为考前系统过一遍知识框架、快速查漏补缺的复习材料。1. 一份十五章的数据库系统工程师复习资料别从第一页开始啃大多数人拿到一份数据库系统工程师复习资料的第一个动作是从第一章第一页开始逐条往下背然后在第三章操作系统那里断掉隔两周再翻开时前面的内容已经忘得差不多。这份完全版资料的结构恰好放大了这个陷阱十五章内容从计算机系统知识一路铺到标准化基础知识条目密度极高每条都是结论式的短句没有铺垫、没有例题读起来很顺忘起来也很快。它真正的定位不是教材替代品而是一份把考试大纲拆成可勾选条目的知识地图——适合在系统刷题之前做一次覆盖度校准也适合考前两周做查漏补缺。如果你已经有基本的数据库概念缺的是「哪些点会被考、哪些点我还没覆盖」这份资料比任何一本厚教材都直接。2. 拆目录十五章知识按分值密度重排成四块2.1 十五章的真实分布先看清哪几章在喂分拿到资料先别读正文把目录抄到一张纸上按「知识块 题型 投入」三列重排一次。资料本身的章节顺序是教材顺序不是得分顺序两者差得很远。第一章计算机系统知识里塞了流水线、Cache、磁盘容量、可靠性、加密算法全是能出计算题的点第七章到第十三章是数据库主线上午单选和下午大题都从这里出第十四、十五章知识产权和标准化是纯记忆块考前三天翻两遍就够。我按自己的经验把十五章归成下面这张表权重列是「单位时间得分效率」的粗略估计不是官方分值但用来决定先读哪章足够用章节知识块主要题型建议投入第1章 计算机系统知识硬件组成、流水线、存储、可靠性、加密上午单选 计算高第2章 数据结构与算法线性表、树、图、查找上午单选中第3章 操作系统知识进程、PV 操作、存储管理、文件系统上午单选 计算高第4章 程序设计基础语言分类、基本成分、错误类型上午单选低第5章 网络基础知识协议分层、端口、FTP 双连接上午单选中第6章 多媒体基础知识采样、编码、容量计算上午单选低第7章 数据库技术基础三级模式、数据模型、DBMS 功能上午 下午高第8章 关系数据库关系代数、范式、完整性约束上午 下午高第9章 SQL 语言DDL/DML/DCL、视图、索引下午大题极高第10章 系统开发与运行生命周期、测试、维护类型上午单选中第11章 数据库设计需求分析、概念/逻辑/物理设计下午大题极高第12章 网络与数据库分布透明性、C/S、中间件上午单选低第13章 发展趋势与新技术分布式、并行、云、NoSQL上午单选低第14章 知识产权著作权、专利、商标保护期上午单选低但必背第15章 标准化标准分级、代码、文档标准上午单选低但必背这张表最直接的用处是砍掉「平均用力」的幻想。第 4、6、12、13 章加起来大概占掉资料里三分之一的页数但真正需要你反复回看的只有前面标「极高」的那三章。2.2 第一遍别从第一章读先啃第七到第十三章理由很实际数据库主线是唯一一块「上午题和下午题共用同一套概念」的内容。三级模式、关系代数、范式、SQL、E-R 转换这些概念在上午是选择题在下午是 15 分左右的设计题同一份理解能兑两次分。而第一章的流水线、第三章的 PV 操作考完就再也用不上属于一次性投入。我的顺序是先把第七、八、九、十一章通读一遍用三到四天边读边在纸上画三级模式图和 E-R 图然后回头处理第一章和第三章的计算题最后扫第五、十章第十四、十五章留到考前几天。这样做的副作用是刚开始读会觉得抽象概念扎堆、没有缓冲但撑过第八章之后后面每一章都能挂到已经建好的框架上。提示如果你完全没接触过数据库第七、八章先读两遍再往下走。第九章的 SQL 语句如果脱离关系模型去背语法很容易变成死记硬背换个题干就写不出来。2.3 三色标记法把每条知识点打成必背、理解、眼熟这份资料的每一条都是编号短句天然适合做标记。我用三种符号第一遍扫读时直接在条目旁边打标记判定标准后续处理★数字、公式、定义边界、固定结论抄进公式卡考前每天过△有推导链、能自己复述出来第二遍合上书复述一次○名词、分类、了解性内容只在考前扫一遍举个例子第一章第 12 条虚拟存储器里「页式页表硬件少、查表快、主存零头少分页无逻辑性不利于存储保护」这种对比结论直接打 ★因为它就是选择题的选项来源而第 8 条 Flynn 分类那一大段叙述性文字核心只有 SISD/SIMD/MISD/MIMD 四个缩写和「商用并行机 MIMD 最通用」这一句结论其余全部打 ○。标记做完你的资料就变成了两套东西一套是几十条 ★ 组成的公式与结论卡一套是 ○ 组成的临考速览。第一遍读得慢没关系标记做对了第二遍能省一半时间。3. 数据库主线三段推进从关系模型到 SQL 再到设计题3.1 第七章三级模式两级映像先立住后面全通第七章看起来是概念堆砌其实是整条主线的地基。资料里列了数据库技术基础的若干条目但真正决定你后面能不能读懂的是这三个词外模式、模式、内模式以及它们之间的两级映像。我的记法是把它当成「三层翻译」外模式是给具体用户/应用看的视图层模式是全局逻辑结构内模式是数据在磁盘上怎么存。外模式/模式映像保证逻辑独立性——全局逻辑结构改了只要改映像应用不用动模式/内模式映像保证物理独立性——存储结构换了逻辑结构不用动。这两条独立性的考法非常固定题干给你一个场景问「修改了某层结构哪一层不受影响」答案永远指向映像的保护范围。你把「谁改、谁不变」这对关系在纸上写两遍比读十遍定义管用改模式加字段、拆表→ 外模式/模式映像兜住 → 应用程序不变改内模式换存储结构、加索引→ 模式/内模式映像兜住 → 逻辑结构不变第七章还有一块是数据模型三要素数据结构、数据操作、完整性约束。这三要素后面在关系模型里会具体化成「二维表 关系运算 三类完整性」第七章只需要建立这个映射关系不必深挖。3.2 第八章关系代数与范式的判断路径关系代数部分资料里给的是运算符号和定义。真正要练的是「看到题干能选对运算」投影是选列选择是选行自然连接是按公共属性等值拼接并去掉重复列除运算用来回答「对所有……都……」这类全称量词问题。全称量词是选择题的高频翻车点因为自然语言里「选修了全部课程的学生」很难一眼翻成除法我的办法是先把题干改写成「不存在一门课程该学生没有选修」再对上除法的定义。范式判断更需要一条固定路径不能凭感觉。我按下面四步走写出所有候选键能唯一决定全部属性的最小属性组分清主属性和非主属性检查非主属性对候选键有没有部分依赖 → 有则只到 1NF检查非主属性对候选键有没有传递依赖 → 有则只到 2NF无则到 3NFBCNF 再往前一步所有决定因素都必须是候选键也就是说主属性之间也不能有部分依赖和传递依赖。判断时最容易错的是把「主属性」当成「主键」主属性是包含在任意候选键里的属性候选键可能不止一个。三类完整性约束要和范式分开记实体完整性管主键非空唯一参照完整性管外键要么为空、要么等于被参照表里存在的值用户定义完整性就是 CHECK 那类业务规则。这三条在下午设计题里会直接对应到建表语句。3.3 第九章把 SQL 拆成 DDL、DML、DCL 三种肌肉记忆SQL 这一章是资料里最值得动手的部分。光看条目记不住语法我的做法是把每类语句各写一遍写在纸上或者敲进任何一个能跑 SQL 的环境里重点是让手记住「约束写在哪一行」。-- DDL建表时把三类完整性一次写全这是下午设计题的标准答法 CREATE TABLE 选课 ( 学号 CHAR(10) NOT NULL, 课程号 CHAR(6) NOT NULL, 成绩 DECIMAL(5,1) CHECK (成绩 BETWEEN 0 AND 100), -- 用户定义完整性 PRIMARY KEY (学号, 课程号), -- 实体完整性复合主键 FOREIGN KEY (学号) REFERENCES 学生(学号) -- 参照完整性 ON DELETE CASCADE );这段代码里PRIMARY KEY (学号, 课程号)说明选课表的键是组合键单个学号或单个课程号都不唯一CHECK (成绩 BETWEEN 0 AND 100)是唯一能体现业务规则的约束写法题干里只要出现「成绩在 0 到 100 之间」「工资不低于最低标准」这类描述就必须写 CHECK漏掉就丢分ON DELETE CASCADE是级联删除题干出现「删除学生时同时删除其选课记录」才写没这句话就别加加了反而算错。-- DML分组过滤的书写顺序和执行顺序不是一回事 SELECT 课程号, AVG(成绩) AS 平均分 FROM 选课 WHERE 成绩 IS NOT NULL GROUP BY 课程号 HAVING COUNT(*) 5 ORDER BY 平均分 DESC; -- DCLWITH GRANT OPTION 与 CASCADE 是两个方向相反的传播开关 GRANT SELECT, UPDATE(成绩) ON 选课 TO 助教 WITH GRANT OPTION; REVOKE UPDATE(成绩) ON 选课 FROM 助教 CASCADE;第二段的关键在顺序书写顺序是 SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY执行顺序是 FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY。这个差异决定了两件事——WHERE 里不能出现聚合函数因为分组还没发生HAVING 后面才能跟 COUNT、AVG 这类聚合条件。WITH GRANT OPTION表示被授权者可以继续往下授权CASCADE表示回收权限时把连锁授予的权限一并收回这两个词方向相反考选择题时经常成对出现。3.4 第十一章数据库设计的四个阶段怎么对应到题干数据库设计这一章的价值在于它给了你一套「看到题干就知道该写什么」的映射。四个阶段是需求分析、概念结构设计、逻辑结构设计、物理结构设计后面还有实施和运行维护。落到答题上题干给一堆业务描述和单据让你画图那是概念设计产出 E-R 图题干给 E-R 图让你转关系模式那是逻辑设计规则是「一个实体一张表、一个 1:n 联系把 1 端主键塞进 n 端、一个 m:n 联系单独建表」题干问「为某查询建什么索引」那是物理设计。很多人在这里丢分不是不会是把阶段名和产出物对错了位。E-R 转关系模式的三条规则我建议直接背下来当模板用1:1 联系可以把任一端的主键放进另一端也可以单独建表1:n 联系把 1 端的主键作为外键放进 n 端不单独建表m:n 联系必须单独建一张表主键是两个参与实体的主键组合转换完成后再回看一遍范式如果转出来的表存在非主属性对组合键的部分依赖说明该拆这一步是「逻辑设计 规范化」的合并考法也是下午题里区分度最高的一问。4. 计算题硬骨头四类公式的推导、参数代入与自查脚本4.1 流水线建立时间为什么是 m×t0 而不是 t0资料里写了吞吐率和建立时间两个指标也给了执行时间的算式但没解释为什么。流水线的执行时间要从「第一条指令走完全部 m 段」开始算第一条指令必须依次经过 m 个子过程每个子过程耗时 t0所以它单独占掉 m×t0此后每个周期流水线都能吐出一条结果剩下 n-1 条各占 t0。合起来就是 (m n - 1) × t0。这里有两个容易错的参数细节一是 t0 取所有子过程里最长的那个不是平均值因为流水线的节拍由最慢的一段决定二是如果各段耗时不等建立时间仍然是各段之和但周期取最长段这时候公式要分开算。吞吐率是 n 除以总时间单位是「条/时间单位」不是「条/周期」。我一般会用一个小脚本把这几个量一次算出来避免手算时把 m 和 n 代反def pipeline(n, m, t0): n: 指令条数, m: 子过程数, t0: 最长子过程耗时 build m * t0 # 建立时间第一条指令走完全部 m 段 total build (n - 1) * t0 # 后续每条指令只需一个 t0 return {建立时间: build, 总时间: total, 吞吐率: n / total} print(pipeline(n100, m5, t02)) # {建立时间: 10, 总时间: 208, 吞吐率: 0.4807...}参数说明n是题干里的指令条数m是流水段数t0是单段耗时。返回值里的「总时间」就是标准答案要的完成时间「吞吐率」注意单位要和题干对齐有的题要求换算成「条/秒」那就要看 t0 的单位是纳秒还是微秒。4.2 Cache 平均周期与加速比命中率乘错一次全盘皆错Cache 这一块的公式只有一个但错法有好几种。平均访问周期 t3 h × t1 (1 - h) × t2其中 h 是命中率t1 是 Cache 周期t2 是主存周期。最常见的手误是把 h 乘到 t2 上写出来的数看着也像那么回事但方向完全反了——命中率越高平均周期应该越接近 t1。加速比 r t2 / t3含义是「用了 Cache 之后比不用快多少倍」。注意分母是 t3 不是 t1用 t1 算出来的数字会大得离谱一眼就能看出不对但如果题干给的是「不使用 Cache 时的周期」就老老实实按 t2/t3 走。def cache_avg(hit, t1, t2): hit: 命中率, t1: Cache 周期, t2: 主存周期 t3 hit * t1 (1 - hit) * t2 return {平均周期: t3, 加速比: t2 / t3} print(cache_avg(hit0.95, t12, t220)) # {平均周期: 2.9, 加速比: 6.896...}代入这组参数可以直观看到命中率 95% 时平均周期被拉到接近 Cache 周期加速比接近 7 倍。如果题干把命中率改成 0.8平均周期会跳到 5.6 左右加速比掉到 3.5 上下——这个数量级的变化可以当作自查算出来的加速比如果在 1 附近基本可以确定公式代错了。4.3 磁盘容量与传输率格式化与非格式化差在哪磁盘这一块的公式在资料里列了五六条但真正的分水岭只有一个格式化容量和非格式化容量算的不是一回事。格式化容量 每道扇区数 × 扇区容量 × 总磁道数。这条用的是「扇区」这个已经被划分好的单位算出来的是操作系统能用的容量。非格式化容量 位密度 × π × 最内圈直径 × 总磁道数。这条用的是位密度和最内圈周长算出来的是磁介质理论上能记录的位数。为什么取最内圈因为每道的位密度不同但设计上保证每道容量相同最内圈周长最短、位密度最大用它算出来的就是每道的实际位数。总磁道数 (外半径 - 内半径) × 道密度 × 记录面数。记录面数这一项有个坑n 个双面盘片的有效记录面是 2n - 2因为最上面和最下面各有一面是保护面。题干如果说「共有 4 个双面盘片」记录面数要按 6 算不是 8。平均数据传输率格式化 每道扇区数 × 扇区容量 × 转速注意转速要换算成「转/秒」题干给的是「转/分」就必须除以 60。存取时间 寻道时间 等待时间等待时间的平均值取旋转半周的时间也就是 (60 / 转速) / 2 秒。def disk_capacity(tracks, sectors_per_track, sector_size): 格式化容量sector_size 单位字节 return tracks * sectors_per_track * sector_size def transfer_rate(sectors_per_track, sector_size, rpm): 格式化平均数据传输率rpm 为转/分 return sectors_per_track * sector_size * (rpm / 60) print(disk_capacity(tracks1000, sectors_per_track64, sector_size512)) # 32768000 print(transfer_rate(sectors_per_track64, sector_size512, rpm7200)) # 39321600两个函数的返回值单位都是字节或字节/秒题干如果要求 KB 或 MB记得按 1024 换算。这类题最怕单位混用我习惯在草稿纸上先把所有参数的单位统一标一遍再代公式。4.4 可靠性与海明码串并联叠加和校验位下界可靠性部分串联系统 R R1 × R2 × … × Rn失效率直接相加并联系统 R 1 - (1-R1)(1-R2)…(1-Rn)失效率的算法要复杂一些考试一般只考可靠度。串联越串越不可靠并联越并越可靠这个方向感比公式本身更重要——题干说「为了提高可靠性增加冗余部件」那就是并联说「系统由若干子系统串联组成」直接乘。平均无故障时间 MTBF 1/λ可用性 A MTBF / (MTBF MTTR)其中 MTTR 是平均修复时间。这里 λ 是失效率单位是「次/时间单位」题目如果给的是「每 1000 小时失效 2 次」λ 就是 0.002。def series(*rs): r 1.0 for x in rs: r * x return r def parallel(*rs): q 1.0 for x in rs: q * (1 - x) return 1 - q print(series(0.9, 0.9, 0.9)) # 0.729 print(parallel(0.9, 0.9, 0.9)) # 0.999这组对比很能说明问题三个 0.9 的部件串联只有 0.729并联能到 0.999。考试里经常让你算「至少需要几个并联部件才能达到某个可靠度」这时候就要解不等式用脚本反推比手算稳。海明码只需要记一个不等式2^r ≥ k r 1其中 k 是信息位数r 是校验位数求满足条件的最小 r。比如信息位 8 位r 从 1 开始试r4 时 16 ≥ 13 成立所以校验位是 4 位。CRC 那块只考模二除法记住「异或不进位」这一个规则就够。5. 排查与避坑用这份资料最容易翻车的五个地方5.1 现象条目背得很熟题干一变形就不会原因资料的每一条都是结论式短句比如「页式页表硬件少、查表速度快、主存零头少分页无逻辑性不利于存储保护」它只给了结论没给对比的另一半。你背下来的是结论不是判断依据一旦题干换成「某系统需要支持动态增长的分段应选哪种存储管理方式」就没有可用的推理链。解决每背一条对比型结论强制自己补一句「因为……」。页式之所以零头少是因为页大小固定、按页分配之所以不利于存储保护是因为一页之内可能混有不同逻辑模块的数据。补完这一句题干怎么变形都能推回来。5.2 现象磁盘传输率算出来的数比答案大了十倍原因转速单位没换算。资料里的公式写的是「盘片转速」没强调单位而题干习惯给「7200 转/分」公式里需要的却是「转/秒」。差 60 倍的话不会只大十倍但如果同时把扇区容量按位算成按字节算两个错误叠在一起结果会落在一个「看起来挺像」的区间里最难发现。解决动笔前先把所有参数的单位统一写在一行转速、容量、时间三类各标一次。我的习惯是全部换成「秒、字节」换算完再代公式这样即使算错也只错一处。5.3 现象SQL 大题里 HAVING 写在了 WHERE 的位置原因书写顺序和执行顺序不一致。写的时候 SELECT 在最前读的时候脑子跟着书写顺序走就会把聚合条件塞进 WHERE。而 WHERE 阶段分组还没发生聚合函数根本没有值可用。解决写完任何带 GROUP BY 的语句按「FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY」的顺序从下往上念一遍念到 HAVING 时确认它后面跟的是聚合条件。这个动作做十次就成肌肉记忆了。5.4 现象范式判断凭感觉2NF 和 3NF 反复横跳原因没有先确定候选键就开始判断。范式的每一条定义都是相对候选键说的候选键找错了后面全错。尤其是多属性候选键的表部分依赖和传递依赖很容易看混。解决强制按「列候选键 → 分主非主属性 → 查部分依赖 → 查传递依赖」四步走每步在草稿纸上写出来。部分依赖是「组合键的一部分就能决定某非主属性」传递依赖是「非主属性决定非主属性」两句话分开念不要合并成「依赖关系有问题」这种模糊判断。5.5 现象前六章读完回头做第七、八章的题全错原因章节顺序是按教材排的前六章是硬件、数据结构、操作系统、程序设计、网络、多媒体跟数据库主线没有直接的知识承接关系。你花了两周读完前六章第七、八章反而是从零开始前面的时间没有形成复利。解决把阅读顺序改成第七、八、九、十一章优先前六章穿插着读每天主线两小时、副线一小时。这样做的直接好处是读到第八章范式的时候脑子里还有第七章三级模式的框架在概念之间能挂钩而第一章的流水线公式是孤立知识点什么时候读都一样。6. 二刷验证一张自检表和一条错题闭环二刷的目不是再读一遍是判断「哪些条目已经从 ★ 降级成 ○」。我用一张很土的自检表每行对应一个高频考点只填「能复述 / 能推导 / 能默写」三档填不满的那一行就是下一轮的唯一任务考点达标标准自评三级模式两级映像能说出改哪层、哪层不受影响能复述候选键与范式拿到一张表 3 分钟内定到 3NF能推导SQL 建表约束不看资料写出主键、外键、CHECK能默写E-R 转关系模式三类联系各自的转换规则不出错能默写流水线执行时间能解释 m×t0 的来源能推导磁盘格式化容量记录面数会减 2转速会除 60能默写串并联可靠性能反推满足可靠度所需的并联数能推导知识产权保护期著作权、专利、商标分别记清能复述填完之后只做一件事把所有「能复述」但做不到「能默写」的行挑出来当天晚上合上资料默写一遍写不出来的第二天再来。这个循环比重新通读十五章有效得多因为它把「看着眼熟」和「真的会」这两件事强行分开了。错题闭环我是这么走的每道错题不抄题干只记三样东西——错在哪个考点、当时是怎么想的、正确路径的第一步是什么。比如流水线题错了记「考点建立时间当时的想法直接用 n×t0正确第一步先算第一条走完 m 段」。记到三十道左右你会发现错误高度集中在五六个考点上那五六个就是你的真实短板而不是整份资料。血泪经验是一刷的时候我曾经把整本资料的 ★ 条目抄了两遍抄完自我感觉极好结果做真题时该错的还是错。问题出在抄写这个动作只调用了手没有调用判断。后来我改成「合上书对着考点名说一遍完整推导卡住就翻回去看那一句」效率反而高了。从那以后我每次二刷都强制走一遍「先自检表、再默写、再回填」的流程不再用抄写来制造努力感。希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑