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習題;每道題先自己做,再核對奇數題解答。
