資料庫管理系統原理與設計(第3版)

內容簡介

本書由於內容全面,實踐性強,已經成為了資料庫課程的首選教材。全書分為資料庫基礎,應用程式開發、存儲與索引、查詢評估、事務管理、資料庫設計與調整、高級主題等七大部分,對資料庫的設計與使用、資料庫管理系統基本原理與實現技術,以及資料庫研究的新進展做了詳細論述。

編輯推薦

《資料庫管理系統原理與設計》(第3版)可作為高等院校計算機專業本科生、研究生和教師的教材和教學參考,對於從事資料庫系統研究以及學習資料庫系統技術的人也很有參考價值。

作者簡介

作者:(美國)羅摩克里希納 (Raghu Ramakrishnan) (美國)格爾基 (Johannes Gehrke) 譯者:周立柱 張志強 李超 王煜

目錄

第1章資料庫系統概述3

1.1管理數據4

1.2歷史回顧5

1.3檔案系統和資料庫管理系統6

1.4資料庫管理系統的優點7

1.5資料庫管理系統中數據的描述和存儲8

1.5.1關係模型8

1.5.2資料庫管理系統的抽象級別9

1.5.3數據獨立性11

1.6資料庫管理系統中的查詢11

1.7事務管理12

1.7.1事務的並發執行13

1.7.2未完成的事務和系統崩潰13

1.7.3注意要點14

1.8資料庫管理系統的結構14

1.9與資料庫打交道的人15

1.10複習題16

第2章實體聯繫模型19

2.1資料庫設計與ER圖20

2.1.1其他步驟20

2.2實體、屬性和實體集21

2.3聯繫和聯繫集22

2.4ER模型的其他特徵24

2.4.1碼約束24

2.4.2參與約束25

2.4.3弱實體25

2.4.4類層次27

2.4.5聚合29

2.5用ER模型進行概念資料庫設計29

2.5.1實體對屬性30

2.5.2實體與聯繫31

2.5.3二元與三元聯繫32

2.5.4聚合與三元聯繫33

2.6大型企業的概念資料庫設計34

2.7統一建模語言34

2.8案例研究:網上書店35

2.8.1需求分析36

2.8.2概念設計36

2.9複習題37

第3章關係模型42

3.1關係模型簡介43

3.1.1使用SQL創建和修改關係45

3.2關係的完整性約束46

3.2.1碼約束47

3.2.2外碼約束48

3.2.3一般約束50

3.3完整性約束的強制執行50

3.3.1事務與約束52

3.4查詢關係數據53

3.5邏輯資料庫設計:從ER模型到關係模型55

3.5.1從實體集到關係表55

3.5.2從聯繫集(不包括約束)到關係表56

3.5.3轉換帶碼約束的聯繫集57

3.5.4轉換帶有參與約束的聯繫集58

3.5.5轉換弱實體集60

3.5.6轉換類層次60

3.5.7轉換帶聚合的ER圖61

3.5.8ER模型到關係模型:更多的示例62

3.6視圖簡介63

3.6.1視圖、數據獨立性和安全64

3.6.2視圖的更新64

3.7刪除/修改關係表和視圖67

3.8案例研究:網上書店67

3.9複習題69

第4章關係代數和演算74

4.1預備知識74

4.2關係代數75

4.2.1選擇和投影75

4.2.2集合操作76

4.2.3重命名78

4.2.4連線78

4.2.5除80

4.2.6關係代數查詢的其他示例81

4.3關係演算85

4.3.1元組關係演算86

4.3.2域關係演算89

4.4代數與演算的表達能力91

4.5複習題92

第5章SQL:查詢、約束與觸發器96

5.1概述97

5.1.1章節組織97

5.2基本SQL查詢的形式99

5.2.1基本SQL查詢的示例102

5.2.2SELECT命令中的表達式和字元串103

5.3UNION、INTERSECT和EXCEPT104

5.4嵌套查詢107

5.4.1嵌套查詢簡介107

5.4.2相關嵌套查詢109

5.4.3集合比較操作109

