本書主要由四部分內(nèi)容組成:第壹部分主要介紹數(shù)據(jù)庫理論,包括數(shù)據(jù)模型、關系代數(shù)、規(guī)范化理論、數(shù)據(jù)庫設計、事務與并發(fā)控制;第二部分主要介紹數(shù)據(jù)庫相關的一些內(nèi)容,包括創(chuàng)建數(shù)據(jù)庫、創(chuàng)建數(shù)據(jù)庫對象、數(shù)據(jù)查詢、數(shù)據(jù)修改等;第三部分主要介紹數(shù)據(jù)庫的維護性工作,包括安全管理、備份和恢復數(shù)據(jù)庫;第四部分介紹處理非結構化數(shù)據(jù)的新型數(shù)據(jù)庫NoSQL的一些基本概念。本書采用的實踐平臺為SQLServer2012,該軟件具有界面友好、使用方便、功能全面的特點,非常適合學生作為數(shù)據(jù)庫實踐平臺使用。本書內(nèi)容全面、實例豐富,并為教師配備了電子教案,方便教師開展教學工作。本書可作為高等院校計算機專業(yè)以及信息管理等相關專業(yè)本科生的數(shù)據(jù)庫教材,也可作為相關人員學習數(shù)據(jù)庫知識的參考書。
數(shù)據(jù)庫技術起源于20世紀60年代末,經(jīng)過幾十余年的迅速發(fā)展,已經(jīng)形成一套較完整的理論體系,產(chǎn)生了一大批商用軟件產(chǎn)品。隨著數(shù)據(jù)庫技術的推廣使用,計算機應用已深入到國民經(jīng)濟和社會生活的各個領域,這些應用一般都以數(shù)據(jù)庫技術及其應用為基礎和核心。因此,數(shù)據(jù)庫技術與操作系統(tǒng)一起構成信息處理的平臺已成為業(yè)界的共識。在計算機應用中,數(shù)據(jù)存儲和數(shù)據(jù)處理是計算機最基本的功能,數(shù)據(jù)庫技術為人們提供了科學和高效地管理數(shù)據(jù)的方法。從某種意義上講,數(shù)據(jù)庫技術的教學成為計算機專業(yè)教學的重中之重,數(shù)據(jù)庫課程也成為很多高校計算機專業(yè)的重點核心課程。目前市場上數(shù)據(jù)庫類的教科書非常之多,每本書各有其特色,本書博采眾家之所長,在完整包括數(shù)據(jù)庫基礎理論知識的同時,加入了將數(shù)據(jù)庫知識與具體數(shù)據(jù)庫管理系統(tǒng)結合的內(nèi)容,以方便學生在實踐中更好地掌握所學知識。
本書具有如下特色。
內(nèi)容安排求全、求新。本教材從數(shù)據(jù)庫基礎理論、數(shù)據(jù)庫設計、數(shù)據(jù)庫發(fā)展、數(shù)據(jù)庫實踐幾個方面全面闡述了數(shù)據(jù)庫技術的應用體系。在選擇實踐平臺時,充分考慮軟件的流行性和易獲得性,后臺數(shù)據(jù)庫管理系統(tǒng)選用的是SQL Server 2012,它是目前應用范圍廣泛且功能完善、操作界面友好的數(shù)據(jù)庫管理系統(tǒng)。
理論闡述求精、求易。數(shù)據(jù)庫基礎理論較為抽象,但又是實踐的基礎,沒有扎實的基本功是無法靈活運用并付諸實踐的。因而基礎理論的教學歷來是重點和難點。在理論闡釋方面,本書力求深入淺出,突出概念和技術的直觀意義,并用大量圖表和示例幫助理解,啟發(fā)思維,使讀者不僅能深刻理解相關理論的來源、思路、適用范圍和條件,并能靈活運用,舉一反三。
理論實踐絲絲相扣。知之明也,因知進行,理論和技術的學習是為了更好地指導實踐。本書的每部分內(nèi)容根據(jù)相關理論和應用需求進行了精當?shù)倪x取,不以全面泛泛取勝,但求精而實用。本書不但以圖例的形式細致地描述了實踐步驟,還給出執(zhí)行結果,使學生能夠以行驗知,以行證知,最后達到知行并進,相資為用,為進一步的學習和實踐打下良好的基礎。同時,各章后都有大量的習題,供讀者驗證自己對知識的掌握程度。在實踐部分除概念題之外,還附有上機練習題,以方便讀者上機實踐。
相對于第2版,第3版主要修訂的內(nèi)容如下。
1)刪去了第2版中客戶端編程(ASP.NET)部分的全部內(nèi)容。主要是基于這樣的考慮:一方面,學時的減少,使得有些內(nèi)容不得不放棄;另一方面,客戶端訪問數(shù)據(jù)庫的技術不斷發(fā)展,一般高校都開設有專門介紹客戶端應用編程的課程,學生在這些課程中學習數(shù)據(jù)庫應用編程的新知識更加合適。
2)將實踐平臺從SQL Server 2005升級到SQL Server 2012。
3)將數(shù)據(jù)類型全部更新為SQL Server 2012所支持的。
4)將第2版的第10章“SQL Server基礎”移至第4章,以更利于講解和實踐。
5)將“主碼”改為“主鍵”,“外碼”改為“外鍵”,“候選碼”改為“候選鍵”,更符合當下普遍使用的術語。
6)將第2版的第11章“創(chuàng)建數(shù)據(jù)庫”內(nèi)容移至第4章,使得知識內(nèi)容更加合理(先建庫,再建表)。
7)交換了“數(shù)據(jù)庫設計”與“事務與并發(fā)控制”兩章順序,更利于對數(shù)據(jù)庫設計中事務設計的理解。
8)在“數(shù)據(jù)操作語句”部分增加了兩項內(nèi)容:將查詢結果保存到新表中;查詢結果的并、交、差運算。
9)增加了對NoSQL數(shù)據(jù)庫的介紹。
作者在修訂本書過程中得到了機械工業(yè)出版社華章公司姚蕾等人的大力支持和鼓勵,是他們認真的工作態(tài)度以及一直以來的熱情幫助,鼓勵著我堅持完成此教材的修訂工作。在此,對機械工業(yè)出版社的全體人員表示誠摯的感謝。同時非常感謝我們數(shù)據(jù)庫課程組的全體同仁:殷旭、谷葆春、李寶安、岳清、張良、劉京志、張鴻斌、梁琦、韓麥燕老師。最后感謝我的學生們,是他們對知識的渴求,對教師的尊重讓我感受到了自己的責任和價值。師者之尊,緣自“用心”。
真誠地希望讀者和同行們對本書提出寶貴的意見。我深知教學探索的道路沒有止境,教師是我的職業(yè),但是在人生的道路上我永遠是一名學生。
何玉潔2017年3月
目 錄
前言
教學建議
第1章 數(shù)據(jù)庫概述 1
1.1 一些基本概念 1
1.1.1 數(shù)據(jù) 1
1.1.2 數(shù)據(jù)庫 2
1.1.3 數(shù)據(jù)庫管理系統(tǒng) 2
1.1.4 數(shù)據(jù)庫系統(tǒng) 3
1.2 數(shù)據(jù)管理技術的發(fā)展 3
1.2.1 文件管理 3
1.2.2 數(shù)據(jù)庫管理 6
1.3 數(shù)據(jù)獨立性 9
1.4 數(shù)據(jù)庫系統(tǒng)的組成 10
小結 11
習題 11
第2章 數(shù)據(jù)模型與數(shù)據(jù)庫系統(tǒng)結構 12
2.1 數(shù)據(jù)和數(shù)據(jù)模型 12
2.1.1 數(shù)據(jù)與信息 12
2.1.2 數(shù)據(jù)模型 13
2.2 概念層數(shù)據(jù)模型 14
2.2.1 基本概念 14
2.2.2 實體-聯(lián)系模型 15
2.3 組織層數(shù)據(jù)模型 17
2.3.1 層次數(shù)據(jù)模型 17
2.3.2 網(wǎng)狀數(shù)據(jù)模型 19
2.3.3 關系數(shù)據(jù)模型 20
2.4 數(shù)據(jù)庫系統(tǒng)結構 21
2.4.1 模式的基本概念 21
2.4.2 三級模式結構 22
2.4.3 模式映像與數(shù)據(jù)獨立性 23
2.5 數(shù)據(jù)庫管理系統(tǒng) 24
小結 26
習題 26
第3章 關系數(shù)據(jù)庫 27
3.1 關系數(shù)據(jù)模型的組成 27
3.1.1 關系數(shù)據(jù)結構 27
3.1.2 關系操作 27
3.1.3 數(shù)據(jù)完整性約束 29
3.2 關系模型的基本術語 30
3.3 關系模型的形式化定義 31
3.3.1 形式化定義 31
3.3.2 對關系的限定 33
3.4 關系模型的完整性約束 33
3.4.1 實體完整性 33
3.4.2 參照完整性 35
3.4.3 用戶定義的完整性 36
3.5 關系代數(shù) 36
3.5.1 傳統(tǒng)的集合運算 37
3.5.2 專門的關系運算 39
3.5.3 關系代數(shù)操作總結 45
小結 46
習題 46
第4章 SQL Server 2012基礎 48
4.1 SQL Server 2012預備知識 48
4.1.1 主要服務器組件 48
4.1.2 管理工具 49
4.1.3 主要版本 49
4.1.4 軟/硬件要求 50
4.1.5 實例 51
4.2 安裝SQL Server 2012 52
4.3 管理工具 60
4.3.1 SQL Server配置管理器 60
4.3.2 SQL Server Management Studio 62
4.4 創(chuàng)建數(shù)據(jù)庫 65
4.4.1 SQL Server數(shù)據(jù)庫的組成 65
4.4.2 數(shù)據(jù)庫文件的屬性 66
4.4.3 創(chuàng)建數(shù)據(jù)庫的圖形化方法 66
小結 69
習題 70
上機練習 70
第5章 數(shù)據(jù)類型及關系表創(chuàng)建 71
5.1 基本概念 71
5.1.1 SQL的發(fā)展 71
5.1.2 SQL的特點 71
5.1.3 SQL功能概述 72
5.2 SQL Server提供的主要數(shù)據(jù)類型 72
5.2.1 數(shù)字類型 73
5.2.2 字符串類型 73
5.2.3 日期和時間類型 75
5.3 關系表的創(chuàng)建與維護 75
5.3.1 創(chuàng)建關系表 76
5.3.2 刪除關系表 78
5.3.3 修改關系表 78
5.4 數(shù)據(jù)完整性 79
5.4.1 完整性約束條件的作用對象 79
5.4.2 實現(xiàn)數(shù)據(jù)完整性 79
小結 81
習題 81
上機練習 82
第6章 數(shù)據(jù)操作語句 83
6.1 數(shù)據(jù)查詢 83
6.1.1 查詢語句的基本結構 84
6.1.2 單表查詢 84
6.1.3 多表連接查詢 101
6.1.4 使用TOP限制結果集 107
6.1.5 子查詢 109
6.1.6 將查詢結果保存到新表中 118
6.1.7 查詢結果的并、交、差運算 119
6.2 數(shù)據(jù)更改 122
6.2.1 插入數(shù)據(jù) 122
6.2.2 更新數(shù)據(jù) 122
6.2.3 刪除數(shù)據(jù) 124
小結 125
習題 126
上機練習 126
第7章 索引和視圖 128
7.1 索引 128
7.1.1 基本概念 128
7.1.2 索引的存儲結構及分類 129
7.1.3 創(chuàng)建和刪除索引 134
7.2 視圖 135
7.2.1 基本概念 135
7.2.2 定義視圖 135
7.2.3 通過視圖查詢數(shù)據(jù) 138
7.2.4 修改和刪除視圖 139
7.2.5 視圖的作用 140
小結 141
習題 141
第8章 關系數(shù)據(jù)庫規(guī)范化理論 143
8.1 函數(shù)依賴 143
8.1.1 基本概念 143
8.1.2 一些術語和符號 144
8.1.3 為什么要討論函數(shù)依賴 144
8.2 關系規(guī)范化 146
8.2.1 關系模式中的鍵 146
8.2.2 范式 147
8.3 關系模式的分解準則 151
小結 153
習題 154
第9章 事務與并發(fā)控制 155
9.1 事務 155
9.1.1 基本概念 155
9.1.2 事務的特征 156
9.1.3 事務處理模型 156
9.2 并發(fā)控制 157
9.2.1 并發(fā)控制概述 157
9.2.2 并發(fā)控制措施 159
9.2.3 封鎖協(xié)議 160
9.2.4 活鎖和死鎖 162
9.2.5 并發(fā)調(diào)度的可串行性 164
9.2.6 兩段鎖協(xié)議 165
小結 166
習題 166
第10章 數(shù)據(jù)庫設計 168
10.1 數(shù)據(jù)庫設計概述 168
10.1.1 數(shù)據(jù)庫設計的特點 169
10.1.2 數(shù)據(jù)庫設計方法概述 169
10.1.3 數(shù)據(jù)庫設計的全過程 170
10.2 數(shù)據(jù)庫需求分析 171
10.2.1 需求分析的任務 171
10.2.2 需求分析的方法 172
10.3 數(shù)據(jù)庫結構設計 173
10.3.1 概念結構設計 173
10.3.2 邏輯結構設計 176
10.3.3 物理結構設計 180
10.4 數(shù)據(jù)庫行為設計 182
10.4.1 功能分析 183
10.4.2 功能設計 183
10.4.3 事務設計 184
10.5 數(shù)據(jù)庫實施 184
10.6 數(shù)據(jù)庫的運行和維護 185
小結 186
習題 186
第11章 存儲過程和觸發(fā)器 188
11.1 變量及流程控制語句 188
11.1.1 變量 188
11.1.2 流程控制語句 189
11.2 存儲過程 190
11.2.1 基本概念 190
11.2.2 創(chuàng)建和執(zhí)行存儲