3.10 数据库系统章节回顾
回顾时要抓“触发器”
数据库系统章节不适合只背答案,因为很多题靠步骤:候选键求错,后面范式全错;自然连接同名列条件漏写,SQL 补空就错;E-R 联系方向看反,关系模式转换就错。
复习时要给每类题建立触发器:看到关键词,立刻知道第一步。
| 关键词 | 触发动作 |
|---|---|
| 分布式数据库、透明性 | 区分分片、位置、复制、局部映像等透明性 |
| 外模式/概念模式/内模式 | 对应三级模式和两级映像 |
| 实体、属性、联系 | 进入 E-R 图分析 |
| 1:n、m:n | 决定外键放哪或是否建联系表 |
| 自然连接、笛卡尔积 | 补同名属性相等条件 |
| 2NF/3NF/BCNF | 先求候选键 |
GROUP BY、HAVING | 判断分组列和分组后条件 |
GRANT、REVOKE | 授权与回收权限 |
COMMIT、ROLLBACK | 事务特性或读脏数据 |
| S 锁、X 锁 | 查锁兼容矩阵 |
各模块复盘要点
数据库基础
体系结构题重点区分集中式、C/S、B/S、分布式数据库。三级模式题重点看对象层次:用户看到的是外模式,全局逻辑结构是概念模式,物理存储相关是内模式。两级映像对应两类数据独立性:外模式/概念模式映像保护逻辑独立性,概念模式/内模式映像保护物理独立性。
数据仓库题重点区分 OLTP 与 OLAP:前者面向日常事务处理,后者面向分析决策;数据仓库通常是面向主题、集成、相对稳定、随时间变化的。
数据库设计
概念结构设计阶段画 E-R 图,逻辑结构设计阶段把 E-R 图转为关系模式。E-R 图题先找实体、属性、联系,再判联系类型。三元联系要固定另外两端判断当前端多重度。
关系模式转换记三条:1:1 可灵活归并,1:n 外键进多端,m:n 必须独立成联系关系;联系属性跟随联系所在关系。
关系代数与 SQL
关系代数的常见运算要能映射到 SQL:
| 关系代数 | SQL |
|---|---|
| 投影 | SELECT |
| 选择 | WHERE |
| 笛卡尔积 | FROM R, S |
| 自然连接 | FROM R, S WHERE 同名列相等 |
| 分组统计 | GROUP BY + 聚合函数 |
查询效率题通常倾向于先选择、先投影,减少中间结果。分组查询题要分清 WHERE 是分组前筛行,HAVING 是分组后筛组。
规范化理论
规范化题的固定顺序:
- 求候选键。
- 标主属性和非主属性。
- 看是否存在非主属性对候选键的部分依赖。
- 看是否存在非主属性对候选键的传递依赖。
- 检查每个决定因素是否包含候选键。
- 分解时再判无损连接和保持函数依赖。
只要没达到 3NF,冗余、插入异常、删除异常、修改异常通常仍会存在。提升范式的手段就是模式分解,但分解不能随意,要同时考虑能否还原和是否保留依赖。
并发控制
事务 ACID 用关键词判断:全做全不做是原子性,约束状态正确是一致性,事务互不可见是隔离性,提交后不丢是持久性。并发异常看读写序列:写写覆盖是丢失修改,两次读不同是不可重复读,读未提交且可能回滚是读脏数据。
锁题只要记住:S 锁兼容 S 锁,不兼容 X 锁;X 锁不兼容任何其他锁。
考前压缩清单
| 必须会 | 检查自己能否做到 |
|---|---|
| 三级模式 | 能说清外/概念/内模式与两级映像 |
| E-R 图 | 能从需求中找实体、属性、联系和多重度 |
| E-R 转关系 | 能处理 1:1、1:n、m:n 和联系属性 |
| 关系代数 | 能计算自然连接属性数,写出选择/投影/连接含义 |
| 候选键 | 能用闭包法或入度法求出候选键 |
| 范式 | 能判断 2NF、3NF、BCNF |
| 模式分解 | 能区分无损连接和保持依赖 |
| SQL | 能补 SELECT/FROM/WHERE/GROUP BY/HAVING |
| 并发 | 能区分 ACID、三类异常和 S/X 锁 |
复习时不要平均用力。先把规范化、关系代数、E-R 转关系模式打牢,再用较少时间扫概念和并发控制,性价比最高。
例题
自查要点
- 你的数据库错题主要集中在哪个模块?
- 范式题、SQL 题、并发题的第一步分别是什么?
- 哪些概念需要用反例区分?