5.4.4有關嵌套查詢的其他示例110

5.5聚集操作符111

5.5.1GROUPBY和HAVING子句114

5.5.2聚集查詢的其他示例117

5.6空值120

5.6.1使用空值的比較121

5.6.2邏輯連線運算AND、OR和NOT121

5.6.3SQL構造符的作用121

5.6.4外連線122

5.6.5禁止使用空值122

5.7SQL中的複雜完整性約束123

5.7.1單個表上的約束123

5.7.2域約束與DISTINCT類型123

5.7.3斷言:多個表上的完整性約束124

5.8觸發器和主動資料庫125

5.8.1SQL的觸發器示例125

5.9設計主動資料庫127

5.9.1為什麼觸發器難以理解127

5.9.2約束和觸發器127

5.9.3觸發器的其他用途128

5.10複習題128

第二部分應用程式開發

第6章資料庫套用開發139

6.1從應用程式中訪問資料庫140

6.1.1嵌入式SQL140

6.1.2游標142

6.1.3動態SQL145

6.2JDBC簡介146

6.2.1JDBC體系結構147

6.3JDBC類和接口148

6.3.1JDBC驅動器管理148

6.3.2連線到數據源148

6.3.3執行SQL語句150

6.3.4結果集151

6.3.5異常和警告152

6.3.6檢查資料庫元數據153

6.4SQLJ154

6.4.1編寫SQLJ代碼155

6.5存儲過程157

6.5.1創建一個簡單的存儲過程157

6.5.2調用存儲過程158

6.5.3SQL/PSM159

6.6案例研究:網上書店160

6.7複習題163

第7章Internet套用166

7.1引言166

7.2Internet的一些概念167

7.2.1統一資源標識符167

7.2.2超文本傳輸協定HTTP168

7.3HTML文檔170

7.4XML文檔171

7.4.1XML簡介172

7.4.2XMLDTD174

7.4.3特定領域的DTD177

7.5三層套用體系結構178

7.5.1單層和客戶伺服器體系結構178

7.5.2三層體系結構180

7.5.3三層體系結構的優點181

7.6展示層182

7.6.1HTML表單182

7.6.2JavaScript184

7.6.3樣式表185

7.7中間層188

7.7.1CGI:通用網關接口188

7.7.2套用伺服器189

7.7.3Servlet190

7.7.4JSP192

7.7.5維護狀態193

7.8案例研究:網上書店195

7.9複習題197

第三部分存儲與索引

第8章存儲與索引概述207

8.1外部存儲上的數據208

8.2檔案組織與索引208

8.2.1聚簇索引209

8.2.2主索引和次索引210

8.3索引數據結構210

8.3.1基於哈希的索引211

8.3.2基於樹的索引212

8.4不同檔案組織的比較213

8.4.1代價模型214

8.4.2堆檔案214

8.4.3排序檔案215

8.4.4聚簇檔案216

8.4.5具有非聚簇樹索引的堆檔案217

8.4.6具有非聚簇哈希索引的堆檔案218

8.4.7I/O代價的比較219

8.5索引和性能調整219

8.5.1工作負載的影響220

8.5.2聚簇索引組織220

8.5.3複合搜尋碼222

8.5.4SQL∶1999中的索引規範225

8.6複習題225

第9章存儲數據:磁碟和檔案230

9.1存儲層次230

9.1.1磁碟231

9.1.2磁碟結構對性能的影響233

9.2廉價冗餘磁碟陣列(RAID)233

9.2.1數據劃分234

9.2.2冗餘234

9.2.3冗餘的層次235

9.2.4RAID級別的選擇238

9.3磁碟空間管理238

9.3.1跟蹤空閒塊238

9.3.2使用作業系統的檔案系統來管理磁碟空間238

9.4緩衝區管理器239

9.4.1緩衝區替換策略241

9.4.2資料庫管理系統和作業系統的緩衝區管理241

9.5記錄檔案243

9.5.1堆檔案的實現243

9.6頁格式245

9.6.1定長記錄245

9.6.2變長記錄246

