索引 / 001 ZH-TW
Fundamentals of Database Systems(資料庫系統基礎) cover

電腦科學

電腦科學

Fundamentals of Database Systems(資料庫系統基礎)

Ramez Elmasri; Shamkant B. Navathe

英文原名: Fundamentals of Database Systems

一本完整的資料庫教科書,從概念模型與關聯式模型出發,經過 SQL 與設計理論,一路談到儲存結構、查詢處理、交易與較新的系統。第七版新增 NoSQL 資料庫與大數據技術的章節,同時保留作者對實體關係模型與擴充實體關係模型的詳細說明。

需要的基礎: 程式設計入門與資料結構、離散數學,並對計算機組織的基礎有些認識。

難度等級
中級
學術層次
大學部
databasesrelational modelsqldatabase designtransaction processing教科書

01 / 導讀

導讀

引用

Elmasri, R., & Navathe, S. B. (2016). Fundamentals of Database Systems (7th ed.). Pearson.

章節概要

第7版有12個部分共30章,另有5個附錄,約1240頁。Pearson 稱它是面向大學部三、四年級或研究生的一到兩學期資料庫課程的教材,同時也是一本參考書。用出版社的話說,重點是資料庫建模與設計的基礎、資料庫管理系統提供的語言和模型,以及資料庫的實作技術。Pearson 說,這一版新增了兩章,並增加了更多真實世界的問題。

第1部分,第1–2章:資料庫與資料庫使用者;資料庫系統概念與架構

引入部分,介紹什麼是資料庫、誰在使用它,然後講資料庫系統的概念與架構。

第2部分,第3–4章:使用實體關係(ER)模型進行資料建模;增強實體關係(EER)模型

概念建模排在關聯式模型之前,佔兩章:ER模型及其增強擴充。

第3部分,第5–9章:關聯式資料模型與關聯式資料庫限制;基本SQL;更多SQL:複雜查詢、觸發器、檢視與綱要修改;關聯代數與關聯演算;透過ER和EER到關聯式的對映進行關聯式資料庫設計

先講關聯式模型及其限制,接著是分兩章的SQL(基本SQL,然後是複雜查詢、觸發器、檢視與綱要修改),以及關聯代數與關聯演算。第9章把ER和EER綱要映射為關聯式設計,與第2部分首尾呼應。

第4部分,第10–11章:SQL程式設計技術導論;使用PHP的Web資料庫程式設計

兩章講如何編寫資料庫應用,後一章與一種具體的Web技術PHP繫結。

第5部分,第12–13章:物件與物件—關聯式資料庫;XML:可擴充標記語言

物件與物件—關聯式資料庫,以及XML。(Pearson 的目錄把第二個標題印成了「XLM」,應為筆誤。)

第6部分,第14–15章:函數相依與關聯式資料庫正規化基礎;關聯式資料庫設計演算法與其他相依

本書的設計理論排在程式設計和物件、XML模型之後:先是函數相依與正規化,然後是設計演算法和其他種類的相依。

第7部分,第16–17章:磁碟儲存、基本檔案結構、雜湊與現代儲存架構;檔案的索引結構與實體資料庫設計

實體層:儲存裝置、檔案與雜湊,然後是索引結構和實體設計。

第8部分,第18–19章:查詢處理策略;查詢最佳化

查詢如何執行,以及如何選擇執行策略。

第9部分,第20–22章:交易處理概念與理論導論;併發控制技術;資料庫復原技術

交易、併發控制和復原,連續三章。

第10部分,第23–25章:分散式資料庫概念;NOSQL資料庫與大資料儲存系統;基於MapReduce和Hadoop的大資料技術

先是分散式,然後是NOSQL系統與大資料儲存,再是MapReduce和Hadoop。Pearson 說這一版有兩個新章,但沒有說明是哪兩章。

第11部分,第26–29章:增強資料模型(主動、時態、空間、多媒體和演繹資料庫);資訊檢索與Web搜尋導論;資料探勘概念;資料倉儲與OLAP概述

講更多模型與應用的四章。它們的標題用了「導論」「概念」和「概述」這樣的詞,說明講解是入門層次的。

