索引 / 001 ZH-TW
資料庫管理系統 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習題;每道題先自己做,再核對奇數題解答。