9.7記錄格式247

9.7.1定長記錄248

9.7.2變長記錄248

9.8複習題249

第10章樹結構索引253

10.1樹索引介紹254

10.2索引順序存取方法255

10.2.1溢出頁與加鎖考慮257

10.3B+樹:一種動態索引結構257

10.3.1節點格式258

10.4搜尋259

10.5插入260

10.6刪除262

10.7重複266

10.8實際的B+樹267

10.8.1碼壓縮267

10.8.2塊載入B+樹268

10.8.3秩的概念270

10.8.4rid上插入和刪除的影響271

10.9複習題271

第11章基於哈希的索引277

11.1靜態哈希278

11.1.1記號與約定279

11.2可擴展哈希279

11.3線性哈希283

11.4可擴展哈希與線性哈希的關係288

11.5複習題288

第四部分查詢評估

第12章查詢求解概述295

12.1系統目錄296

12.1.1目錄中的信息296

12.2操作符求解概述298

12.2.1三種常用技術298

12.2.2訪問路徑298

12.3關係型操作的算法300

12.3.1選擇300

12.3.2投影301

12.3.3連線301

12.3.4其他操作302

12.4查詢最佳化概述303

12.4.1查詢求解計畫303

12.4.2多處理器查詢:流水線求解304

12.4.3疊代操作的接口305

12.5可選計畫:研究這一問題動機的示例306

12.5.1下推選擇306

12.5.2使用索引307

12.6一個典型的最佳化器做些什麼310

12.6.1考慮不同的查詢計畫310

12.6.2估算計畫的代價311

12.7複習題312

第13章外排序315

13.1什麼時候DBMS需要對數據進行排序315

13.2簡單的兩路歸併排序算法316

13.3外歸併排序318

13.3.1段數的最小化320

13.4最小化I/O開銷和I/O的次數321

13.4.1塊I/O321

13.4.2雙緩衝323

13.5使用B+樹來排序323

13.5.1聚簇索引324

13.5.2非聚簇索引324

13.6複習題326

第14章關係操作求解328

14.1選擇操作329

14.1.1無索引、未排序的數據329

14.1.2無索引、排序的數據330

14.1.3B+樹索引330

14.1.4哈希排序、等價選擇331

14.2一般的選擇條件331

14.2.1CNF和索引匹配332

14.2.2求解無析取的選擇332

14.2.3求解有析取的選擇333

14.3投影操作334

14.3.1基於排序的投影334

14.3.2基於哈希函式的投影335

14.3.3用於投影的排序和哈希336

14.3.4用於投影的索引使用337

14.4連線操作337

14.4.1嵌套循環連線算法338

14.4.2排序歸併連線算法341

14.4.3哈希連線345

14.4.4一般的連線條件348

14.5集合操作349

14.5.1用於並和差的排序349

14.5.2用於並和差的哈希349

14.6聚集操作350

14.6.1使用索引實現聚集351

14.7緩衝的影響351

14.8複習題352

第15章典型的關係查詢最佳化器357

15.1將SQL查詢轉換成關係代數表達式358

15.1.1將SQL查詢分解成塊358

15.1.2把查詢塊表示成關係代數表達式359

15.2估算執行計畫的開銷360

15.2.1估計結果的大小360

15.3關係代數的等價364

15.3.1選擇364

15.3.2投影364

15.3.3叉積和連線364

15.3.4選擇、投影和連線365

15.3.5其他的等價366

15.4列舉可選的執行計畫366

15.4.1單關係查詢367

15.4.2多關係查詢370

15.5嵌套子查詢375

15.6SystemR最佳化器377

15.7查詢最佳化的其他方法377

15.8複習題378

第五部分事務管理

第16章事務管理概述389

16.1ACID屬性390

16.1.1一致性和隔離性390

16.1.2原子性和持久性391

16.2事務和調度391

16.3事務的並發執行392

16.3.1並發執行的動機392

16.3.2可串列化392

16.3.3交叉執行帶來的異常394

16.3.4包括中止事務的調度396