第12部分,第30章:資料庫安全

一章講安全,為正文收尾。

附錄A–E

ER模型的其他圖示表示法,磁碟參數,QBE語言概述,以及階層式資料模型和網狀資料模型的概述。

核心概念

第1–3部分:建模與關聯式模型

  • ER與EER建模:先於關聯式設計的概念設計。
  • 關聯式限制、SQL與關聯代數:關聯式模型及其語言。
  • ER到關聯式的對映:把概念綱要轉換為表。

第4–6部分:應用、其他模型與設計理論

  • 函數相依與正規化:良好關聯式設計的理論。
  • 物件—關聯式資料與XML:超出普通表格的模型。
  • SQL程式設計技術:把SQL嵌入應用,Web方面使用PHP。

第7–12部分:實作與較新的系統

  • 檔案結構、雜湊與索引;查詢處理與最佳化。
  • 交易、併發控制與復原。
  • 分散式資料庫、NOSQL、MapReduce與Hadoop;資料探勘、資料倉儲與OLAP;資料庫安全。

評析

優點

  • 概念建模有深度。 ER與EER佔兩章,向關聯綱要的映射有專門一章,附錄還概述了ER的其他表示法。相比之下,書單中另一本綜合性教材用一章講E-R設計。
  • 從設計到內部實作的一條完整路徑。 從建模、關聯式模型、設計理論、儲存與索引、查詢處理、交易一直講到分散式,所以可以作為兩學期課程的唯一參考書。
  • 涵蓋較新的系統。 Pearson 強調了兩個新章,第10部分涉及分散式資料庫、NOSQL系統和基於MapReduce的大資料技術。
  • 教材與參考書合一。 出版社把它同時定位為這兩種用途,五個附錄把較舊或較專門的內容(QBE、階層式與網狀模型、磁碟參數)放在正文之外。

侷限

  • 篇幅。 30章、超過1200頁,超出一到兩個學期的容量,教師必須取捨。
  • 與具體技術繫結的章節。 第11章與PHP繫結,第12–13章講物件—關聯式模型和XML。使用其他技術堆疊的課程要換成自己的材料。
  • 後面的章節偏概覽。 第26–29章的標題(「……導論」「概念」「……概述」)表明這些主題是入門介紹,而不是完整的論述。
  • 無障礙提示。 Pearson 關於電子版的無障礙說明稱,影像可能沒有得到完整描述,這對使用螢幕閱讀器的讀者很重要。

在課程中的定位

Fundamentals of Database Systems 是書單中兩本綜合性資料庫教材之一。Silberschatz、Korth 和 Sudarshan 的 Database System Concepts 涵蓋大體相同的範圍,SQL有三章(本書為兩章),並且有更大一塊並行與分散式系統的內容;Elmasri 和 Navathe 則更重視概念建模。兩本都可以作主教材,選擇可能取決於課程是從設計(本書)入手,還是從SQL入手。

Hernandez 的 Database Design for Mere Mortals 是一套通俗的設計方法,適合覺得第2部分和第6部分困難的讀者。Ramakrishnan 和 Gehrke 的 Database Management Systems 是範圍相近的基礎性指南,Coronel 和 Morris 的 Database Systems 面向商業導向的設計、實作與管理。對於想深入瞭解交易實作的讀者,Gray 和 Reuter 的 Transaction Processing 比第20–22章走得遠得多。

如何使用本書

Pearson 說明,讀者應熟悉基本的程式設計和資料結構概念,並對電腦組織的基礎有所接觸。本書適合大學部三、四年級學生和研究生。

一個實用的讀法:

  • 第一門課的核心: 第1至3部分(第1–9章),然後讀第6部分(第14–15章)學習設計理論。學SQL的章節(第6章和第7章)時,要開啟一個真實的資料庫。
  • 實作: 第7至9部分(第16–22章),用於第二學期或偏實作的課程。
  • 選讀: 第10章和第11章講應用程式設計,第10部分講分散式與NOSQL系統,第26–30章作為簡短的概覽。

用章末習題練習建模,並在閱讀映射一章之前,先自己畫出ER圖。