01 / 导读
导读
引用
Ramakrishnan, R., & Gehrke, J. (2002). Database Management Systems (3rd ed.). McGraw-Hill.
章节概要
第三版共29章,分为七个部分,全书约1,100页。出版社强调其模块化的组织方式:各系统部分以概览章节(第8、12、16章)开头,各部分内的深入章节可以选读,因此同一本书既可用于偏应用的课程,也可用于偏系统的课程,或两者兼顾的混合课程。在出版社的章节图中,各部分依次是:基础(1–5)、应用(6–7)、三个系统部分(8–11、12–15、16–18)、第二个应用部分(19–21)以及高级专题(22–29);下面的标题说明每一组章节的主题。
第一部分,第1–5章:基础
第1章“数据库系统导论”通过与普通文件对比来说明为什么需要DBMS(数据暂存、并发访问、崩溃恢复、安全)。第2章“数据库设计导论”用实体–联系模型讲概念设计,包括键约束、参与约束和ISA约束。第3章“关系模型”把关系定义为实例加模式,并引入完整性约束。第4章“关系代数与关系演算”介绍形式化查询语言,其中代数是查询计划内部使用的表示。第5章“SQL:查询、约束、触发器”以水手和预订为贯穿示例讲解SQL,包括NULL值、完整性约束和触发器。
第二部分,第6–7章:应用
第6章“数据库应用开发”涵盖嵌入式SQL与动态SQL、游标、JDBC、SQLJ和存储过程。第7章“互联网应用”涵盖URI与HTTP、HTML与XML、三层架构、表单、Servlet、JavaServer Pages,以及Web应用中的状态保持。
第三部分,第8–11章:存储与索引
第8章“存储与索引概览”介绍数据项,并把索引分为聚簇与非聚簇、主索引与辅助索引、稠密与稀疏。第9章“数据存储:磁盘与文件”讲磁盘代价和缓冲区管理器。第10章“树形索引”和第11章“散列索引”涵盖树索引(包括批量装载)以及静态散列、可扩展散列和线性散列。
第四部分,第12–15章:查询求值
第12章“查询求值概览”说明查询如何变成算子树,以及优化为何重要。第13章“外部排序”讲外部归并排序。第14章“关系算子的求值”讲连接及其他算子的算法。第15章“典型的查询优化器”讲计划枚举(左深计划)和代价估计。
第五部分,第16–18章:事务管理
第16章“事务管理概览”介绍事务和预写式日志。第17章“并发控制”涵盖加锁、可串行化、死锁处理、多粒度锁与索引锁,以及乐观方法和时间戳方法。第18章“崩溃恢复”涵盖检查点,以及分析、重做、撤销三个阶段的恢复。
第六部分,第19–21章:数据库设计与调优
第19章“模式精化与范式”讲函数依赖和规范化。第20章“物理数据库设计与调优”涵盖聚簇、概念模式的调优和反规范化。第21章“安全与授权”涵盖保密性、完整性和可用性,自主访问控制与强制访问控制,以及统计数据库。
第七部分,第22–29章:高级专题
第22章,并行与分布式数据库;第23章,数据仓库与决策支持(含视图);第24章,对象数据库系统;第25章,演绎数据库;第26章,数据挖掘;第27章,信息检索与XML数据管理(布尔文本检索、向量空间模型、网络搜索引擎、半结构化数据与XQuery);第28章,空间数据库;第29章,延伸阅读。
核心概念
第一部分:基础
- 实体–联系模型与关系模型:概念设计及其向关系的映射。
- 关系代数与SQL:形式化和实用的查询语言。
第二至四部分:应用、存储与查询求值
- 嵌入式SQL、JDBC与三层架构:把程序和Web应用连接到数据库。
- 索引:B树类和散列类结构,以及聚簇与非聚簇之分。
- 查询计划与优化:算子树、连接算法和代价估计。
第五至六部分:事务与设计
- 并发控制与恢复:通过加锁实现可串行化执行,通过预写式日志实现崩溃恢复。
- 范式与调优:由函数依赖和工作负载指导的模式精化。
评析
优点
- 组织灵活。 出版社的模块化分部,加上各部分开头的概览章节,使教师可以选择偏应用、偏系统或混合的路线。概览章节在细节展开之前先对各系统部分做总结。
- 应用与内部机制兼顾。 同一本书既涵盖应用开发(JDBC、XML、三层架构),又涵盖存储、索引、查询求值、事务与恢复的内部机制。
- 免费配套材料。 作者网站提供各章的讲课幻灯片、直到第21章为止的奇数题解答、SQL习题的示例表和脚本,以及Minibase教学用DBMS。
- 高级专题范围广。 第七部分增加了并行与分布式数据库、数据仓库、对象数据库、演绎数据库、数据挖掘、信息检索、XML和空间数据。
局限
- 技术栈已显陈旧。 应用各章及配套材料与21世纪初的环境绑定:SQL:1999、JDBC、SQLJ、Servlet与JavaServer Pages、Apache Tomcat 4以及当时的数据库产品。概念仍然适用,但工具与当前实践不符。
- 篇幅。 约1,100页、29章,超出一门课的用量;本书期望读者或教师自行选择。
- 解答不完整。 免费解答只覆盖直到第21章的奇数题;完整解答仅限教师。
在课程中的定位
在本课程书单中,Ramakrishnan 与 Gehrke 是主要的通用数据库教材之一。Michael Hernandez 的 Database Design for Mere Mortals 和 Coronel 与 Morris 的 Database Systems: Design, Implementation, and Management 是更平缓、侧重设计的入门读物;Silberschatz、Korth 与 Sudarshan 的 Database System Concepts 以及 Elmasri 与 Navathe 的 Fundamentals of Database Systems 是最接近的同类综合教材,涵盖建模、SQL、查询处理、事务和设计理论。Gray 与 Reuter 的 Transaction Processing 对第16–18章中的加锁、日志和恢复内容讲得深入得多。
如果希望所用教材的结构允许你走应用路线或系统路线,并设有专门的存储与索引、查询求值和事务各部分,可以选择 Ramakrishnan 与 Gehrke。
如何使用本书
本书适合会编程、了解基本数据结构的计算机专业本科生和低年级研究生。据出版社的课程指南,偏系统的路线需要熟练掌握C或C++编程。
建议的学习安排:
- 所有读者的核心: 第1–5章(建模、关系模型、SQL),然后是第19章(规范化)。
- 应用路线: 第6、7章,然后是第20章(调优)和第21章(安全)。
- 系统路线: 先读概览章节第8、12、16章,再依次读各部分的深入章节:索引(9–11)、查询求值(13–15)、并发控制与恢复(17–18)。
- 高级专题: 按兴趣从第22–28章中选择。
- 练习: 把提供的示例表装入真实系统,完成第5章的SQL习题;每道题先自己做,再核对奇数题解答。