16.4基於加鎖的並發控制397

16.4.1嚴格的兩階段加鎖397

16.4.2死鎖398

16.5加鎖的性能399

16.6SQL對事務的支持399

16.6.1創建和結束事務399

16.6.2應該鎖住什麼400

16.6.3SQL中事務的特性401

16.7崩潰恢復簡介403

16.7.1偷幀和強制寫頁403

16.7.2正常執行時與恢復相關的執行步驟404

16.7.3ARIES簡介405

16.7.4原子性:實現回滾405

16.8複習題405

第17章並發控制409

17.12PL、可串列性和可恢復性410

17.1.1觀測可串列化411

17.2加鎖管理簡介412

17.2.1實現加鎖和解鎖請求412

17.3鎖轉換413

17.4死鎖處理414

17.4.1死鎖預防415

17.5特殊的加鎖技術416

17.5.1動態資料庫和幻影問題416

17.5.2B+樹的並發控制417

17.5.3多粒度鎖419

17.6不加鎖的並發控制420

17.6.1樂觀的並發控制420

17.6.2基於時間戳的並發控制422

17.6.3多版本並發控制424

17.7複習題425

第18章崩潰恢復431

18.1ARIES算法簡介432

18.2日誌433

18.3與恢復相關的其他數據結構435

18.4寫優先日誌協定435

18.5檢查點436

18.6從系統崩潰中恢復436

18.6.1分析階段437

18.6.2重做階段438

18.6.3反做階段439

18.7介質恢復442

18.8其他算法以及與並發控制的互動作用442

18.9複習題443

第六部分資料庫設計與調整

第19章模式求精與範式451

19.1模式求精簡介452

19.1.1冗餘導致的問題452

19.1.2模式分解453

19.1.3模式分解中的一些問題454

19.2函式依賴455

19.3函式依賴推理456

19.3.1函式依賴集的閉包456

19.3.2屬性閉包457

19.4範式458

19.4.1鮑依斯柯德範式458

19.4.2第三範式459

19.5分解的特性461

19.5.1無損連線分解461

19.5.2保持依賴分解462

19.6規範化463

19.6.1分解為BCNF463

19.6.2分解為3NF464

19.7資料庫設計中的模式求精467

19.7.1一個實體集上的約束467

19.7.2一個聯繫集上的約束468

19.7.3識別實體的屬性468

19.7.4識別實體集469

19.8其他類型的依賴470

19.8.1多值依賴470

19.8.2第四範式472

19.8.3連線依賴473

19.8.4第五範式473

19.8.5包含依賴473

19.9案例研究:網上書店474

19.10複習題475

第20章物理資料庫設計和調整482

20.1物理資料庫設計簡介483

20.1.1資料庫負載483

20.1.2物理設計與調整決策484

20.1.3資料庫調整的必要性484

20.2索引選擇的指導方針485

20.3索引選擇的基本示例486

20.4聚簇和索引488

20.4.1兩個關係的協同聚簇489

20.5使只需索引的計畫成為可能的索引490

20.6用於確定索引的輔助工具491

20.6.1自動的索引選擇491

20.6.2索引調整嚮導如何工作492

20.7資料庫調整簡介494

20.7.1調整索引494

20.7.2調整概念模式495

20.7.3調整查詢和視圖496

20.8調整概念模式時的選擇496

20.8.1設定一個弱範式497

20.8.2非規範化497

20.8.3分解的選擇497

20.8.4BCNF關係的垂直分解498

20.8.5水平分解499

20.9調整查詢和視圖中的選擇499

20.10並發控制的影響501

20.10.1減少鎖的保持時間501

20.10.2減少熱點502

20.11案例研究:網上書店503

20.11.1資料庫的調整504

20.12DBMS評測基準504

20.12.1著名的DBMS評測基準505

20.12.2評測基準的使用505

20.13複習題506

第21章安全與認證512

21.1資料庫安全簡介513

21.2訪問控制513

21.3任意訪問控制514

21.3.1授予和回收視圖的訪問控制和完整性約束520

