《數(shù)據(jù)庫系統(tǒng)原理》對數(shù)據(jù)庫系統(tǒng)的概念、原理、技術和方法進行了系統(tǒng)和全面的闡述。全書共分17章,其中,第1~3章介紹了數(shù)據(jù)庫的基本概念,包括數(shù)據(jù)庫的發(fā)展過程、數(shù)據(jù)庫的系統(tǒng)結構、數(shù)據(jù)模型和關系代數(shù)等;第5~9章對數(shù)據(jù)庫管理系統(tǒng)中的查詢優(yōu)化、數(shù)據(jù)庫安全性和完整性、數(shù)據(jù)庫的恢復技術、并發(fā)控制等內容進行了闡述;第10章和第11章分別是數(shù)據(jù)庫設計理論和數(shù)據(jù)庫設計方法;第4章和第12章分別介紹了標準的SQL語言和SQL Server的Transact-SQL語言編程;第13章介紹了數(shù)據(jù)庫的存儲技術;第14~17章是數(shù)據(jù)庫新技術的內容,分別介紹了分布式數(shù)據(jù)庫、面向對象數(shù)據(jù)庫、多媒體數(shù)據(jù)庫、空間數(shù)據(jù)庫、XML數(shù)據(jù)庫等。
《數(shù)據(jù)庫系統(tǒng)原理》在介紹理論的同時對SQL Server數(shù)據(jù)庫中的具體實現(xiàn)進行了簡要的描述,以達到理論與實際相結合的目的。
《數(shù)據(jù)庫系統(tǒng)原理》可以作為高等學校計算機專業(yè)、信息管理與信息系統(tǒng)等相關專業(yè)數(shù)據(jù)庫原理課程的教材,也可作為從事數(shù)據(jù)庫系統(tǒng)研究、開發(fā)和應用的研究人員和工程技術人員的參考書。
數(shù)據(jù)庫技術是計算機科學領域中發(fā)展最快、應用最廣泛的技術之一。自20世紀60年代末以來,在40年的發(fā)展歷程中,數(shù)據(jù)庫技術的研究和應用取得了巨大的成就。數(shù)據(jù)庫技術被廣泛應用于管理各種信息,已成為當今計算機信息系統(tǒng)的基礎和核心,成為管理和利用信息資源不可缺少的工具。
數(shù)據(jù)庫技術的廣泛應用受到了人們的極大關注,學習和了解數(shù)據(jù)庫技術成了廣大科技工作者、管理人員和數(shù)據(jù)庫使用者的共同需要。數(shù)據(jù)庫是計算機專業(yè)大學生的必修課之一,非計算機專業(yè)的學生也需要學習和應用數(shù)據(jù)庫技術來解決本專業(yè)的問題。從這些需求出發(fā),作者編寫了這本數(shù)據(jù)庫系統(tǒng)原理教材。
本書是作者在多年從事教學和科研的基礎上編寫成的。在編寫和組織內容時,注重了內容的全面性和實用性。本書內容包括數(shù)據(jù)模型、數(shù)據(jù)庫語言、數(shù)據(jù)庫的實現(xiàn)技術、數(shù)據(jù)庫的設計理論和技術、數(shù)據(jù)庫的存儲結構等。除了介紹數(shù)據(jù)庫的基礎知識和技術外,還介紹了數(shù)據(jù)庫的新技術,力求使讀者能夠全面了解數(shù)據(jù)庫涉及的概念、原理、方法和技術,了解數(shù)據(jù)庫技術的發(fā)展和研究成果。書中的大部分示例結合了商用數(shù)據(jù)庫管理系統(tǒng)SQL Server數(shù)據(jù)庫。從實用性出發(fā),在介紹基本SQL語句功能的基礎上,進一步介紹了這些命令語句的實際應用,以幫助讀者加深對SQL語句的理解和應用。在數(shù)據(jù)庫設計部分,介紹了實用的IDEF1X數(shù)據(jù)建模方法,這在同類教材中很少見。書中結合實際示例介紹了數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)建模過程。
全書共分17章,第1章數(shù)據(jù)庫系統(tǒng)引論,介紹數(shù)據(jù)處理技術的發(fā)展、數(shù)據(jù)庫系統(tǒng)結構和數(shù)據(jù)庫管理系統(tǒng)等涉及的基本概念;第2章數(shù)據(jù)模型,介紹E-R模型、層次模型和網(wǎng)狀模型、關系模型和面向對象模型中的基本概念;第3章關系數(shù)據(jù)庫,介紹關系數(shù)據(jù)庫涉及的基本概念及對關系的各種運算;第4章關系數(shù)據(jù)庫標準語言SQL,介紹SQL語言涉及的基本概念和SQL語言的主要功能;第5章查詢處理和優(yōu)化,介紹關系數(shù)據(jù)庫的查詢處理和查詢優(yōu)化技術;第6章至第9章,介紹數(shù)據(jù)庫保護技術,分別介紹了數(shù)據(jù)庫安全性概念和數(shù)據(jù)庫采用的各種安全性措施、數(shù)據(jù)庫完整性概念和完整性約束機制、數(shù)據(jù)庫恢復技術和數(shù)據(jù)庫并發(fā)控制技術,并介紹了實際數(shù)據(jù)庫管理系統(tǒng)中所采用的各種數(shù)據(jù)保護技術;第10章至第12章介紹數(shù)據(jù)庫設計理論和設計方法,結合SQL Server數(shù)據(jù)庫介紹了數(shù)據(jù)庫編程中的基本概念和方法;第13章數(shù)據(jù)庫的存儲結構,介紹數(shù)據(jù)庫存儲技術,包括記錄的存儲結構和數(shù)據(jù)庫中使用的各種文件的存儲結構;第14章至第17章介紹數(shù)據(jù)庫的新技術,重點介紹了分布式數(shù)據(jù)庫、對象和對象關系數(shù)據(jù)庫、多媒體數(shù)據(jù)庫、空間數(shù)據(jù)庫、XML數(shù)據(jù)庫等,并簡要介紹了其他數(shù)據(jù)庫的新技術和新應用。
本書在編寫過程中注意取材合理,盡量反映國內外最新研究成果,力求做到理論聯(lián)系實際,概念清晰,通俗易懂,以便于自學。
本書可作為大專院校數(shù)據(jù)庫課程的使用教材,1~13章為本科生教學的基本內容,建議學時48~64,其中帶*的部分為非主講內容,其他章節(jié)可供本科生、研究生作為參考。本書也可作為從事數(shù)據(jù)庫系統(tǒng)研究、開發(fā)和應用的研究人員和工程技術人員的參考書。
參加本書編寫的人員和章節(jié): 第1章~第4章和第10章由周志逵編寫,第5章~第7章由孫新編寫,第8章和第9章由陸耀編寫,第11章、第12章、第16章和第17章由郭貴鎖編寫,第13章~第15章由張文耀編寫。周志逵對全書內容進行了統(tǒng)稿和審定。
在本書的編寫過程中,2006級研究生陳銀美等參與了書稿的部分編輯工作,在此表示衷心的感謝。
由于作者水平有限,書中難免存在許多不足之處,懇請讀者批評指正。
作 者
第1章 數(shù)據(jù)庫系統(tǒng)引論1
1.1 數(shù)據(jù)管理技術的發(fā)展1
1.1.1 人工管理階段1
1.1.2 文件系統(tǒng)階段2
1.1.3 數(shù)據(jù)庫系統(tǒng)階段3
1.2 什么是數(shù)據(jù)庫5
1.3 數(shù)據(jù)模型6
1.4 數(shù)據(jù)庫系統(tǒng)結構7
1.4.1 數(shù)據(jù)庫系統(tǒng)的三級模式結構8
1.4.2 三級模式結構的二級映像9
1.5 數(shù)據(jù)庫管理系統(tǒng)9
1.5.1 數(shù)據(jù)庫管理系統(tǒng)的功能9
1.5.2 數(shù)據(jù)庫管理系統(tǒng)的組成12
1.5.3 數(shù)據(jù)庫系統(tǒng)的工作過程12
1.6 數(shù)據(jù)庫系統(tǒng)的不同視圖13
1.7 數(shù)據(jù)庫技術的發(fā)展15
1.8 小結16
習題16
第2章 數(shù)據(jù)模型18
2.1 E-R概念模型18
2.1.1 E-R數(shù)據(jù)模型中的基本概念18
2.1.2 E-R數(shù)據(jù)模型21
2.2 層次數(shù)據(jù)模型25
2.3 網(wǎng)狀數(shù)據(jù)模型26
2.4 關系數(shù)據(jù)模型28
2.4.1 關系模型的基本概念和結構28
2.4.2 關系模型的數(shù)據(jù)完整性約束30
2.4.3 關系模型的數(shù)據(jù)操縱30
2.4.4 關系模型與網(wǎng)狀和層次模型的比較31
2.5 面向對象數(shù)據(jù)模型32
2.6 小結33目錄數(shù)據(jù)庫系統(tǒng)原理 習題34
第3章 關系數(shù)據(jù)庫35
3.1 關系模型的基本概念35
3.1.1 關系的定義35
3.1.2 關系模式和關系數(shù)據(jù)庫37
3.1.3 鍵37
3.1.4 完整性約束38
3.2 關系代數(shù)39
3.2.1 傳統(tǒng)的集合運算40
3.2.2 專門的關系運算41
3.2.3 擴充的關系運算44
3.2.4 舉例46
3.2.5 ISBL語言47
3.3 元組關系演算48
3.3.1 元組關系演算簡介48
3.3.2 元組關系演算語言ALPHA50
3.4 域關系演算52
3.4.1 域關系演算簡介52
3.4.2 域關系演算語言QBE53
3.4.3 關系運算的安全限制和三種關系運算的等價性56
3.5 小結58
習題58
第4章 關系數(shù)據(jù)庫標準語言SQL60
4.1 SQL簡介60
4.2 SQL的系統(tǒng)結構61
4.3 SQL的數(shù)據(jù)定義61
4.3.1 SQL模式的定義和刪除62
4.3.2 基本表的定義、修改和刪除62
4.3.3 索引的建立和刪除65
4.4 SQL的數(shù)據(jù)操縱66
4.4.1 數(shù)據(jù)查詢66
4.4.2 數(shù)據(jù)更新74
4.5 SQL中的視圖76
4.5.1 視圖的定義77
4.5.2 視圖上的操作78
4.5.3 視圖的優(yōu)點80
4.6 SQL的數(shù)據(jù)控制81
4.6.1 授權82
4.6.2 權限回收83
4.7 嵌入式SQL83
4.7.1 嵌入式SQL與主語言的接口84
4.7.2 不用游標的嵌入式SQL85
4.7.3 用游標的嵌入式SQL87
4.7.4 嵌入式SQL 應用實例89
4.7.5 動態(tài)SQL91
4.8 小結92
習題92
第5章 查詢處理和查詢優(yōu)化94
5.1 關系數(shù)據(jù)庫系統(tǒng)的查詢處理94
5.1.1 查詢處理過程94
5.1.2 執(zhí)行查詢操作的基本算法95
5.2 關系數(shù)據(jù)庫系統(tǒng)的查詢優(yōu)化99
5.2.1 查詢優(yōu)化技術99
5.2.2 查詢優(yōu)化實例100
5.3 代數(shù)優(yōu)化102
5.3.1 關系代數(shù)表達式的等價變換規(guī)則103
5.3.2 代數(shù)優(yōu)化策略105
5.3.3 代數(shù)優(yōu)化算法105
5.4 基于存取路徑的優(yōu)化108
5.5 基于代價估算的優(yōu)化109
5.5.1 選擇操作的代價估算110
5.5.2 連接操作的代價估算111
5.6 小結112
習題112
第6章 數(shù)據(jù)庫的安全性114
6.1 計算機安全性概述114
6.2 數(shù)據(jù)庫安全性概述116
6.3 用戶標識與鑒別117
6.4 存取控制118
6.4.1 自主存取控制118
6.4.2 強制存取控制123
6.5 視圖機制124
6.6 數(shù)據(jù)加密126
6.7 數(shù)據(jù)庫審計127
6.8 統(tǒng)計數(shù)據(jù)庫的安全性127
6.9 SQL Server的安全控制128
6.9.1 SQL Server的安全體系結構128
6.9.2 登錄管理129
6.9.3 數(shù)據(jù)庫用戶管理131
6.9.4 權限管理132
6.9.5 角色管理134
6.9.6 審計136
6.10 小結137
習題138
第7章 數(shù)據(jù)庫的完整性139
7.1 數(shù)據(jù)庫的完整性概述139
7.1.1 完整性約束條件139
7.1.2 實現(xiàn)數(shù)據(jù)完整性的方法141
7.2 實體完整性141
7.2.1 實體完整性的定義142
7.2.2 實體完整性檢查和違約處理143
7.3 參照完整性143
7.4 用戶定義的完整性146
7.5 觸發(fā)器148
7.6 SQL Server中數(shù)據(jù)庫完整性的實現(xiàn)152
7.7 小結157
習題158
第8章 數(shù)據(jù)庫恢復技術160
8.1 事務的基本概念和特征160
8.1.1 事務的基本概念160
8.1.2 事務特征160
8.1.3 事務狀態(tài)162
8.1.4 事務原子性和持久性的實現(xiàn)163
8.1.5 事務的并發(fā)運行163
8.2 數(shù)據(jù)庫恢復的必要性164
8.3 數(shù)據(jù)庫恢復策略164
8.4 數(shù)據(jù)轉儲與恢復166
8.5 基于日志的數(shù)據(jù)庫恢復168
8.5.1 數(shù)據(jù)庫系統(tǒng)日志文件168
8.5.2 使用日志恢復數(shù)據(jù)庫168
8.6 檢查點恢復技術171
8.7 數(shù)據(jù)庫鏡像恢復技術172
8.8 SQL Server的數(shù)據(jù)恢復機制173
8.8.1 SQL Server 中的事務173
8.8.2 備份和恢復174
8.9 小結179
習題180
第9章 并發(fā)控制181
9.1 并發(fā)事務運行存在的異常問題181
9.2 并發(fā)調度的可串行性183
9.2.1 可串行化調度183
9.2.2 調度的沖突等價性184
9.2.3 調度的狀態(tài)等價性185
9.2.4 調度的可串行性測試186
9.3 基于封鎖的并發(fā)控制技術187
9.3.1 鎖187
9.3.2 封鎖協(xié)議188
9.3.3 活鎖189
9.3.4 死鎖190
9.3.5 兩階段封鎖協(xié)議192
9.3.6 鎖表192
9.4 多粒度封鎖194
?*9.5 基于時間戳協(xié)議的并發(fā)控制196
9.5.1 時間戳196
9.5.2 時間戳協(xié)議196
?*9.6 基于有效性確認的并發(fā)控制198
9.7 插入與刪除操作對并發(fā)控制的影響200
9.8 SQL Server中的并發(fā)控制202
9.8.1 事務的隔離級別202
9.8.2 專用鎖203
9.8.3 鎖的使用與管理204
9.9 小結205
習題206
第10章 關系數(shù)據(jù)庫設計理論208
10.1 關系模型的存儲異常208
10.2 函數(shù)依賴210
10.2.1 函數(shù)依賴的定義210
10.2.2 函數(shù)依賴的蘊涵性212
10.3 函數(shù)依賴公理212
10.3.1 Armstrong公理212
10.3.2 函數(shù)依賴集的等價和覆蓋216
10.4 模式分解218
10.4.1 無損連接分解219
10.4.2 分解的保持依賴性222
10.5 關系模式的規(guī)范化223
10.5.1 第一范式224
10.5.2 第二范式(2NF)225
10.5.3 第三范式226
10.5.4 Boyce-Codd范式(BCNF)227
10.5.5 模式分解算法228
10.6 多值依賴和4NF230
10.6.1 多值依賴230
10.6.2 4NF233
?*10.7 連接依賴和投影-連接范式(Project-Join NF)234
10.7.1 連接依賴234
10.7.2 投影-連接范式(Project-Join NF)235
10.8 小結236
習題236
第11章 數(shù)據(jù)庫設計238
11.1 數(shù)據(jù)庫設計方法238
11.2 數(shù)據(jù)模型與數(shù)據(jù)建模240
11.3 IDEF1X數(shù)據(jù)建模方法242
11.3.1 數(shù)據(jù)模型的結構243
11.3.2 邏輯模型243
11.3.3 物理模型244
11.4 IDEF1X的語法和語義244
11.5 IDEF1X建模過程250
11.5.1 階段0--設計的開始250
11.5.2 階段1--定義實體251
11.5.3 階段2--定義聯(lián)系252
11.5.4 階段3--定義鍵253
11.5.5 階段4--定義屬性254
11.6 ERwin數(shù)據(jù)建模254
11.6.1 ERwin的工作空間254
11.6.2 建立實體聯(lián)系255
11.6.3 兩個實體的多個聯(lián)系的處理256
11.6.4 遞歸聯(lián)系258
11.6.5 分類聯(lián)系258
11.6.6 使用域簡化數(shù)據(jù)類型的設置260
11.6.7 將數(shù)據(jù)模型導入到數(shù)據(jù)庫261
11.7 合同管理系統(tǒng)數(shù)據(jù)建模263
11.7.1 合同管理應用需求263
11.7.2 合同管理應用系統(tǒng)功能需求265
11.7.3 實體的確定267
11.7.4 聯(lián)系的確定267
11.7.5 確定屬性268
11.8 小結269
習題269
第12章 數(shù)據(jù)庫編程271
12.1 Transact-SQL271
12.1.1 Transact-SQL元素272
12.1.2 過程的類型275
12.1.3 變量和參數(shù)277
12.1.4 控制流程277
12.1.5 錯誤處理278
12.2 Transact-SQL游標280
12.2.1 游標的基本概念與操作281
12.2.2 處理游標中的行283
12.3 Transact-SQL存儲過程285
12.3.1 什么是存儲過程285
12.3.2 存儲過程的類型286
12.3.3 設計與實現(xiàn)存儲過程287
12.4 Transact-SQL用戶定義函數(shù)290
12.4.1 多語句表值函數(shù)292
12.4.2 標量函數(shù)293
12.4.3 內聯(lián)表值函數(shù)294
12.5 Transact-SQL觸發(fā)器295
12.5.1 Transact-SQL觸發(fā)器基本概念295
12.5.2 DML觸發(fā)器296
12.5.3 deleted表和inserted表297
12.5.4 AFTER觸發(fā)器297
12.5.5 INSTEAD OF觸發(fā)器300
12.6 ADO.NET303
12.6.1 數(shù)據(jù)提供程序306
12.6.2 數(shù)據(jù)集308
12.7 小結309
習題310
第13章 數(shù)據(jù)庫的存儲結構311
13.1 數(shù)據(jù)庫存儲設備311
13.1.1 物理存儲設備概述311
13.1.2 存儲器的層次結構312
13.1.3 數(shù)據(jù)庫的存儲體系313
13.1.4 磁盤容錯技術314
13.2 記錄的存儲結構315
13.3 文件的存儲結構317
13.3.1 無序文件318
13.3.2 順序文件319
13.3.3 散列文件320
13.3.4 多表聚集文件322
13.4 索引文件323
13.4.1 索引概述323
13.4.2 稀疏索引和稠密索引325
13.4.3 聚集索引和輔助索引325
13.4.4 ?B?+樹索引327
13.4.5 散列索引330
13.5 典型DBMS的存儲結構331
13.5.1 SQL Server的存儲結構331
13.5.2 Oracle的存儲結構332
13.6 小結333
習題334
第14章 分布式數(shù)據(jù)庫系統(tǒng)335
14.1 分布式數(shù)據(jù)庫系統(tǒng)概述335
14.1.1 分布式數(shù)據(jù)庫系統(tǒng)的定義335
14.1.2 分布式數(shù)據(jù)系統(tǒng)的基本特征336
14.1.3 分布式數(shù)據(jù)庫系統(tǒng)的組成337
14.1.4 分布式數(shù)據(jù)庫的模式結構338
14.1.5 分布式數(shù)據(jù)庫系統(tǒng)的分類339
14.2 數(shù)據(jù)分布和分布透明性339
14.2.1 數(shù)據(jù)分片339
14.2.2 數(shù)據(jù)分布340
14.2.3 分布透明性341
14.3 分布式查詢處理和優(yōu)化343
14.3.1 分布式查詢的分類343
14.3.2 分布式查詢處理過程344
14.3.3 分布式查詢優(yōu)化345
14.4 分布式事務管理347
14.4.1 分布式事務恢復348
14.4.2 分布式并發(fā)控制350
14.5 分布式目錄管理352
14.6 小結352
習題353
第15章 對象和對象關系數(shù)據(jù)庫354
15.1 概述354
15.2 面向對象數(shù)據(jù)庫356
15.2.1 面向對象數(shù)據(jù)模型357
15.2.2 面向對象數(shù)據(jù)庫語言359
15.2.3 面向對象數(shù)據(jù)庫系統(tǒng)362
15.3 對象關系數(shù)據(jù)庫363
15.3.1 對象關系數(shù)據(jù)模型363
15.3.2 對象關系數(shù)據(jù)庫系統(tǒng)368
15.4 小結368
習題368
第16章 多媒體數(shù)據(jù)庫369
16.1 多媒體數(shù)據(jù)庫的特點369
16.2 系統(tǒng)體系結構370
16.2.1 多媒體數(shù)據(jù)庫系統(tǒng)的層次結構370
16.2.2 多媒體數(shù)據(jù)庫系統(tǒng)的組織結構371
16.3 多媒體數(shù)據(jù)模型373
16.3.1 數(shù)據(jù)模型的需求373
16.3.2 通用數(shù)據(jù)模型373
16.4 多媒體數(shù)據(jù)的查詢374
16.5 特征提取、索引和相似性度量376
16.6 QoS保證377
16.7 多媒體數(shù)據(jù)庫的實現(xiàn)378
16.8 其他問題380
16.9 小結381
習題382
第17章 數(shù)據(jù)庫新技術與新應用383
17.1 數(shù)據(jù)庫新技術384
17.1.1 面向對象數(shù)據(jù)庫384
17.1.2 實時數(shù)據(jù)庫385
17.1.3 主動數(shù)據(jù)庫386
17.1.4 分布式數(shù)據(jù)庫386
17.1.5 數(shù)據(jù)挖掘387
17.1.6 多媒體數(shù)據(jù)庫387
17.2 并行數(shù)據(jù)庫387
17.2.1 并行數(shù)據(jù)庫系統(tǒng)的體系結構387
17.2.2 并行處理技術389
17.2.3 商用并行數(shù)據(jù)庫系統(tǒng)的并行策略390
17.3 主動數(shù)據(jù)庫391
17.4 空間數(shù)據(jù)庫395
17.4.1 基本概念395
17.4.2 空間數(shù)據(jù)操作398
17.4.3 空間數(shù)據(jù)建模398
17.4.4 空間數(shù)據(jù)索引400
17.5 XML數(shù)據(jù)庫401
17.5.1 原生XML數(shù)據(jù)庫402
17.5.2 XML數(shù)據(jù)庫的研究問題405
17.6 小結407
習題407
參考文獻408