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