21.4強制性訪問控制522

21.4.1多級關係和多實例化523

21.4.2轉換通道,DoD安全級別524

21.5Internet套用的安全性525

21.5.1加密525

21.5.2認證伺服器:SSL協定526

21.5.3數字簽名527

21.6有關安全的其他問題528

21.6.1資料庫管理員的任務528

21.6.2統計資料庫的安全529

21.7案例研究:網上書店530

21.8複習題531

第七部分高級主題

第22章並行與分散式資料庫537

22.1簡介537

22.2並行資料庫系統的可用結構538

22.3並行查詢處理539

22.3.1數據劃分540

22.3.2並行化順序數據操作處理程式541

22.4數據操作的並行化541

22.4.1批量載入和掃描541

22.4.2排序541

22.4.3連線542

22.5並行查詢最佳化544

22.6分散式資料庫簡介544

22.6.1分散式資料庫系統的類型545

22.7分散式DBMS的體系結構545

22.7.1客戶/伺服器系統545

22.7.2協同伺服器系統546

22.7.3中間件系統546

22.8分散式DBMS的數據存儲546

22.8.1劃分547

22.8.2複製547

22.9分散式目錄管理548

22.9.1命名對象548

22.9.2目錄結構548

22.9.3分布數據的獨立性549

22.10分散式查詢處理549

22.10.1分散式DBMS中無連線的查詢550

22.10.2分散式DBMS中的連線操作550

22.10.3基於代價的查詢最佳化553

22.11分散式數據的更新554

22.11.1同步複製554

22.11.2異步複製555

22.12分散式事務557

22.13分散式並發控制557

22.13.1分散式死鎖558

22.14分散式事務恢復559

22.14.1事務正常執行和提交協定559

22.14.2發生故障後進行恢復560

22.14.3重新討論兩階段提交561

22.14.4三階段提交562

22.15複習題563

第23章對象資料庫系統571

23.1研究動機示例572

23.1.1新的數據類型573

23.1.2操縱新類型數據574

23.2結構化數據類型576

23.2.1集合類型576

23.3結構化類型的數據操縱577

23.3.1行操作577

23.3.2數組操作577

23.3.3其他集合類型的操作578

23.3.4涉及嵌套集合的查詢示例578

23.4封裝和抽象數據類型579

23.4.1定義方法580

23.5繼承581

23.5.1定義帶有繼承的類型582

23.5.2方法聯編582

23.5.3集合層次583

23.6對象、對象標識符和引用類型583

23.6.1相等的概念584

23.6.2引用類型的解除584

23.6.3SQL∶1999中的URL和oid584

23.7ORDBMS的資料庫設計585

23.7.1集合類型和ADTs585

23.7.2對象標識符587

23.7.3擴展ER模型588

23.7.4使用嵌套集合589

23.8實現ORDBMS的挑戰590

23.8.1存儲和訪問方法590

23.8.2查詢處理591

23.8.3查詢最佳化593

23.9OODBMS594

23.9.1ODMG數據模型和ODL594

23.9.2OQL596

23.10RDBMS與OODBMS和ORDBMS的比較597

23.10.1RDBMS和ORDBMS597

23.10.2OODBMS和ORDBMS的相似點597

23.10.3OODBMS和ORDBMS的不同點597

23.11複習題598

第24章演繹資料庫604

24.1遞歸查詢簡介605

24.1.1Datalog605

24.2理論基礎607

24.2.1最小模型語義608

24.2.2不動點操作符609

24.2.3安全的Datalog程式610

24.2.4最小模型=最小不動點610

24.3帶有否定的遞歸查詢611

24.3.1分層612

24.4從Datalog到SQL614

24.5遞歸查詢的求解616

24.5.1無重複推理的不動點求解616

24.5.2下移選擇操作來避免不相關的推理618

24.5.3魔集算法619

24.6複習題621

第25章數據倉庫與決策支持625

25.1決策支持簡介626

25.2OLAP:多維數據模型627

25.2.1多維資料庫設計629

25.3多維聚集查詢630

