本書從數據庫的基本理論知識出發(fā),通過豐富的實例介紹數據庫的基本操作、管理、維護、設計過程以及開發(fā)應用等。全書分為五篇。前兩篇為基礎理論篇、數據庫設計理論,主要介紹數據庫的基本原理與基礎知識,以及數據模型相關理論,數據庫的設計優(yōu)化理論以及數據庫的設計與實施過程;第三篇介紹數據庫安全保護理論和操作;第四篇為基礎應用篇,介紹SQL Server 2012的基本功能及操作。第五篇為高級應用篇,詳細介紹了T-SQL的編程知識。每章還配有大量的操作實例和習題,凡是加了底紋的代碼,都可以直接在查詢窗口運行。附錄中還配有十五個實驗及一個課程作業(yè),可作為實驗課的任務。本書可作為大中專院校本科生或研究生相關專業(yè)網絡數據庫、數據庫應用、數據庫原理等課程的教材,可根據專業(yè)需要選擇部分篇章進行教學,其它的篇章也為學生自學或提高的內容。也可供從事計算機軟件開發(fā)與應用的科研人員、工程技術人員以及其他有關人員參考。對于非計算機專業(yè)的學生,建議先講解基礎應用篇,再選講前面的理論篇。對于重SQL Server操作的課程,可以只講基礎應用篇和高級應用篇,基本包含了項目開發(fā)所需的數據庫知識。對于重數據庫原理的課程,可以讓學生邊自學基礎應用篇,邊講解前三篇的內容。
前 言數據庫技術是計算機科學技術中發(fā)展快的領域之一,也是應用廣泛的技術之一,它已成為計算機信息管理系統(tǒng)與應用系統(tǒng)的核心技術和重要基礎。數據庫技術從20世紀60年代中期產生到今天已有近六十年的歷史,經歷了三代演變,造就了C.W.Bachman、E.F.Codd和James Gray三位圖靈獎獲得者;發(fā)展了以數據建模和DBMS(數據庫管理系統(tǒng))核心技術為主、內容豐富的一門學科;帶動了一個巨大的軟件產業(yè)DBMS產品及其相關工具和解決方案,五十多年來的輝煌。從70年代后期開始,國外各大學先后把數據庫列為計算機科學與技術專業(yè)的一門重要課程。我國各高等院校從80年代開始,也把數據庫作為計算機專業(yè)的主要課程之一,83年教育部部屬高校計算機科學與技術專業(yè)教學方案將數據庫系統(tǒng)原理列為四年制本科的必修課程。目前,數據庫系統(tǒng)原理及應用已經成為計算機科學技術及其相關專業(yè)的專業(yè)基礎課程。針對數據庫技術的進展和我國數據庫應用水平的提高,在借鑒前人經驗和總結實際教學的前提下,并順應數據庫應用的發(fā)展,我們對《數據庫系統(tǒng)原理及應用》進行了改版。與第1版相比,第二版中教學和練習平臺換成了SQL Server 2012,并且將例子統(tǒng)一成了xsxk的數據庫的操作,這樣方便讀者模仿,還有少量例子使用比較經典數據庫pubs,為了方便讀者練習,我們將這兩個數據庫的結構和部分數據列舉在附錄中;每章還配有一定數量的習題以幫助讀者加深理解,大部分章節(jié)配了操作實例,凡是加了底紋的代碼,都可以直接在查詢窗口運行。附錄中還配有十五個實驗及一個課程作業(yè),可作為上機實驗的任務和期末課程作業(yè),減輕老師的工作量。通過參考國內外的新文獻,我們還將一些概念和名稱進行了修改,或者并列地列舉了不同的表述,這樣當讀者在閱讀別的文獻時,不至于迷;蛘`會。另外,我們對全書的模塊進行了重新劃分,內容也進行重新分配,顯得更精細和合理,也方便教學時對內容的選擇。全書分為五篇。第1篇為基礎理論篇,主要介紹數據庫的基本原理與基礎知識,以及數據模型相關理論,重點介紹關系數據相關理論及查詢優(yōu)化及其相關理論。第二篇,數據庫的設計優(yōu)化理論以及數據庫的設計與實施過程,從這一章,讀者將學到數據庫分析設計的相關知識,并能完成簡單的數據庫的設計與實現。第三篇介紹數據庫系統(tǒng)安全與保護的相關原理以及實現安全與保護的相關操作,如:數據庫的安全管理、數據的完整性、備份和恢復管理功能,學完這章,讀者對數據庫原理就有了基本的認識了,而且懂得了數據庫日常管理的知識。第四篇為基礎應用篇,以SQL Server 2012為例,介紹SQL Server 2012的基本功能及操作、使用Transact-SQL(以下簡稱:T-SQL)語句創(chuàng)建和管理數據庫、表、索引和視圖,并重點介紹了各種查詢,使初學者能快速了解數據庫的主要操作。第五篇為高級應用篇,詳細介紹了T-SQL的編程基礎、創(chuàng)建與管理存儲過程、觸發(fā)器和自定義函數及游標等編程知識,學完這一章讀者將懂得數據庫開發(fā)的知識。每章還配有一定數量的習題以幫助讀者加深理解,大部分章節(jié)配了大量的操作實例,凡是加了底紋的代碼,都可以直接在查詢窗口運行。我們在本書的編寫過程中,查閱了國內外大量數據庫研究成果和文獻,力求把數據庫領域的新理論、新技術和新方法納入本書,使之既包括數據庫系統(tǒng)的基本理論、概念和技術,也能夠反映數據庫領域的新進展。但是,由于才疏學淺,時間緊迫,不足之處在所難免,我們會在每次重印時,及時改正已發(fā)現的錯誤,真心希望使用本書的老師和同學不吝指教。我們的Email地址:wlp@hunnu.edu.cn。編者
目錄
第一篇
基礎理論 1
第1章
數據庫技術概述 2
1.1 數據庫的相關概念 2
1.1.1 數據 2
1.1.2 數據庫 2
1.1.3 數據庫管理系統(tǒng) 3
1.1.4 數據庫系統(tǒng) 4
1.1.5 數據庫技術 4
1.2 數據庫管理系統(tǒng)概述 5
1.2.1 數據庫管理系統(tǒng)的目標 5
1.2.2 數據庫管理系統(tǒng)的功能 6
1.2.3 用戶訪問數據庫的過程 7
1.2.4 數據庫管理和數據庫管理員 8
1.3 數據庫系統(tǒng)概述 9
1.3.1 數據庫系統(tǒng)的微觀結構 10
1.3.2 數據庫系統(tǒng)的宏觀結構 13
1.4 數據庫技術概述 15
1.4.1 數據庫技術的發(fā)展歷史 15
1.4.2 *數據庫技術的研究與應用領域和發(fā)展方向 18
1.5 習題 22
第2章
數據模型 23
2.1 數據描述 23
2.1.1 數據的三種范疇 23
2.1.2 實體間的聯系 25
2.1.3 三種世界的概念轉換 26
2.2 數據模型 27
2.2.1 數據模型概述 27
2.2.2 數據模型的三要素 28
2.3 概念模型與E-R表示方法 29
2.3.1 概念模型的基本概念 29
2.3.2 概念模型的E-R表示方法 30
2.3.3 概念數據模型實例 31
2.4 邏輯數據模型 33
2.4.1 層次模型 34
2.4.2 網狀模型 35
2.4.3 關系模型 37
2.4.4 面向對象模型 39
2.5 習題 40
第3章
關系數據庫理論及查詢優(yōu)化 41
3.1 關系數據庫 41
3.1.1 關系模型的組成 41
3.1.2 關系模式的形式化定義 41
3.2 關系代數 42
3.2.1 五種基本運算 43
3.2.2 關系代數的其他操作 45
3.3 *關系查詢優(yōu)化 47
3.3.1 關系系統(tǒng)及其查詢優(yōu)化 47
3.3.2 查詢優(yōu)化的一般準則 49
3.3.3 關系代數等價變換規(guī)則 50
3.3.4 關系代數表達式的優(yōu)化算法 51
3.4 習題 53
第二篇
設計理論 54
第4章
關系模式的規(guī)范化 55
4.1 問題的提出 55
4.1.1 關系模式 55
4.1.2 關系 55
4.1.3 插入、刪除、更新異常 57
4.2 關系模式的函數依賴 57
4.2.1 函數依賴 58
4.2.2 鍵(Key) 59
4.2.3 函數依賴的邏輯蘊含 60
4.3 關系模式的規(guī)范化 66
4.3.1 第一范式(1NF) 66
4.3.2 第二范式(2NF) 67
4.3.3 第三范式(3NF) 68
4.3.4 BCNF范式(BCNF) 69
4.3.5 多值依賴與第四范式 70
4.3.6 各范式之間的關系 72
4.4 *關系模式的分解特性 73
4.4.1 關系模式的分解 73
4.4.2 分解的無損連接性 74
4.4.3 關系模式分解算法 79
4.5 *關系模式的優(yōu)化 83
4.5.1 水平分解 84
4.5.2 垂直分解 84
4.6 習題 85
第5章
數據庫的設計與實施 87
5.1 數據庫設計概述 87
5.1.1 數據庫設計的特點 87
5.1.2 數據庫設計方法 88
5.1.3 數據庫設計的步驟 89
5.2 數據庫規(guī)劃 90
5.3 需求分析 91
5.3.1 需求分析的任務 91
5.3.2 需求分析的方法 91
5.3.3 需求分析的步驟 92
5.4 概念結構設計 95
5.4.1 設計各局部應用的E-R模型 96
5.4.2 全局E-R模型的設計 97
5.5 邏輯結構設計 98
5.5.1 E-R圖向關系模型的轉換 99
5.5.2 關系模型向特定的RDBMS的轉換 100
5.5.3 邏輯模式的優(yōu)化 100
5.5.4 外模式的設計 102
5.6 物理結構設計 103
5.6.1 關系模式存取方法選擇 104
5.6.2 確定系統(tǒng)的存儲結構 107
5.7 數據庫實施 108
5.8 數據庫運行和維護 109
5.9 數據庫設計實例 圖書管理系統(tǒng)數據庫設計 110
5.10 習題 112
第三篇
安全與保護理論 113
第6章
數據庫的安全性控制 114
6.1 數據庫安全性控制概述 114
6.2 SQL Sever的安全性措施概述 115
6.3 SQL Server身份驗證 116
6.3.1 身份驗證概述 116
6.3.2 身份驗證方式設置 117
6.3.3 登錄名管理 119
6.4 SQL Server數據庫身份驗證 122
6.5 SQL Server數據庫對象安全驗證 123
6.5.1 角色 124
6.5.2 授權的主體 126
6.5.3 架構 127
6.5.4 授權的安全對象 128
6.5.5 權限操作 129
6.5.6 命令行方式進行權限管理 131
6.6 習題 133
第7章
數據完整性 134
7.1 完整性約束條件 134
7.2 完整性控制 136
7.3 SQL Sever的完整性的實現 139
7.4 習題 143
第8章
事務 144
8.1 事務的概念 144
8.2 事務調度 146
8.3 事務隔離級別 148
8.4 SQL Server 中的事務定義 151
8.5 習題 153
第9章
并發(fā)控制 154
9.1 封鎖技術 154
9.2 事務隔離級別與封鎖規(guī)則 155
9.3 封鎖的粒度 156
9.4 *封鎖帶來的問題 158
9.5 *兩段鎖協議 159
9.6 *樂觀并發(fā)控制與悲觀并發(fā)控制 160
9.7 *SQL Server的并發(fā)控制 160
9.8 習題 162
第10章
數據庫的恢復 163
10.1 數據庫恢復技術 163
10.1.1 故障的種類 163
10.1.2 恢復的實現技術 164
10.1.3 SQL Server基于日志的恢復策略 166
10.1.4 SQL Server檢查點 168
10.2 SQL Server的備份與恢復 169
10.3 習題 174
第四篇
基礎應用 175
第11章 SQL SERVER 2012基本知識 176
11.1 SQL Server 2012發(fā)展簡介 176
11.2 SQL Server 2012組件和管理工具 177
11.2.1 服務器組件 177
11.2.2 管理工具 178
11.2.3 文檔 178
11.3 SQL Server 2012服務器的管理 179
11.3.1 啟動停止服務器 179
11.3.2 配置管理器 180
11.3.3 服務器的注冊 180
11.4 習題 181
第12章
數據庫操作 182
12.1 SQL Server實例 182
12.2 數據庫基本概念 182
12.2.1 物理數據庫 182
12.2.2 邏輯數據庫 184
12.2.3 系統(tǒng)數據庫和用戶數據庫 186
12.3 創(chuàng)建數據庫 187
12.3.1 管理工具交互方式創(chuàng)建數據庫 187
12.3.2 命令行方式創(chuàng)建數據庫 189
12.4 修改數據庫 190
12.4.1 管理工具交互方式修改數據庫 190
12.4.2 命令行方式修改數據庫 191
12.5 刪除數據庫 192
12.5.1 交互方式刪除數據庫 192
12.5.2 命令行方式刪除數據庫 192
12.6 數據庫的分離和附加 192
12.6.1 分離數據庫 193
12.6.2 附加數據庫 193
12.7 數據庫的快速備份與恢復 194
12.8 *數據庫的收縮 195
12.8.1 手動收縮 195
12.8.2 自動收縮 196
12.9 * 移動數據庫 196
12.10 *數據庫快照 197
12.10.1 數據庫快照的優(yōu)點 197
12.10.2 數據庫快照的操作 198
12.11 習題 198
第13章
表和表數據操作 200
13.1 表概念 200
13.1.1 表結構 200
13.1.2 表類型 200
13.2 創(chuàng)建表 202
13.2.1 列的數據類型 202
13.2.2 列的其他屬性 206
13.2.3 交互方式創(chuàng)建表 206
13.2.4 命令行方式創(chuàng)建表 207
13.3 修改表 208
13.3.1 交互方式修改表 208
13.3.2 命令行方式修改表 210
13.4 刪除表 211
13.5 表數據操作 211
13.5.1 交互方式操作表數據 211
13.5.2 命令行方式操作表數據 212
13.6 習題 214
第14章
數據查詢 215
14.1 數據查詢語句 215
14.1.1 投影列 216
14.1.2 選擇行 217
14.1.3 連接 219
14.2 排序 221
14.3 簡單統(tǒng)計 222
14.4 分組統(tǒng)計 223
14.5 子查詢 224
14.5.1 無關子查詢 224
14.5.2 相關子查詢 225
14.5.3 子查詢作數據項 226
14.6 集合操作 227
14.7 存儲查詢結果 228
14.8 習題 229
第15章
視 圖 230
15.1 視圖概述 230
15.2 視圖的類型 230
15.3 創(chuàng)建視圖 231
15.4 查詢視圖 233
15.5 可更新視圖 233
15.6 修改視圖定義 234
15.7 刪除視圖 235
15.8 視圖小結 236
15.8.1 創(chuàng)建視圖準則 236
15.8.2 視圖的優(yōu)點和作用 236
15.9 習題 237
第16章
數據完整性和索引 238
16.1 數據完整性 238
16.1.1 PRIMARY KEY主鍵約束 238
16.1.2 UNIQUE唯一性約束 240
16.1.3 FOREIGN KEY引用完整性約束 241
16.1.4 CHECK檢查約束 242
16.2 索引 244
16.2.1 索引的分類 244
16.2.2 創(chuàng)建索引 245
16.2.3 查看索引 246
16.2.4 修改索引 247
16.2.5 刪除索引 247
16.2.6 其他類型索引 247
16.2.7 優(yōu)化索引 249
16.3 數據庫關系圖 251
16.4 習題 253
第五篇
高級應用 254
第17章 T-SQL語言 255
17.1 SQL語言基本元素 255
17.1.1 T-SQL語言簡介 255
17.1.2 TSQL語言的語法約定 255
17.1.3 標識符 256
17.1.4 常量和變量 256
17.1.5 注釋 258
17.1.6 運算符 258
17.1.7 函數 259
17.1.8 表達式 262
17.2 流程控制語句 264
17.2.1 SET語句 264
17.2.2 BEGIN END語句 265
17.2.3 IF-ELSE語句 266
17.2.4 WHILE、BREAK、CONTINUE語句 266
17.2.5 RETURN語句 267
17.2.6 WAITFOR語句 267
17.2.7 GOTO語句 267
17.2.8 TRY CATCH語句 267
17.2.9 GO語句 268
17.2.10 EXECUTE語句 268
17.2.11 T-SQL語句的解析、編譯和執(zhí)行 268
17.3 數據定義、操縱及控制語言 269
17.3.1 數據定義語言 269
17.3.2 數據操縱語言 270
17.3.3 數據控制語言 272
17.4 習題 274
第18章
存儲過程、自定義函數、觸發(fā)器和游標 275
18.1 存儲過程 275
18.1.1 存儲過程概述 275
18.1.2 創(chuàng)建存儲過程 275
18.1.3 調用存儲過程 276
18.1.4 獲取存儲過程信息 277
18.1.5 修改和重命名存儲過程 277
18.1.6 重新編譯存儲過程 278
18.1.7 刪除存儲過程 278
18.2 用戶定義函數 279
18.2.1 標量值函數 279
18.2.2 內嵌表值函數 279
18.2.3 多語句表值函數 280
18.2.4 修改和重命名用戶定義函數 280
18.2.5 刪除用戶定義函數 281
18.3 觸發(fā)器 281
18.3.1 觸發(fā)器概述 281
18.3.2 觸發(fā)器的類型 282
18.3.3 觸發(fā)器的設計規(guī)則 283
18.3.4 使用觸發(fā)器 285
18.3.5 啟用、禁用和刪除觸發(fā)器 286
18.3.6 觸發(fā)器的用途 287
18.4 游標 288
18.4.1 游標概述 288
18.4.2 游標的類型 288
18.4.3 游標的使用 290
18.5 習題 293
附錄 295
1. 本書中示例數據庫的結構及數據 295
2. 上機實驗題 298
3. 課程設計要求 305
參考文獻 307