本書(shū)主要由四部分內(nèi)容組成:第壹部分主要介紹數(shù)據(jù)庫(kù)理論,包括數(shù)據(jù)模型、關(guān)系代數(shù)、規(guī)范化理論、數(shù)據(jù)庫(kù)設(shè)計(jì)、事務(wù)與并發(fā)控制;第二部分主要介紹數(shù)據(jù)庫(kù)相關(guān)的一些內(nèi)容,包括創(chuàng)建數(shù)據(jù)庫(kù)、創(chuàng)建數(shù)據(jù)庫(kù)對(duì)象、數(shù)據(jù)查詢、數(shù)據(jù)修改等;第三部分主要介紹數(shù)據(jù)庫(kù)的維護(hù)性工作,包括安全管理、備份和恢復(fù)數(shù)據(jù)庫(kù);第四部分介紹處理非結(jié)構(gòu)化數(shù)據(jù)的新型數(shù)據(jù)庫(kù)NoSQL的一些基本概念。本書(shū)采用的實(shí)踐平臺(tái)為SQLServer2012,該軟件具有界面友好、使用方便、功能全面的特點(diǎn),非常適合學(xué)生作為數(shù)據(jù)庫(kù)實(shí)踐平臺(tái)使用。本書(shū)內(nèi)容全面、實(shí)例豐富,并為教師配備了電子教案,方便教師開(kāi)展教學(xué)工作。本書(shū)可作為高等院校計(jì)算機(jī)專業(yè)以及信息管理等相關(guān)專業(yè)本科生的數(shù)據(jù)庫(kù)教材,也可作為相關(guān)人員學(xué)習(xí)數(shù)據(jù)庫(kù)知識(shí)的參考書(shū)。
數(shù)據(jù)庫(kù)技術(shù)起源于20世紀(jì)60年代末,經(jīng)過(guò)幾十余年的迅速發(fā)展,已經(jīng)形成一套較完整的理論體系,產(chǎn)生了一大批商用軟件產(chǎn)品。隨著數(shù)據(jù)庫(kù)技術(shù)的推廣使用,計(jì)算機(jī)應(yīng)用已深入到國(guó)民經(jīng)濟(jì)和社會(huì)生活的各個(gè)領(lǐng)域,這些應(yīng)用一般都以數(shù)據(jù)庫(kù)技術(shù)及其應(yīng)用為基礎(chǔ)和核心。因此,數(shù)據(jù)庫(kù)技術(shù)與操作系統(tǒng)一起構(gòu)成信息處理的平臺(tái)已成為業(yè)界的共識(shí)。在計(jì)算機(jī)應(yīng)用中,數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)處理是計(jì)算機(jī)最基本的功能,數(shù)據(jù)庫(kù)技術(shù)為人們提供了科學(xué)和高效地管理數(shù)據(jù)的方法。從某種意義上講,數(shù)據(jù)庫(kù)技術(shù)的教學(xué)成為計(jì)算機(jī)專業(yè)教學(xué)的重中之重,數(shù)據(jù)庫(kù)課程也成為很多高校計(jì)算機(jī)專業(yè)的重點(diǎn)核心課程。目前市場(chǎng)上數(shù)據(jù)庫(kù)類(lèi)的教科書(shū)非常之多,每本書(shū)各有其特色,本書(shū)博采眾家之所長(zhǎng),在完整包括數(shù)據(jù)庫(kù)基礎(chǔ)理論知識(shí)的同時(shí),加入了將數(shù)據(jù)庫(kù)知識(shí)與具體數(shù)據(jù)庫(kù)管理系統(tǒng)結(jié)合的內(nèi)容,以方便學(xué)生在實(shí)踐中更好地掌握所學(xué)知識(shí)。
本書(shū)具有如下特色。
內(nèi)容安排求全、求新。本教材從數(shù)據(jù)庫(kù)基礎(chǔ)理論、數(shù)據(jù)庫(kù)設(shè)計(jì)、數(shù)據(jù)庫(kù)發(fā)展、數(shù)據(jù)庫(kù)實(shí)踐幾個(gè)方面全面闡述了數(shù)據(jù)庫(kù)技術(shù)的應(yīng)用體系。在選擇實(shí)踐平臺(tái)時(shí),充分考慮軟件的流行性和易獲得性,后臺(tái)數(shù)據(jù)庫(kù)管理系統(tǒng)選用的是SQL Server 2012,它是目前應(yīng)用范圍廣泛且功能完善、操作界面友好的數(shù)據(jù)庫(kù)管理系統(tǒng)。
理論闡述求精、求易。數(shù)據(jù)庫(kù)基礎(chǔ)理論較為抽象,但又是實(shí)踐的基礎(chǔ),沒(méi)有扎實(shí)的基本功是無(wú)法靈活運(yùn)用并付諸實(shí)踐的。因而基礎(chǔ)理論的教學(xué)歷來(lái)是重點(diǎn)和難點(diǎn)。在理論闡釋方面,本書(shū)力求深入淺出,突出概念和技術(shù)的直觀意義,并用大量圖表和示例幫助理解,啟發(fā)思維,使讀者不僅能深刻理解相關(guān)理論的來(lái)源、思路、適用范圍和條件,并能靈活運(yùn)用,舉一反三。
理論實(shí)踐絲絲相扣。知之明也,因知進(jìn)行,理論和技術(shù)的學(xué)習(xí)是為了更好地指導(dǎo)實(shí)踐。本書(shū)的每部分內(nèi)容根據(jù)相關(guān)理論和應(yīng)用需求進(jìn)行了精當(dāng)?shù)倪x取,不以全面泛泛取勝,但求精而實(shí)用。本書(shū)不但以圖例的形式細(xì)致地描述了實(shí)踐步驟,還給出執(zhí)行結(jié)果,使學(xué)生能夠以行驗(yàn)知,以行證知,最后達(dá)到知行并進(jìn),相資為用,為進(jìn)一步的學(xué)習(xí)和實(shí)踐打下良好的基礎(chǔ)。同時(shí),各章后都有大量的習(xí)題,供讀者驗(yàn)證自己對(duì)知識(shí)的掌握程度。在實(shí)踐部分除概念題之外,還附有上機(jī)練習(xí)題,以方便讀者上機(jī)實(shí)踐。
相對(duì)于第2版,第3版主要修訂的內(nèi)容如下。
1)刪去了第2版中客戶端編程(ASP.NET)部分的全部?jī)?nèi)容。主要是基于這樣的考慮:一方面,學(xué)時(shí)的減少,使得有些內(nèi)容不得不放棄;另一方面,客戶端訪問(wèn)數(shù)據(jù)庫(kù)的技術(shù)不斷發(fā)展,一般高校都開(kāi)設(shè)有專門(mén)介紹客戶端應(yīng)用編程的課程,學(xué)生在這些課程中學(xué)習(xí)數(shù)據(jù)庫(kù)應(yīng)用編程的新知識(shí)更加合適。
2)將實(shí)踐平臺(tái)從SQL Server 2005升級(jí)到SQL Server 2012。
3)將數(shù)據(jù)類(lèi)型全部更新為SQL Server 2012所支持的。
4)將第2版的第10章“SQL Server基礎(chǔ)”移至第4章,以更利于講解和實(shí)踐。
5)將“主碼”改為“主鍵”,“外碼”改為“外鍵”,“候選碼”改為“候選鍵”,更符合當(dāng)下普遍使用的術(shù)語(yǔ)。
6)將第2版的第11章“創(chuàng)建數(shù)據(jù)庫(kù)”內(nèi)容移至第4章,使得知識(shí)內(nèi)容更加合理(先建庫(kù),再建表)。
7)交換了“數(shù)據(jù)庫(kù)設(shè)計(jì)”與“事務(wù)與并發(fā)控制”兩章順序,更利于對(duì)數(shù)據(jù)庫(kù)設(shè)計(jì)中事務(wù)設(shè)計(jì)的理解。
8)在“數(shù)據(jù)操作語(yǔ)句”部分增加了兩項(xiàng)內(nèi)容:將查詢結(jié)果保存到新表中;查詢結(jié)果的并、交、差運(yùn)算。
9)增加了對(duì)NoSQL數(shù)據(jù)庫(kù)的介紹。
作者在修訂本書(shū)過(guò)程中得到了機(jī)械工業(yè)出版社華章公司姚蕾等人的大力支持和鼓勵(lì),是他們認(rèn)真的工作態(tài)度以及一直以來(lái)的熱情幫助,鼓勵(lì)著我堅(jiān)持完成此教材的修訂工作。在此,對(duì)機(jī)械工業(yè)出版社的全體人員表示誠(chéng)摯的感謝。同時(shí)非常感謝我們數(shù)據(jù)庫(kù)課程組的全體同仁:殷旭、谷葆春、李寶安、岳清、張良、劉京志、張鴻斌、梁琦、韓麥燕老師。最后感謝我的學(xué)生們,是他們對(duì)知識(shí)的渴求,對(duì)教師的尊重讓我感受到了自己的責(zé)任和價(jià)值。師者之尊,緣自“用心”。
真誠(chéng)地希望讀者和同行們對(duì)本書(shū)提出寶貴的意見(jiàn)。我深知教學(xué)探索的道路沒(méi)有止境,教師是我的職業(yè),但是在人生的道路上我永遠(yuǎn)是一名學(xué)生。
何玉潔2017年3月
目 錄
前言
教學(xué)建議
第1章 數(shù)據(jù)庫(kù)概述 1
1.1 一些基本概念 1
1.1.1 數(shù)據(jù) 1
1.1.2 數(shù)據(jù)庫(kù) 2
1.1.3 數(shù)據(jù)庫(kù)管理系統(tǒng) 2
1.1.4 數(shù)據(jù)庫(kù)系統(tǒng) 3
1.2 數(shù)據(jù)管理技術(shù)的發(fā)展 3
1.2.1 文件管理 3
1.2.2 數(shù)據(jù)庫(kù)管理 6
1.3 數(shù)據(jù)獨(dú)立性 9
1.4 數(shù)據(jù)庫(kù)系統(tǒng)的組成 10
小結(jié) 11
習(xí)題 11
第2章 數(shù)據(jù)模型與數(shù)據(jù)庫(kù)系統(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ù)庫(kù)系統(tǒng)結(jié)構(gòu) 21
2.4.1 模式的基本概念 21
2.4.2 三級(jí)模式結(jié)構(gòu) 22
2.4.3 模式映像與數(shù)據(jù)獨(dú)立性 23
2.5 數(shù)據(jù)庫(kù)管理系統(tǒng) 24
小結(jié) 26
習(xí)題 26
第3章 關(guān)系數(shù)據(jù)庫(kù) 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ù)語(yǔ) 30
3.3 關(guān)系模型的形式化定義 31
3.3.1 形式化定義 31
3.3.2 對(duì)關(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 專門(mén)的關(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ù)備知識(shí) 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ù)庫(kù) 65
4.4.1 SQL Server數(shù)據(jù)庫(kù)的組成 65
4.4.2 數(shù)據(jù)庫(kù)文件的屬性 66
4.4.3 創(chuàng)建數(shù)據(jù)庫(kù)的圖形化方法 66
小結(jié) 69
習(xí)題 70
上機(jī)練習(xí) 70
第5章 數(shù)據(jù)類(lèi)型及關(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ù)類(lèi)型 72
5.2.1 數(shù)字類(lèi)型 73
5.2.2 字符串類(lèi)型 73
5.2.3 日期和時(shí)間類(lèi)型 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 完整性約束條件的作用對(duì)象 79
5.4.2 實(shí)現(xiàn)數(shù)據(jù)完整性 79
小結(jié) 81
習(xí)題 81
上機(jī)練習(xí) 82
第6章 數(shù)據(jù)操作語(yǔ)句 83
6.1 數(shù)據(jù)查詢 83
6.1.1 查詢語(yǔ)句的基本結(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 索引的存儲(chǔ)結(jié)構(gòu)及分類(lèi) 129
7.1.3 創(chuàng)建和刪除索引 134
7.2 視圖 135
7.2.1 基本概念 135
7.2.2 定義視圖 135
7.2.3 通過(guò)視圖查詢數(shù)據(jù) 138
7.2.4 修改和刪除視圖 139
7.2.5 視圖的作用 140
小結(jié) 141
習(xí)題 141
第8章 關(guān)系數(shù)據(jù)庫(kù)規(guī)范化理論 143
8.1 函數(shù)依賴 143
8.1.1 基本概念 143
8.1.2 一些術(shù)語(yǔ)和符號(hào) 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ù)庫(kù)設(shè)計(jì) 168
10.1 數(shù)據(jù)庫(kù)設(shè)計(jì)概述 168
10.1.1 數(shù)據(jù)庫(kù)設(shè)計(jì)的特點(diǎn) 169
10.1.2 數(shù)據(jù)庫(kù)設(shè)計(jì)方法概述 169
10.1.3 數(shù)據(jù)庫(kù)設(shè)計(jì)的全過(guò)程 170
10.2 數(shù)據(jù)庫(kù)需求分析 171
10.2.1 需求分析的任務(wù) 171
10.2.2 需求分析的方法 172
10.3 數(shù)據(jù)庫(kù)結(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ù)庫(kù)行為設(shè)計(jì) 182
10.4.1 功能分析 183
10.4.2 功能設(shè)計(jì) 183
10.4.3 事務(wù)設(shè)計(jì) 184
10.5 數(shù)據(jù)庫(kù)實(shí)施 184
10.6 數(shù)據(jù)庫(kù)的運(yùn)行和維護(hù) 185
小結(jié) 186
習(xí)題 186
第11章 存儲(chǔ)過(guò)程和觸發(fā)器 188
11.1 變量及流程控制語(yǔ)句 188
11.1.1 變量 188
11.1.2 流程控制語(yǔ)句 189
11.2 存儲(chǔ)過(guò)程 190
11.2.1 基本概念 190
11.2.2 創(chuàng)建和執(zhí)行存儲(chǔ)