25.3.1SQL∶1999中的ROLLUP和CUBE631

25.4SQL∶1999中的WINDOW查詢633

25.4.1構造視窗635

25.4.2新的聚集函式635

25.5快速得到查詢結果635

25.5.1得到前N個結果的查詢636

25.5.2在線上聚集637

25.6OLAP實現技術638

25.6.1點陣圖索引638

25.6.2連線索引640

25.6.3檔案組織640

25.7數據倉庫641

25.7.1創建和維護數據倉庫641

25.8視圖和決策支持642

25.8.1視圖、OLAP和數據倉庫642

25.8.2視圖上的查詢643

25.9視圖實體化643

25.9.1視圖實體化的問題644

25.10實體化視圖的維護645

25.10.1視圖的增量維護645

25.10.2維護數據倉庫視圖647

25.10.3進行視圖同步的時機648

25.11複習題649

第26章數據挖掘655

26.1數據挖掘簡介655

26.1.1知識發現的過程656

26.2關聯計數657

26.2.1頻繁項集657

26.2.2冰山式查詢659

26.3規則挖掘660

26.3.1關聯規則660

26.3.2找出關聯規則的算法661

26.3.3關聯規則和ISA層次661

26.3.4通用化關聯規則662

26.3.5順序模式663

26.3.6使用關聯規則進行預測664

26.3.7貝葉斯網路664

26.3.8分類和回歸規則665

26.4樹結構規則666

26.4.1決策樹667

26.4.2建立決策樹的算法668

26.5聚簇670

26.5.1一個聚簇算法671

26.6在序列上的相似搜尋671

26.6.1找出相似序列的算法673

26.7增量挖掘和數據流673

26.7.1頻繁項集的增量維護674

26.8其他的數據挖掘任務675

26.9複習題676

第27章信息檢索和XML數據681

27.1衝突的世界:資料庫、IR和XML682

27.1.1DBMS與IR系統682

27.2信息檢索介紹683

27.2.1向量空間模型683

27.2.2詞的TF/IDF權重684

27.2.3文檔相似性排序685

27.2.4對成功的衡量:查準率和查全率686

27.3為文本搜尋建立索引686

27.3.1倒排索引686

27.3.2簽名檔案688

27.4Web搜尋引擎689

27.4.1搜尋引擎體系結構689

27.4.2使用連結信息690

27.5管理DBMS中的文本693

27.5.1松耦合的倒排索引693

27.6一個XML的數據模型693

27.6.1鬆散結構的動機694

27.6.2圖模型694

27.7XQuery:查詢XML數據695

27.7.1路徑表達式696

27.7.2FLWR表達式696

27.7.3元素的排序697

27.7.4分組以及集合值的生成698

27.8XML查詢的有效求值698

27.8.1在RDBMS中存儲XML699

27.8.2對XML庫進行索引701

27.9複習題704

第28章空間數據管理712

28.1空間數據和查詢類型713

28.2涉及空間數據的套用714

28.3空間索引簡介715

28.3.1已提出的索引結構概述716

28.4基於空間填充曲線的索引717

28.4.1區域四叉樹和Z排序區域數據718

28.4.2使用Z排序的空間查詢719

28.5格線檔案719

28.5.1使用格線檔案來處理區域721

28.6R樹:點和區域數據721

28.6.1查詢722

28.6.2插入和刪除操作723

28.6.3並發控制724

28.6.4通用化搜尋樹725

28.7高維索引問題726

28.8複習題726

第29章其他專題729

29.1高級事務處理729

29.1.1事務處理監視程式729

29.1.2新的事務模型730

29.1.3實時DBMS730

29.2數據集成730

29.3移動資料庫731

29.4主存資料庫732

29.5多媒體資料庫732

29.6地理信息系統733

29.7時態資料庫734

29.8生物資料庫734

29.9信息可視化734

29.10小結735

第30章MINIBASE教學輔助軟體736

30.1可用內容736

30.2MINIBASE作業概述736

30.3致謝737

參考文獻738

相關詞條

熱門詞條

聯絡我們