索引 / 001 ZH-CN
数据库管理系统 cover

计算机科学

计算机科学

数据库管理系统

Raghu Ramakrishnan; Johannes Gehrke

英文原名: Database Management Systems

介绍关系数据建模、SQL、查询处理、事务以及数据库系统架构的基础教材。

需要的基础: 建议具备编程、数据结构及文件或操作系统基础;SQL与关系建模将在书中展开,后续索引、并发控制和恢复章节需要较细致的系统推理。

难度等级
高级
学术层次
本科
数据库关系模型SQL模式设计查询处理事务数据系统

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习题;每道题先自己做,再核对奇数题解答。