數(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)方面的經(jīng)典教材之一,其內(nèi)容由淺入深,既包含數(shù)據(jù)庫系統(tǒng)基本概念,又反映數(shù)據(jù)庫技術(shù)新進展。它被國際上許多大學(xué)所采用,包括斯坦福大學(xué)、耶魯大學(xué)、得克薩斯大學(xué)、康奈爾大學(xué)、伊利諾伊大學(xué)等。
數(shù)據(jù)庫管理已經(jīng)從一種專門的計算機應(yīng)用發(fā)展為幾乎所有企業(yè)中的一個核心成分,因此,有關(guān)數(shù)據(jù)庫系統(tǒng)的知識已成為計算機科學(xué)教育中必不可少的部分。在本書中,我們講述數(shù)據(jù)庫管理的基本概念,這些概念包括數(shù)據(jù)庫設(shè)計、數(shù)據(jù)庫語言、數(shù)據(jù)庫系統(tǒng)實現(xiàn)等多個方面。
本書可作為三年級或四年級本科生數(shù)據(jù)庫入門課程的教科書,也可作為一年級研究生的教科書。除了涵蓋入門課程的基本內(nèi)容外,本書還包括可作為課程補充材料或作為高級課程介紹性材料的高級內(nèi)容。
我們僅要求讀者熟悉基本的數(shù)據(jù)結(jié)構(gòu)、計算機組成和一種高級程序設(shè)計語言,例如Java、C、C++或Python。概念都以直觀的方式加以描述,其中的許多概念基于我們大學(xué)運行的例子加以闡釋。本書中包括重要的理論結(jié)果,但省略了形式化證明,取而代之的是用圖表和例子來說明為什么結(jié)論是正確的。對于形式化描述和研究結(jié)果的證明,讀者可以參見參考文獻中列出的研究論文和高級教材。
本書中包括的基本概念和算法通常基于當(dāng)今商用或試驗性的數(shù)據(jù)庫系統(tǒng)中采用的概念和算法。我們的目標(biāo)是在通用環(huán)境下描述這些概念和算法,沒有與某個特定的數(shù)據(jù)庫系統(tǒng)綁定,雖然在恰當(dāng)?shù)臅r候我們確實提供了對某些特定系統(tǒng)的引用。
在第7版中,我們保持了前面版本的總體風(fēng)格,同時對內(nèi)容和結(jié)構(gòu)進行了更新來反映數(shù)據(jù)庫設(shè)計、管理和使用的方式所發(fā)生的變化。其中一個重要的變化是“大數(shù)據(jù)”系統(tǒng)的廣泛應(yīng)用。我們還考慮了數(shù)據(jù)庫概念在教學(xué)方面的發(fā)展趨勢,并在適當(dāng)?shù)牡胤阶龀隽送苿舆@些趨勢的修改。
本版本中最值得注意的變化如下:
廣泛涵蓋了大數(shù)據(jù)系統(tǒng)的內(nèi)容,既從用戶的角度介紹(第10章),也從系統(tǒng)內(nèi)部的角度介紹(第20~23章),與第6版相比有大量的內(nèi)容擴充和改進。
增加了新的一章“區(qū)塊鏈數(shù)據(jù)庫”(第26章),介紹區(qū)塊鏈技術(shù)及其在企業(yè)應(yīng)用中日益增長的作用。這一章的一個重要焦點是區(qū)塊鏈系統(tǒng)與數(shù)據(jù)庫系統(tǒng)之間的交互。
對涉及數(shù)據(jù)庫內(nèi)部的所有各章(第12~19章)進行了修改,以融入固態(tài)硬盤、主存數(shù)據(jù)庫、多核系統(tǒng)和列存儲等當(dāng)代技術(shù)。
對于使用JSON、RDF和SPARQL進行半結(jié)構(gòu)化數(shù)據(jù)管理做了更多的描述(8.1節(jié))。
更新了對于時態(tài)數(shù)據(jù)(7.10節(jié))、數(shù)據(jù)分析(第11章)和諸如寫優(yōu)化的索引等高級索引技術(shù)(14.8節(jié)和24.2節(jié))的描述。
為更好地支持含有實操部分的課程(對于任何數(shù)據(jù)庫課程,這都是我們強烈推薦的方式),對一些章節(jié)進行了重新組織和更新,包括使用當(dāng)代的應(yīng)用開發(fā)工具和大數(shù)據(jù)系統(tǒng),如Apache Hadoop和Spark。
所有更新源于我們收到的許多意見和建議,這些意見和建議來自第6版的讀者以及我們在耶魯大學(xué)、理海大學(xué)、印度理工學(xué)院孟買校區(qū)的學(xué)生,也源于我們自己對數(shù)據(jù)庫技術(shù)發(fā)展的觀察和分析。
本書的內(nèi)容
除第1章外,本書共十一部分,具體如下:
引言(第1章)。第1章對數(shù)據(jù)庫系統(tǒng)的性質(zhì)和目標(biāo)進行一般性綜述。我們解釋了數(shù)據(jù)庫系統(tǒng)的概念是如何發(fā)展的,各數(shù)據(jù)庫系統(tǒng)的共同特性是什么,數(shù)據(jù)庫系統(tǒng)能為用戶做什么,以及數(shù)據(jù)庫系統(tǒng)如何與操作系統(tǒng)交互。我們還引入了一個數(shù)據(jù)庫應(yīng)用的例子:一個包括多個系、教師、學(xué)生和課程的大學(xué)。這個應(yīng)用作為貫穿全書的運行實例。這一章本質(zhì)上是激勵性、歷史性和解釋性的。
第一部分:關(guān)系語言(第2~5章)。第2章介紹數(shù)據(jù)的關(guān)系模型,包括關(guān)系數(shù)據(jù)庫的結(jié)構(gòu)、數(shù)據(jù)庫模式、碼、模式圖、關(guān)系查詢語言、關(guān)系運算和關(guān)系代數(shù)等基本概念。第3~5章主要介紹最具影響力的面向用戶的關(guān)系語言:SQL。對于一個設(shè)計完成的模式,這部分描述了查詢、修改、插入和刪除等數(shù)據(jù)操作。雖然這里詳細(xì)講述了數(shù)據(jù)定義的語法,但關(guān)于模式設(shè)計的問題將推遲到第二部分講述。
第二部分:數(shù)據(jù)庫設(shè)計(第6~7章)。第6章概要介紹數(shù)據(jù)庫設(shè)計過程并詳細(xì)描述實體-聯(lián)系數(shù)據(jù)模型。實體-聯(lián)系模型為數(shù)據(jù)庫設(shè)計問題以及在數(shù)據(jù)模型的約束下捕獲現(xiàn)實應(yīng)用的語義時所遇到的問題提供了一個高層視圖。UML類圖表示也在這一章中講述。第7章介紹關(guān)系數(shù)據(jù)庫設(shè)計。這一章講述了函數(shù)依賴和規(guī)范化的理論,重點強調(diào)了提出各種范式的動機,以及它們的直觀含義。這一章以關(guān)系設(shè)計的概覽開始,依賴于對函數(shù)依賴的邏輯蘊涵的直觀理解。這使得規(guī)范化的概念可以在全面討論函數(shù)依賴?yán)碚撝跋茸鼋榻B,而函數(shù)依賴?yán)碚搶⒃诒菊律院蟛糠钟懻摗J谡n教師可以只選用這些直觀描述的內(nèi)容,而不會丟失連貫性。不過,完整地講授這一章將有利于學(xué)生對規(guī)范化概念形成較好的理解,從而引導(dǎo)他們?nèi)W(xué)習(xí)函數(shù)依賴?yán)碚撝幸恍┹^艱深的概念。這一章的最后一節(jié)講述時態(tài)數(shù)據(jù)建模。
第三部分:應(yīng)用程序設(shè)計和開發(fā)(第8~9章)。第8章討論幾種對于應(yīng)用程序設(shè)計和開發(fā)非常重要的復(fù)雜數(shù)據(jù)類型,包括半結(jié)構(gòu)化數(shù)據(jù)、基于對象的數(shù)據(jù)、文本數(shù)據(jù)和空間數(shù)據(jù)。雖然XML在數(shù)據(jù)庫環(huán)境中的流行度正在消減,但我們還是保留了對XML的介紹,同時增加了對JSON、RDF和SPARQL的介紹。第9章討論用于構(gòu)建交互式的基于Web的數(shù)據(jù)庫應(yīng)用和移動數(shù)據(jù)庫應(yīng)用的工具與技術(shù)。這一章對服務(wù)器端和客戶端都進行了詳細(xì)介紹,所包括的主題有: Java服務(wù)器端程序(servlet)、JSP、Djang
出版者的話
譯者序
前言
關(guān)于作者
第1章 引言1
1.1 數(shù)據(jù)庫系統(tǒng)應(yīng)用1
1.2 數(shù)據(jù)庫系統(tǒng)的目標(biāo)3
1.3 數(shù)據(jù)視圖6
1.3.1 數(shù)據(jù)模型6
1.3.2 關(guān)系數(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 從應(yīng)用程序訪問數(shù)據(jù)庫11
1.5 數(shù)據(jù)庫設(shè)計12
1.6 數(shù)據(jù)庫引擎12
1.6.1 存儲管理器13
1.6.2 查詢處理器14
1.6.3 事務(wù)管理14
1.7 數(shù)據(jù)庫和應(yīng)用體系結(jié)構(gòu)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 總結(jié)20
術(shù)語回顧21
實踐習(xí)題22
習(xí)題22
工具22
延伸閱讀23
參考文獻23
第一部分 關(guān)系語言
第2章 關(guān)系模型介紹26
2.1 關(guān)系數(shù)據(jù)庫的結(jié)構(gòu)26
2.2 數(shù)據(jù)庫模式28
2.3 碼29
2.4 模式圖32
2.5 關(guān)系查詢語言32
2.6 關(guān)系代數(shù)33
2.6.1 選擇運算33
2.6.2 投影運算34
2.6.3 關(guān)系運算的復(fù)合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 總結(jié)40
術(shù)語回顧41
實踐習(xí)題41
習(xí)題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查詢的基本結(jié)構(gòu)49
3.3.1 單關(guān)系查詢49
3.3.2 多關(guān)系查詢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 空關(guān)系測試69
3.8.4 重復(fù)元組存在性測試70
3.8.5 from子句中的子查詢71
3.8.6 with子句72
3.8.7 標(biāo)量子查詢73
3.8.8 不帶from子句的標(biāo)量73
3.9 數(shù)據(jù)庫的修改74
3.9.1 刪除75
3.9.2 插入76
3.9.3 更新77
3.10 總結(jié)78
術(shù)語回顧79
實踐習(xí)題79
習(xí)題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 事務(wù)97
4.4 完整性約束98
4.4.1 單個關(guān)系上的約束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 事務(wù)中對完整性約束的違反103
4.4.8 復(fù)雜check條件與斷言103
4.5 SQL的數(shù)據(jù)類型與模式105
4.5.1 SQL中的日期和時間類型105
4.5.2 類型轉(zhuǎn)換和格式化函數(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 授權(quán)113
4.7.1 權(quán)限的授予與收回114
4.7.2 角色115
4.7.3 視圖的授權(quán)116
4.7.4 模式的授權(quán)117
4.7.5 權(quán)限的轉(zhuǎn)移117
4.7.6 權(quán)限的收回118
4.7.7 行級授權(quán)119
4.8 總結(jié)119
術(shù)語回顧120
實踐習(xí)題121
習(xí)題122
延伸閱讀123
參考文獻123
第5章 高級SQL125
5.1 使用程序設(shè)計語言訪問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 聲明及調(diào)用SQL函數(shù)和過程136
5.2.2 用于過程和函數(shù)的語言結(jié)構(gòu)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 旋轉(zhuǎn)154
5.5.4 上卷和立方體155
5.6 總結(jié)158
術(shù)語回顧158
實踐習(xí)題158
習(xí)題160
工具161
延伸閱讀162
第二部分 數(shù)據(jù)庫設(shè)計
第6章 使用E-R模型的數(shù)據(jù)庫設(shè)計164
6.1 設(shè)計過程概覽164
6.1.1 設(shè)計階段164
6.1.2 設(shè)計