數(shù)據(jù)庫系統(tǒng)概念(原書第7版)
定 價:149 元
- 作者:[Abraham,Silberschatz]亞伯拉罕·西爾伯沙茨 著,楊冬青 李紅燕 張金波等譯 譯
- 出版時間:2021/6/1
- ISBN:9787111681816
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP311.13
- 頁碼:820
- 紙張:膠版紙
- 版次:1
- 開本:16開
《數(shù)據(jù)庫系統(tǒng)概念》是數(shù)據(jù)庫系統(tǒng)方面的經典教材之一,其內容由淺入深,既包含數(shù)據(jù)庫系統(tǒng)基本概念,又反映數(shù)據(jù)庫技術新進展。它被國際上許多大學所采用,包括斯坦福大學、耶魯大學、得克薩斯大學、康奈爾大學、伊利諾伊大學等。
數(shù)據(jù)庫管理已經從一種專門的計算機應用發(fā)展為幾乎所有企業(yè)中的一個核心成分,因此,有關數(shù)據(jù)庫系統(tǒng)的知識已成為計算機科學教育中必不可少的部分。在本書中,我們講述數(shù)據(jù)庫管理的基本概念,這些概念包括數(shù)據(jù)庫設計、數(shù)據(jù)庫語言、數(shù)據(jù)庫系統(tǒng)實現(xiàn)等多個方面。
本書可作為三年級或四年級本科生數(shù)據(jù)庫入門課程的教科書,也可作為一年級研究生的教科書。除了涵蓋入門課程的基本內容外,本書還包括可作為課程補充材料或作為高級課程介紹性材料的高級內容。
我們僅要求讀者熟悉基本的數(shù)據(jù)結構、計算機組成和一種高級程序設計語言,例如Java、C、C++或Python。概念都以直觀的方式加以描述,其中的許多概念基于我們大學運行的例子加以闡釋。本書中包括重要的理論結果,但省略了形式化證明,取而代之的是用圖表和例子來說明為什么結論是正確的。對于形式化描述和研究結果的證明,讀者可以參見參考文獻中列出的研究論文和高級教材。
本書中包括的基本概念和算法通;诋斀裆逃没蛟囼炐缘臄(shù)據(jù)庫系統(tǒng)中采用的概念和算法。我們的目標是在通用環(huán)境下描述這些概念和算法,沒有與某個特定的數(shù)據(jù)庫系統(tǒng)綁定,雖然在恰當?shù)臅r候我們確實提供了對某些特定系統(tǒng)的引用。
在第7版中,我們保持了前面版本的總體風格,同時對內容和結構進行了更新來反映數(shù)據(jù)庫設計、管理和使用的方式所發(fā)生的變化。其中一個重要的變化是“大數(shù)據(jù)”系統(tǒng)的廣泛應用。我們還考慮了數(shù)據(jù)庫概念在教學方面的發(fā)展趨勢,并在適當?shù)牡胤阶龀隽送苿舆@些趨勢的修改。
本版本中最值得注意的變化如下:
廣泛涵蓋了大數(shù)據(jù)系統(tǒng)的內容,既從用戶的角度介紹(第10章),也從系統(tǒng)內部的角度介紹(第20~23章),與第6版相比有大量的內容擴充和改進。
增加了新的一章“區(qū)塊鏈數(shù)據(jù)庫”(第26章),介紹區(qū)塊鏈技術及其在企業(yè)應用中日益增長的作用。這一章的一個重要焦點是區(qū)塊鏈系統(tǒng)與數(shù)據(jù)庫系統(tǒng)之間的交互。
對涉及數(shù)據(jù)庫內部的所有各章(第12~19章)進行了修改,以融入固態(tài)硬盤、主存數(shù)據(jù)庫、多核系統(tǒng)和列存儲等當代技術。
對于使用JSON、RDF和SPARQL進行半結構化數(shù)據(jù)管理做了更多的描述(8.1節(jié))。
更新了對于時態(tài)數(shù)據(jù)(7.10節(jié))、數(shù)據(jù)分析(第11章)和諸如寫優(yōu)化的索引等高級索引技術(14.8節(jié)和24.2節(jié))的描述。
為更好地支持含有實操部分的課程(對于任何數(shù)據(jù)庫課程,這都是我們強烈推薦的方式),對一些章節(jié)進行了重新組織和更新,包括使用當代的應用開發(fā)工具和大數(shù)據(jù)系統(tǒng),如Apache Hadoop和Spark。
所有更新源于我們收到的許多意見和建議,這些意見和建議來自第6版的讀者以及我們在耶魯大學、理海大學、印度理工學院孟買校區(qū)的學生,也源于我們自己對數(shù)據(jù)庫技術發(fā)展的觀察和分析。
本書的內容
除第1章外,本書共十一部分,具體如下:
引言(第1章)。第1章對數(shù)據(jù)庫系統(tǒng)的性質和目標進行一般性綜述。我們解釋了數(shù)據(jù)庫系統(tǒng)的概念是如何發(fā)展的,各數(shù)據(jù)庫系統(tǒng)的共同特性是什么,數(shù)據(jù)庫系統(tǒng)能為用戶做什么,以及數(shù)據(jù)庫系統(tǒng)如何與操作系統(tǒng)交互。我們還引入了一個數(shù)據(jù)庫應用的例子:一個包括多個系、教師、學生和課程的大學。這個應用作為貫穿全書的運行實例。這一章本質上是激勵性、歷史性和解釋性的。
第一部分:關系語言(第2~5章)。第2章介紹數(shù)據(jù)的關系模型,包括關系數(shù)據(jù)庫的結構、數(shù)據(jù)庫模式、碼、模式圖、關系查詢語言、關系運算和關系代數(shù)等基本概念。第3~5章主要介紹最具影響力的面向用戶的關系語言:SQL。對于一個設計完成的模式,這部分描述了查詢、修改、插入和刪除等數(shù)據(jù)操作。雖然這里詳細講述了數(shù)據(jù)定義的語法,但關于模式設計的問題將推遲到第二部分講述。
第二部分:數(shù)據(jù)庫設計(第6~7章)。第6章概要介紹數(shù)據(jù)庫設計過程并詳細描述實體-聯(lián)系數(shù)據(jù)模型。實體-聯(lián)系模型為數(shù)據(jù)庫設計問題以及在數(shù)據(jù)模型的約束下捕獲現(xiàn)實應用的語義時所遇到的問題提供了一個高層視圖。UML類圖表示也在這一章中講述。第7章介紹關系數(shù)據(jù)庫設計。這一章講述了函數(shù)依賴和規(guī)范化的理論,重點強調了提出各種范式的動機,以及它們的直觀含義。這一章以關系設計的概覽開始,依賴于對函數(shù)依賴的邏輯蘊涵的直觀理解。這使得規(guī)范化的概念可以在全面討論函數(shù)依賴理論之前先做介紹,而函數(shù)依賴理論將在本章稍后部分討論。授課教師可以只選用這些直觀描述的內容,而不會丟失連貫性。不過,完整地講授這一章將有利于學生對規(guī)范化概念形成較好的理解,從而引導他們去學習函數(shù)依賴理論中一些較艱深的概念。這一章的最后一節(jié)講述時態(tài)數(shù)據(jù)建模。
第三部分:應用程序設計和開發(fā)(第8~9章)。第8章討論幾種對于應用程序設計和開發(fā)非常重要的復雜數(shù)據(jù)類型,包括半結構化數(shù)據(jù)、基于對象的數(shù)據(jù)、文本數(shù)據(jù)和空間數(shù)據(jù)。雖然XML在數(shù)據(jù)庫環(huán)境中的流行度正在消減,但我們還是保留了對XML的介紹,同時增加了對JSON、RDF和SPARQL的介紹。第9章討論用于構建交互式的基于Web的數(shù)據(jù)庫應用和移動數(shù)據(jù)庫應用的工具與技術。這一章對服務器端和客戶端都進行了詳細介紹,所包括的主題有: Java服務器端程序(servlet)、JSP、Djang
出版者的話
譯者序
前言
關于作者
第1章 引言1
1.1 數(shù)據(jù)庫系統(tǒng)應用1
1.2 數(shù)據(jù)庫系統(tǒng)的目標3
1.3 數(shù)據(jù)視圖6
1.3.1 數(shù)據(jù)模型6
1.3.2 關系數(shù)據(jù)模型6
1.3.3 數(shù)據(jù)抽象7
1.3.4 實例和模式8
1.4 數(shù)據(jù)庫語言9
1.4.1 數(shù)據(jù)定義語言9
1.4.2 SQL數(shù)據(jù)定義語言10
1.4.3 數(shù)據(jù)操縱語言10
1.4.4 SQL數(shù)據(jù)操縱語言11
1.4.5 從應用程序訪問數(shù)據(jù)庫11
1.5 數(shù)據(jù)庫設計12
1.6 數(shù)據(jù)庫引擎12
1.6.1 存儲管理器13
1.6.2 查詢處理器14
1.6.3 事務管理14
1.7 數(shù)據(jù)庫和應用體系結構15
1.8 數(shù)據(jù)庫用戶和管理員16
1.8.1 數(shù)據(jù)庫用戶和用戶界面16
1.8.2 數(shù)據(jù)庫管理員17
1.9 數(shù)據(jù)庫系統(tǒng)的歷史17
1.10 總結20
術語回顧21
實踐習題22
習題22
工具22
延伸閱讀23
參考文獻23
第一部分 關系語言
第2章 關系模型介紹26
2.1 關系數(shù)據(jù)庫的結構26
2.2 數(shù)據(jù)庫模式28
2.3 碼29
2.4 模式圖32
2.5 關系查詢語言32
2.6 關系代數(shù)33
2.6.1 選擇運算33
2.6.2 投影運算34
2.6.3 關系運算的復合34
2.6.4 笛卡兒積運算35
2.6.5 連接運算36
2.6.6 集合運算37
2.6.7 賦值運算38
2.6.8 更名運算39
2.6.9 等價查詢40
2.7 總結40
術語回顧41
實踐習題41
習題42
延伸閱讀43
參考文獻44
第3章 SQL介紹45
3.1 SQL查詢語言概覽45
3.2 SQL數(shù)據(jù)定義46
3.2.1 基本類型46
3.2.2 基本模式定義47
3.3 SQL查詢的基本結構49
3.3.1 單關系查詢49
3.3.2 多關系查詢51
3.4 附加的基本運算55
3.4.1 更名運算55
3.4.2 字符串運算56
3.4.3 select子句中的屬性說明57
3.4.4 排列元組的顯示次序 57
3.4.5 where子句謂詞58
3.5 集合運算58
3.5.1 并運算59
3.5.2 交運算60
3.5.3 差運算60
3.6 空值61
3.7 聚集函數(shù)62
3.7.1 基本聚集62
3.7.2 分組聚集63
3.7.3 having子句65
3.7.4 對空值和布爾值的聚集66
3.8 嵌套子查詢67
3.8.1 集合成員資格67
3.8.2 集合比較68
3.8.3 空關系測試69
3.8.4 重復元組存在性測試70
3.8.5 from子句中的子查詢71
3.8.6 with子句72
3.8.7 標量子查詢73
3.8.8 不帶from子句的標量73
3.9 數(shù)據(jù)庫的修改74
3.9.1 刪除75
3.9.2 插入76
3.9.3 更新77
3.10 總結78
術語回顧79
實踐習題79
習題81
工具83
延伸閱讀84
參考文獻84
第4章 中級SQL85
4.1 連接表達式85
4.1.1 自然連接85
4.1.2 連接條件88
4.1.3 外連接89
4.1.4 連接類型和條件92
4.2 視圖92
4.2.1 視圖定義93
4.2.2 在SQL查詢中使用視圖94
4.2.3 物化視圖95
4.2.4 視圖更新95
4.3 事務97
4.4 完整性約束98
4.4.1 單個關系上的約束99
4.4.2 非空約束99
4.4.3 唯一性約束100
4.4.4 check子句100
4.4.5 引用完整性100
4.4.6 給約束賦名102
4.4.7 事務中對完整性約束的違反103
4.4.8 復雜check條件與斷言103
4.5 SQL的數(shù)據(jù)類型與模式105
4.5.1 SQL中的日期和時間類型105
4.5.2 類型轉換和格式化函數(shù)105
4.5.3 缺省值106
4.5.4 大對象類型107
4.5.5 用戶自定義類型108
4.5.6 生成唯一碼值110
4.5.7 create table的擴展111
4.5.8 模式、目錄與環(huán)境111
4.6 SQL中的索引定義112
4.7 授權113
4.7.1 權限的授予與收回114
4.7.2 角色115
4.7.3 視圖的授權116
4.7.4 模式的授權117
4.7.5 權限的轉移117
4.7.6 權限的收回118
4.7.7 行級授權119
4.8 總結119
術語回顧120
實踐習題121
習題122
延伸閱讀123
參考文獻123
第5章 高級SQL125
5.1 使用程序設計語言訪問SQL125
5.1.1 JDBC126
5.1.2 從Python訪問數(shù)據(jù)庫132
5.1.3 ODBC132
5.1.4 嵌入式SQL134
5.2 函數(shù)和過程136
5.2.1 聲明及調用SQL函數(shù)和過程136
5.2.2 用于過程和函數(shù)的語言結構137
5.2.3 外部語言例程140
5.3 觸發(fā)器141
5.3.1 對觸發(fā)器的需求141
5.3.2 SQL中的觸發(fā)器141
5.3.3 何時不用觸發(fā)器144
5.4 遞歸查詢146
5.4.1 使用迭代的傳遞閉包146
5.4.2 SQL中的遞歸148
5.5 高級聚集特性149
5.5.1 排名150
5.5.2 分窗153
5.5.3 旋轉154
5.5.4 上卷和立方體155
5.6 總結158
術語回顧158
實踐習題158
習題160
工具161
延伸閱讀162
第二部分 數(shù)據(jù)庫設計
第6章 使用E-R模型的數(shù)據(jù)庫設計164
6.1 設計過程概覽164
6.1.1 設計階段164
6.1.2 設計