先抓四块:模型、查询、事务、性能
数据库系统工程师可以先按四块建立框架:数据模型和设计、SQL查询、事务与并发、存储与性能。ER图、多对多、主键外键、范式属于设计;SELECT、JOIN、GROUP BY、HAVING属于查询;ACID、隔离级别、锁、日志属于事务;索引、执行计划、备份恢复属于性能和运维。
冲刺期不要把这些块割裂。比如一个慢查询题,可能同时涉及索引、JOIN条件、WHERE函数、统计信息和执行计划;一个设计题,可能同时涉及实体、联系、多重度、外键和范式。
| 模块 | 高频内容 | 题目常见陷阱 |
|---|---|---|
| 数据建模 | ER图、实体、联系、多重度、关系模式 | 多对多没有拆表,外键放错边 |
| 范式和键 | 候选键、主键、外键、函数依赖、3NF | 把唯一约束和主键完全等同 |
| SQL查询 | WHERE/HAVING、JOIN、GROUP BY | 过滤时机和连接条件混淆 |
| 事务并发 | ACID、隔离级别、脏读、不可重复读、幻读 | 现象和隔离级别对应错 |
| 性能恢复 | 索引、日志、备份恢复、执行计划 | 以为建索引一定提升所有查询 |
前30天:ER图和关系模式要先练会
前30天建议先练ER图和关系模式。数据库题很多都绕不开实体、属性、联系、多重度、主键、外键。尤其是多对多关系,通常要拆成一个中间关系;一对多关系,外键一般放在多的一方;一对一关系要结合参与约束和业务规则判断。
这类题不能只看答案。你要能解释为什么外键放在这里,为什么这个联系要单独建表,为什么某个属性不应该放在主表里。只会背结论,遇到业务换个说法就容易错。
做ER图转换题时的判断顺序
先找实体:学生、课程、订单、商品这类能独立存在的对象。
再看联系:报名、选课、下单、任职这类对象之间的关系。
判断多重度:一对一、一对多还是多对多。
最后转关系模式:确定主键、外键和是否需要中间表。
中间45天:SQL、范式和事务要用题目串起来
中间45天要把SQL、范式和事务用题目串起来。SQL题不要只背语法,要看数据从哪张表来、连接条件是什么、先过滤还是先分组。范式题不要只背第一范式、第二范式、第三范式,要看函数依赖和非主属性是否依赖于键。事务题不要只背ACID,要能区分脏读、不可重复读和幻读。
数据库题特别适合做对照表。比如WHERE和HAVING、主键和唯一约束、聚簇索引和非聚簇索引、redo log和undo log、脏读和幻读,都是高频易混点。
| 易混点 | 判断抓手 | 常见错误 |
|---|---|---|
| WHERE vs HAVING | WHERE分组前过滤,HAVING分组后过滤 | 把聚合条件写到WHERE |
| 主键 vs 唯一约束 | 主键标识元组,唯一约束保证不重复 | 认为唯一约束一定等于主键 |
| 脏读 vs 不可重复读 | 脏读读到未提交,不可重复读同一行前后变了 | 把所有并发现象都叫脏读 |
| 覆盖索引 vs 回表 | 索引包含查询所需列就可能避免回表 | 以为所有索引都会覆盖 |
| redo vs undo | redo用于重做已提交修改,undo用于回滚和一致性读 | 恢复方向混淆 |
最后25天:回到高频错题和设计表达
最后25天不要重新铺开所有数据库理论。更有效的是回到高频错题:ER图转换、范式判断、SQL聚合、事务隔离、索引失效、备份恢复。数据库题需要一定表达能力,尤其是设计题和分析题,不能只写一个名词。
比如问索引为什么失效,答案不能只写“没有用索引”。更像答案的写法是:查询条件对索引列使用函数、前导通配符、隐式类型转换或不符合联合索引最左前缀原则,导致优化器无法有效利用索引。
| 最后阶段重点 | 复盘方式 | 目标 |
|---|---|---|
| ER图 | 把实体、联系、多重度、主外键重新标一遍 | 减少设计题低级错误 |
| SQL | 看过滤、分组、连接、排序的执行逻辑 | 避免WHERE/HAVING和JOIN条件混乱 |
| 事务 | 按现象判断隔离级别 | 不把并发问题混成一类 |
| 索引 | 总结失效场景和适用场景 | 能解释为什么快或为什么慢 |
| 恢复 | 区分全量、增量、日志和检查点 | 能写清恢复顺序 |
题库训练要从“会选”升级到“会解释”
数据库系统工程师不适合只记答案字母。很多题真正考的是你能不能解释这个设计为什么合理、这个SQL为什么得不到预期结果、这个事务隔离级别为什么会出现某种现象。冲刺期做题,要逼自己说出判断依据。
本站适合看题目解析和专题拆解;如果要连续练章节题和错题回炉,可以配合书木兰软考题库使用,网址是 https://www.shumulan.com/。但不管用什么工具,复盘时都要从“我选了什么”升级到“我为什么这么选”。