數(shù)據(jù)庫課程是信息管理與信息系統(tǒng)及其相關(guān)專業(yè)的一門必修的核心課程,數(shù)據(jù)庫技術(shù)是信息技術(shù)和信息產(chǎn)業(yè)的重要支柱。國內(nèi)高校的所有專業(yè)幾乎都已經(jīng)開設數(shù)據(jù)庫課程,只不過不同的專業(yè)側(cè)重面和要求有所不同。作為信息管理與信息系統(tǒng)專業(yè)的學生,需要掌握數(shù)據(jù)庫的基本原理、數(shù)據(jù)庫的應用、數(shù)據(jù)庫的設計和實施方法、數(shù)據(jù)庫的運行管理,并初步掌握數(shù)據(jù)庫應用的開發(fā)方法等。本書圍繞以上要求共分為9章。
第1章為數(shù)據(jù)庫基礎。主要內(nèi)容包括數(shù)據(jù)庫和數(shù)據(jù)模型的基礎知識和基本概念,以及數(shù)據(jù)庫的特點和三層模式結(jié)構(gòu)。
第2章為關(guān)系數(shù)據(jù)庫基礎。關(guān)系數(shù)據(jù)庫經(jīng)過幾十年的發(fā)展目前仍然是主流系統(tǒng),所以學習數(shù)據(jù)庫必須首先要掌握關(guān)系數(shù)據(jù)庫的基本知識。這一章的主要內(nèi)容包括關(guān)系的基本概念、關(guān)系數(shù)據(jù)模型及其約束、關(guān)系代數(shù)和關(guān)系數(shù)據(jù)庫管理系統(tǒng)SQL Server簡介。SQL Server是目前的主流關(guān)系數(shù)據(jù)庫管理系統(tǒng)之一,本書選擇這個系統(tǒng)作為學習數(shù)據(jù)庫的平臺和實踐平臺,特別是第3章和第4章都與SQL Server密切相關(guān)。
第3章為關(guān)系數(shù)據(jù)庫標準語言SQL。所有關(guān)系數(shù)據(jù)庫管理系統(tǒng)遵循相同的數(shù)據(jù)定義、數(shù)據(jù)操作和數(shù)據(jù)查詢語言SQL,學習和掌握SQL是使用關(guān)系數(shù)據(jù)庫的基礎。本章首先給出了一個樣本數(shù)據(jù)庫,使得后續(xù)介紹數(shù)據(jù)定義、數(shù)據(jù)操作和數(shù)據(jù)查詢更加系統(tǒng)化,然后分別介紹了數(shù)據(jù)定義和數(shù)據(jù)完整性約束的實現(xiàn)、數(shù)據(jù)操作和數(shù)據(jù)完整性約束的作用以及數(shù)據(jù)查詢功能,最后簡單介紹了視圖的概念和使用。
第4章為數(shù)據(jù)庫編程初步。該章介紹了SQL Server支持的Transact SQL以及游標、存儲過程和觸發(fā)器,這些內(nèi)容都是數(shù)據(jù)庫編程的基礎。
第5章為數(shù)據(jù)庫管理。主要內(nèi)容為數(shù)據(jù)庫管理的概念,以及數(shù)據(jù)庫的安全管理、事務管理、災難恢復管理和并發(fā)控制等。
第6章為關(guān)系數(shù)據(jù)庫理論。主要介紹了函數(shù)依賴和邏輯蘊含的概念、模式分解及其準則,以及關(guān)系的規(guī)范化。這一章的內(nèi)容是設計關(guān)系數(shù)據(jù)庫模式的理論基礎。
第7章為數(shù)據(jù)庫的設計與實施。主要介紹了數(shù)據(jù)庫的設計方法和實施方法,同時還介紹了數(shù)據(jù)庫設計工具PowerDesinger,最后還通過一個案例介紹了數(shù)據(jù)庫設計和實施的步驟。
第8章為數(shù)據(jù)庫開發(fā)入門。這一章主要介紹數(shù)據(jù)庫的開發(fā)方法和開發(fā)技術(shù),以及數(shù)據(jù)庫的訪問技術(shù),最后通過一個案例示意了數(shù)據(jù)庫應用系統(tǒng)的開發(fā)過程。該章側(cè)重的是開發(fā)技術(shù),不同的院?梢愿鶕(jù)實際情況作出取舍。
第9章為數(shù)據(jù)庫新技術(shù)。
數(shù)據(jù)庫課程是信息管理與信息系統(tǒng)及其相關(guān)專業(yè)的一門必修的核心課程,數(shù)據(jù)庫技術(shù)是信息技術(shù)和信息產(chǎn)業(yè)的重要支柱。國內(nèi)高校的所有專業(yè)幾乎都已經(jīng)開設數(shù)據(jù)庫課程,只不過不同的專業(yè)側(cè)重面和要求有所不同。作為信息管理與信息系統(tǒng)專業(yè)的學生,需要掌握數(shù)據(jù)庫的基本原理、數(shù)據(jù)庫的應用、數(shù)據(jù)庫的設計和實施方法、數(shù)據(jù)庫的運行管理,并初步掌握數(shù)據(jù)庫應用的開發(fā)方法等。本書圍繞以上要求共分為9章。
第1章為數(shù)據(jù)庫基礎。主要內(nèi)容包括數(shù)據(jù)庫和數(shù)據(jù)模型的基礎知識和基本概念,以及數(shù)據(jù)庫的特點和三層模式結(jié)構(gòu)。
第2章為關(guān)系數(shù)據(jù)庫基礎。關(guān)系數(shù)據(jù)庫經(jīng)過幾十年的發(fā)展目前仍然是主流系統(tǒng),所以學習數(shù)據(jù)庫必須首先要掌握關(guān)系數(shù)據(jù)庫的基本知識。這一章的主要內(nèi)容包括關(guān)系的基本概念、關(guān)系數(shù)據(jù)模型及其約束、關(guān)系代數(shù)和關(guān)系數(shù)據(jù)庫管理系統(tǒng)SQL Server簡介。SQL Server是目前的主流關(guān)系數(shù)據(jù)庫管理系統(tǒng)之一,本書選擇這個系統(tǒng)作為學習數(shù)據(jù)庫的平臺和實踐平臺,特別是第3章和第4章都與SQL Server密切相關(guān)。
第3章為關(guān)系數(shù)據(jù)庫標準語言SQL。所有關(guān)系數(shù)據(jù)庫管理系統(tǒng)遵循相同的數(shù)據(jù)定義、數(shù)據(jù)操作和數(shù)據(jù)查詢語言SQL,學習和掌握SQL是使用關(guān)系數(shù)據(jù)庫的基礎。本章首先給出了一個樣本數(shù)據(jù)庫,使得后續(xù)介紹數(shù)據(jù)定義、數(shù)據(jù)操作和數(shù)據(jù)查詢更加系統(tǒng)化,然后分別介紹了數(shù)據(jù)定義和數(shù)據(jù)完整性約束的實現(xiàn)、數(shù)據(jù)操作和數(shù)據(jù)完整性約束的作用以及數(shù)據(jù)查詢功能,最后簡單介紹了視圖的概念和使用。
第4章為數(shù)據(jù)庫編程初步。該章介紹了SQL Server支持的Transact SQL以及游標、存儲過程和觸發(fā)器,這些內(nèi)容都是數(shù)據(jù)庫編程的基礎。
第5章為數(shù)據(jù)庫管理。主要內(nèi)容為數(shù)據(jù)庫管理的概念,以及數(shù)據(jù)庫的安全管理、事務管理、災難恢復管理和并發(fā)控制等。
第6章為關(guān)系數(shù)據(jù)庫理論。主要介紹了函數(shù)依賴和邏輯蘊含的概念、模式分解及其準則,以及關(guān)系的規(guī)范化。這一章的內(nèi)容是設計關(guān)系數(shù)據(jù)庫模式的理論基礎。
第7章為數(shù)據(jù)庫的設計與實施。主要介紹了數(shù)據(jù)庫的設計方法和實施方法,同時還介紹了數(shù)據(jù)庫設計工具PowerDesinger,最后還通過一個案例介紹了數(shù)據(jù)庫設計和實施的步驟。
第8章為數(shù)據(jù)庫開發(fā)入門。這一章主要介紹數(shù)據(jù)庫的開發(fā)方法和開發(fā)技術(shù),以及數(shù)據(jù)庫的訪問技術(shù),最后通過一個案例示意了數(shù)據(jù)庫應用系統(tǒng)的開發(fā)過程。該章側(cè)重的是開發(fā)技術(shù),不同的院?梢愿鶕(jù)實際情況作出取舍。
第9章為數(shù)據(jù)庫新技術(shù)。主要介紹數(shù)據(jù)庫的研究領(lǐng)域和數(shù)據(jù)庫的發(fā)展及其新技術(shù),其中影響比較大的研究領(lǐng)域和新技術(shù)有分布式數(shù)據(jù)庫、面向?qū)ο髷?shù)據(jù)庫、XML數(shù)據(jù)庫、數(shù)據(jù)倉庫、并行數(shù)據(jù)庫和多媒體數(shù)據(jù)庫等。另外,該章還簡單介紹了知識庫、模糊數(shù)據(jù)庫、主動數(shù)據(jù)庫和空間數(shù)據(jù)庫等。
此外,本書還具有如下特點:
(1) 為了方便教師和學生使用,在每一章開始有導讀,介紹該章的主要學習內(nèi)容和學習目標,并強調(diào)了本章學習的重點和難點。這樣可以使教師的教學目標和學生的學習目標更加明確。
(2) 除每章結(jié)尾有習題以外,每一節(jié)都配有大量的思考題,這些思考題一是可以對剛學習過的內(nèi)容進行總結(jié)和復習;二是可以引出將要學習的內(nèi)容,使前后知識更好地銜接;三是可以拓展學生的思路,鼓勵學生在教材知識的基礎上進一步進行自主學習。
(3) 尤其注重理論聯(lián)系實際,這包括在內(nèi)容講解上注重與實踐的結(jié)合,除純概念和理論內(nèi)容以外,大部分內(nèi)容都可以通過實踐完成教學,可以實踐的部分都配有相應的實驗和實驗指導,全書從第2章開始一共安排了13個單項實驗和一個綜合實驗--課程大作業(yè)。
本書是在作者多年教學的基礎上撰寫而成的,同時得到了《中國高等院校信息系統(tǒng)學科課程體系》(清華大學出版社,2005)課題研究組和評審專家組的大力幫助和指導。
王曉波老師參加了第7章、第8章和附錄A的編寫,車蕾老師參加了第8章和附錄B的編寫,其余章節(jié)由崔巍編寫并對全書進行了統(tǒng)稿。本書由中國人民大學王珊教授主審,她為本書提出了很多寶貴的修改意見,在此表示深深的感謝。
由于作者水平有限,書中的疏漏和瑕疵敬請讀者批評指正。如果您對本書的再版有什么好的建議或意見,可將郵件發(fā)至:cuiw@bistu.edu.cn.
崔 巍2008年12月
第1章 數(shù)據(jù)庫基礎1
1.1 數(shù)據(jù)管理 1
1.1.1 數(shù)據(jù)1
1.1.2 數(shù)據(jù)處理2
1.1.3 數(shù)據(jù)管理及其技術(shù)發(fā)展2
思考題4
1.2 數(shù)據(jù)庫系統(tǒng) 4
1.2.1 什么是數(shù)據(jù)庫4
1.2.2 數(shù)據(jù)庫管理系統(tǒng)6
1.2.3 數(shù)據(jù)庫系統(tǒng)6
1.2.4 數(shù)據(jù)庫管理與數(shù)據(jù)庫管理員7
思考題8
1.3 數(shù)據(jù)模型概述 8
1.3.1 基本概念8
1.3.2 概念模型9
1.3.3 層次模型11
1.3.4 網(wǎng)狀模型12
1.3.5 關(guān)系模型12
思考題13
1.4 數(shù)據(jù)庫的三層模式結(jié)構(gòu) 13
1.4.1 數(shù)據(jù)獨立性13
1.4.2 三層模式和兩級映射15
1.4.3 數(shù)據(jù)庫管理系統(tǒng)的基本結(jié)構(gòu)16
思考題17
本章小結(jié) 17
習題1 18
第2章 關(guān)系數(shù)據(jù)庫基礎19
2.1 關(guān)系概念 19
2.1.1 關(guān)系的定義 19
2.1.2 基本概念和術(shù)語21
思考題22
2.2 關(guān)系數(shù)據(jù)模型 23
2.2.1 關(guān)系模型及其要素23
2.2.2 關(guān)系完整性約束24
思考題26
2.3 關(guān)系代數(shù) 27
2.3.1 傳統(tǒng)的集合運算27
2.3.2 專門關(guān)系運算29
思考題31
2.4 關(guān)系數(shù)據(jù)庫管理系統(tǒng)SQL Server
介紹 32
2.4.1 SQL Server的基本結(jié)構(gòu)32
2.4.2 SQL Server數(shù)據(jù)庫及其建立32
思考題35
本章小結(jié) 36
習題2 36
實驗1 建立數(shù)據(jù)庫 37
第3章 關(guān)系數(shù)據(jù)庫標準語言SQL38
3.1 SQL語言概述 38
3.2 樣本數(shù)據(jù)庫 39
3.3 數(shù)據(jù)定義功能與數(shù)據(jù)完整性約束
的實現(xiàn) 40
3.3.1 模式的定義和刪除 40
3.3.2 表的定義、修改和刪除40
思考題46
3.4 數(shù)據(jù)操作功能及數(shù)據(jù)完整性的
作用 46
3.4.1 插入操作46
3.4.2 刪除操作51
3.4.3 更新操作52
思考題52
3.5 數(shù)據(jù)查詢功能 53
3.5.1 SQL SELECT命令的語法53
3.5.2 簡單查詢54
3.5.3 連接查詢57
3.5.4 分組與匯總查詢59
3.5.5 嵌套查詢62
思考題65
3.6 視圖 65
3.6.1 視圖的概念65
3.6.2 視圖的建立和使用66
思考題67
本章小結(jié) 68
習題3 68
實驗2 建立表和定義完整性約束 69
實驗3 數(shù)據(jù)操作和完整性約束的
作用 71
實驗4 數(shù)據(jù)查詢 72
實驗5 視圖的應用 74
第4章 數(shù)據(jù)庫編程初步75
4.1 T-SQL簡介 75
4.1.1 變量、數(shù)據(jù)類型與表達式75
4.1.2 函數(shù)79
4.1.3 語句79
思考題81
4.2 游標 81
4.2.1 游標及其語句81
4.2.2 游標查詢處理舉例83
4.2.3 利用游標進行刪除和更新操作84
4.2.4 嵌入式SQL85
思考題86
4.3 存儲過程 86
4.3.1 基本概念86
4.3.2 創(chuàng)建存儲過程和執(zhí)行存儲過程87
4.3.3 存儲過程的修改和刪除88
4.3.4 存儲過程應用舉例88
4.3.5 獲得有關(guān)存儲過程的信息91
思考題91
4.4 觸發(fā)器 91
4.4.1 基本概念92
4.4.2 建立觸發(fā)器92
4.4.3 deleted表和inserted表93
4.4.4 觸發(fā)器應用舉例94
思考題96
本章小結(jié) 96
習題4 96
實驗6 游標 96
實驗7 存儲過程 97
實驗8 觸發(fā)器 98
第5章 數(shù)據(jù)庫管理99
5.1 數(shù)據(jù)管理與數(shù)據(jù)庫管理 99
5.1.1 數(shù)據(jù)庫規(guī)劃和設計階段的管理99
5.1.2 數(shù)據(jù)庫實施、運行和維護階段的管理100
思考題100
5.2 數(shù)據(jù)庫安全管理 100
5.2.1 數(shù)據(jù)庫安全概述101
5.2.2 數(shù)據(jù)庫管理系統(tǒng)的身份識別機制101
5.2.3 SQL Server的用戶和角色管理102
5.2.4 SQL Server的用戶權(quán)限管理108
思考題111
5.3 事務管理 111
5.3.1 事務的概念和性質(zhì)111
5.3.2 事務管理的命令113
思考題115
5.4 恢復管理 115
5.4.1 軟故障及其恢復115
5.4.2 硬故障恢復116
思考題123
5.5 并發(fā)控制 124
5.5.1 為什么需要并發(fā)控制124
5.5.2 可串行化126
5.5.3 封鎖127
5.5.4 死鎖129
5.5.5 隔離131
思考題132
本章小結(jié) 133
習題5 133
實驗9 用戶管理和權(quán)限管理 134
實驗10 事務管理和災難恢復 136
實驗11 并發(fā)事務控制 137
第6章 關(guān)系數(shù)據(jù)庫理論139
6.1 函數(shù)依賴 139
6.1.1 函數(shù)依賴的概念139
6.1.2 為什么要討論函數(shù)依賴140
6.1.3 術(shù)語和符號141
6.1.4 函數(shù)依賴的邏輯蘊涵141
思考題143
6.2 模式分解 143
6.2.1 模式分解的準則143
6.2.2 模式分解舉例144
思考題144
6.3 關(guān)系規(guī)范化 145
6.3.1 第一范式145
6.3.2 第二范式145
6.3.3 第三范式146
6.3.4 BC范式147
6.3.5 規(guī)范化算法149
6.3.6 規(guī)范化小結(jié)149
思考題150
本章小結(jié) 150
習題6 151
第7章 數(shù)據(jù)庫設計與實施152
7.1 數(shù)據(jù)庫設計的一般內(nèi)容和步驟 152
7.1.1 數(shù)據(jù)庫設計的基本任務152
7.1.2 數(shù)據(jù)庫設計的方法與步驟153
思考題154
7.2 數(shù)據(jù)庫設計工具PowerDesigner
簡介 154
思考題156
7.3 概念模型設計 156
7.3.1 弱實體、依賴聯(lián)系和強制聯(lián)系156
7.3.2 概念數(shù)據(jù)模型設計的基本內(nèi)容
和方法157
7.3.3 使用PowerDesigner設計概念模型159
思考題160
7.4 邏輯模型設計 161
7.4.1 E-R模型向關(guān)系模型的轉(zhuǎn)換161
7.4.2 使用PowerDesigner將概念模型
轉(zhuǎn)換成邏輯(物理)模型161
7.4.3 使用PowerDesigner設計邏輯
(物理)模型162
7.4.4 關(guān)系模式優(yōu)化162
思考題162
7.5 物理數(shù)據(jù)庫設計 162
思考題163
7.6 數(shù)據(jù)庫的實施與維護 163
7.6.1 數(shù)據(jù)庫的實施164
7.6.2 數(shù)據(jù)庫的運行和維護164
思考題165
7.7 數(shù)據(jù)庫設計案例 165
7.7.1 需求概述165
7.7.2 概念結(jié)構(gòu)設計166
7.7.3 邏輯結(jié)構(gòu)設計167
7.7.4 物理結(jié)構(gòu)設計和數(shù)據(jù)庫實施170
思考題171
本章小結(jié) 171
習題7 171
實驗12 數(shù)據(jù)庫設計 172
第8章 數(shù)據(jù)庫開發(fā)入門174
8.1 數(shù)據(jù)庫應用系統(tǒng)開發(fā)方法概述 174
8.1.1 結(jié)構(gòu)化生命周期法174
8.1.2 快速原型法177
8.1.3 面向?qū)ο蠓椒?77
思考題178
8.2 數(shù)據(jù)庫應用系統(tǒng)的基本架構(gòu) 179
8.2.1 客戶/服務器結(jié)構(gòu)179
8.2.2 瀏覽器/服務器結(jié)構(gòu)179
思考題180
8.3 數(shù)據(jù)庫訪問技術(shù) 180
8.3.1 ODBC180
8.3.2 ADO.NET182
8.3.3 JDBC184
思考題185
8.4 數(shù)據(jù)庫開發(fā)案例 185
8.4.1 數(shù)據(jù)庫設計185
8.4.2 系統(tǒng)主界面186
8.4.3 學生管理190
8.4.4 課程管理195
8.4.5 選課管理197
8.4.6 統(tǒng)計查詢201
思考題208
本章小結(jié) 208
習題8 208
實驗13 使用C#開發(fā)數(shù)據(jù)庫應用
程序 208
第9章 數(shù)據(jù)庫新技術(shù)與發(fā)展209
9.1 分布式數(shù)據(jù)庫 209
9.1.1 分布式數(shù)據(jù)庫的基本概念209
9.1.2 分布式數(shù)據(jù)庫的基本特點210
思考題211
9.2 面向?qū)ο髷?shù)據(jù)庫 211
9.2.1 面向?qū)ο髷?shù)據(jù)庫的研究方法211
9.2.2 ODMG數(shù)據(jù)模型和OQL212
9.2.3 面向?qū)ο髷?shù)據(jù)庫的基本特征及其存在
的問題212
9.2.4 RDBMS、ORDBMS和OODBMS
的比較213
思考題213
9.3 并行數(shù)據(jù)庫 214
9.3.1 為什么要研究并行數(shù)據(jù)庫214
9.3.2 并行數(shù)據(jù)庫的研究內(nèi)容214
思考題214
9.4 主動數(shù)據(jù)庫 214
思考題215
9.5 知識庫 216
思考題216
9.6 模糊數(shù)據(jù)庫 217
思考題217
9.7 多媒體數(shù)據(jù)庫 217
思考題218
9.8 數(shù)據(jù)倉庫 218
9.8.1 什么是數(shù)據(jù)倉庫218
9.8.2 數(shù)據(jù)倉庫系統(tǒng)219
9.8.3 數(shù)據(jù)倉庫與決策支持219
思考題220
9.9 XML數(shù)據(jù)庫 220
9.9.1 XML數(shù)據(jù)庫的研究過程220
9.9.2 XML基礎220
9.9.3 XML數(shù)據(jù)類型和SQL/XML221
思考題221
9.10 地理信息系統(tǒng)與空間數(shù)據(jù)庫 221
思考題222
本章小結(jié) 222
附錄A 課程大作業(yè)223
A.1 內(nèi)容及要求 223
A.1.1 實踐目的223
A.1.2 實踐內(nèi)容223
A.1.3 實踐步驟224
A.1.4 實踐要求224
A.1.5 評分標準224
A.2 題目 224
A.2.1 餐飲管理信息系統(tǒng)224
A.2.2 訂貨、發(fā)貨管理系統(tǒng)225
A.2.3 住宅小區(qū)物業(yè)管理信息系統(tǒng)227
A.2.4 機房管理系統(tǒng)228
A.2.5 藥品庫房管理系統(tǒng)229
A.2.6 教務管理信息系統(tǒng)230
附錄B 課程大作業(yè)樣例233
B.1 題目及需求分析 233
B.2 概念結(jié)構(gòu)設計 235
B.3 邏輯結(jié)構(gòu)設計 242
B.4 物理數(shù)據(jù)庫設計 249
B.5 系統(tǒng)實現(xiàn) 250
主要參考書目253