本書圍繞數(shù)據(jù)庫的原理、應用和實施,系統(tǒng)、全面地介紹數(shù)據(jù)庫的基本概念、方法和核心技術。全書分三部分進行闡述,第一部分側(cè)重數(shù)據(jù)庫理論基礎,內(nèi)容包括數(shù)據(jù)庫的基本概念、數(shù)據(jù)模型、關系數(shù)據(jù)庫、關系代數(shù)和SQL語句、數(shù)據(jù)庫規(guī)范化理論、數(shù)據(jù)庫設計和數(shù)據(jù)庫保護技術; 第二部分側(cè)重SQL Server的數(shù)據(jù)庫應用,內(nèi)容包括TransactSQL語言、SQL Server數(shù)據(jù)對象(表、視圖、索引、存儲過程和函數(shù)、觸發(fā)器)、安全性管理和并發(fā)機制; 第三部分側(cè)重數(shù)據(jù)庫應用系統(tǒng)的實施,內(nèi)容包括.NET開發(fā)環(huán)境、一個學分制財務管理系統(tǒng)的總體設計、數(shù)據(jù)庫設計和核心模塊的實現(xiàn)。
本書可作為高等學校計算機專業(yè)數(shù)據(jù)庫課程的教材,也可作為其他相關專業(yè)本科生數(shù)據(jù)庫課程的教材,還可作為從事數(shù)據(jù)庫研制、開發(fā)和應用的有關人員的參考書。
數(shù)據(jù)庫是普通高校計算機專業(yè)、信息管理、軟件工程等專業(yè)的專業(yè)基礎課,其主要任務是研究如何存儲、使用和管理數(shù)據(jù),目前,已成功地應用于經(jīng)濟、教育、情報、科研、人工智能等各個領域。因此,數(shù)據(jù)庫是國內(nèi)外計算機專業(yè)的一門重要的課程。
開設數(shù)據(jù)庫課程的目的是使學生在掌握數(shù)據(jù)庫的基本原理、方法和技術的基礎上,能根據(jù)應用需求靈活設計適合的數(shù)據(jù)庫,并能聯(lián)合現(xiàn)有的數(shù)據(jù)庫管理系統(tǒng)和軟件開發(fā)工具進行數(shù)據(jù)庫的建立和數(shù)據(jù)庫應用系統(tǒng)的開發(fā)。本書以關系數(shù)據(jù)庫為核心,按照“原理—應用—實施”循序漸進的模式,全面、系統(tǒng)地闡述了數(shù)據(jù)庫系統(tǒng)的理論和實踐知識。其中,原理部分的目標是幫助讀者掌握數(shù)據(jù)庫的重要概念,最終能進行關系數(shù)據(jù)庫的設計; 應用部分的目標是幫助讀者熟練使用某種商品型數(shù)據(jù)庫,通過比較,我們選用了SQL Server 2008,其是Microsoft公司具有里程碑性質(zhì)的企業(yè)級數(shù)據(jù)庫產(chǎn)品,和以往的數(shù)據(jù)解決方案相比,它給用戶帶來了更為強大的數(shù)據(jù)管理和業(yè)務處理功能; 實施部分的目標幫助讀者按照軟件工程和數(shù)據(jù)庫設計的步驟來進行數(shù)據(jù)庫信息管理系統(tǒng)的開發(fā)。
本書分為三大部分: 數(shù)據(jù)庫原理部分、應用部分及實施部分,共18章。
第一部分: 數(shù)據(jù)庫原理(第1~第7章)。第1和第2章介紹了數(shù)據(jù)庫的基本概念和數(shù)據(jù)模型; 第3和第4章著重介紹了關系模型、關系數(shù)據(jù)庫以及關系數(shù)據(jù)庫的操作語言(關系代數(shù)和SQL語句); 第5章介紹數(shù)據(jù)庫規(guī)范化理論; 第6和第7章分別介紹數(shù)據(jù)庫設計和數(shù)據(jù)庫保護的理論和方法。
第二部分: 數(shù)據(jù)庫應用(第8~第14章)。第8章介紹了SQL Server的基本概念; 第9章介紹了TransactSQL 語言,包括標識符、變量、函數(shù)、流程控制語句及游標等。第10和第11章分別介紹了數(shù)據(jù)庫、表、視圖、索引的概念及基本操作; 第12和第13章分別介紹了存儲過程和函數(shù)、觸發(fā)器的管理和使用; 第14章介紹SQL Server數(shù)據(jù)庫的保護,含安全性管理、備份和恢復、并發(fā)機制等。
第三部分: 數(shù)據(jù)庫實施(第15~第18章)。第15章介紹了.NET開發(fā)環(huán)境; 第16和第17章分別介紹了學分制財務管理系統(tǒng)的總體設計和對應的數(shù)據(jù)庫設計。第18章針對數(shù)據(jù)查詢、存儲過程、觸發(fā)器和事務等核心技術,設計了專門的系統(tǒng)模塊來描述它們的應用場景和實現(xiàn)過程。
本書強化以下特色:
(1) 內(nèi)容全面: 本書不僅包括數(shù)據(jù)庫理論部分,還有具體的SQL Server 2008的介紹和使用,另外還以學分制財務管理系統(tǒng)為例詳細介紹數(shù)據(jù)庫的設計和實施。
(2) 適用于多種層次的學生: 本書可適用于計算機及相關專業(yè)的數(shù)據(jù)庫課程,無論從理論和實踐都符合教學大綱的要求; 對于高職高專類院校,可把難度較大的部分作為選講內(nèi)容。
(3) 本書內(nèi)容主要來源于課程教學的講義和教案,將編者多年教學實踐取得的豐富經(jīng)驗和操作技巧融合入教材,更有利于教師的授課和學生的學習。
(4) 強化實例教學: 對于每個知識點,本書設計了針對性強的教學案例。讀者可以在清華大學出版社網(wǎng)頁下載配套的教學資源。
(5) 在內(nèi)容方面,既強調(diào)實用性,又注重理論的完整性,主要體現(xiàn)在:
① 數(shù)據(jù)庫理論方面,突出關系數(shù)據(jù)庫技術的主要內(nèi)容,減少并弱化層次、網(wǎng)絡模型的內(nèi)容。
② 在關系模型操作語言方面,強化關系代數(shù)和SQL語句,并增加兩者之間語句的對應關系,弱化常規(guī)數(shù)據(jù)庫理論書中的關系演算部分內(nèi)容。
③ 在SQL語句方面,除了常規(guī)的交互式SQL語句,增加嵌入式SQL部分。
④ 數(shù)據(jù)庫規(guī)范化部分,弱化實際中應用較少的多值依賴和4NF。
⑤ 強化了數(shù)據(jù)庫設計的內(nèi)容,常規(guī)的數(shù)據(jù)庫設計部分通常以概念居多,本書采用在數(shù)據(jù)庫設計中應用最廣的設計工具PowerDesigner來介紹具體的數(shù)據(jù)庫設計過程。
⑥ 加入了商品型數(shù)據(jù)庫SQL Server 2008的介紹和使用。
⑦ 比一般的數(shù)據(jù)庫理論書增加了實踐中應用較多的存儲過程、觸發(fā)器、游標等部分的內(nèi)容,實踐性更強。
⑧ 圍繞數(shù)據(jù)庫應用中的核心技術,增加采用.NET進行數(shù)據(jù)庫應用系統(tǒng)開發(fā)的介紹。
本書在編寫過程中,參考了大量的相關技術資料和程序開發(fā)文檔,在此向資料的作者深表謝意; 還得到很多同事的關心和幫助,在此表示深深的感謝。
由于數(shù)據(jù)庫技術發(fā)展迅速,加上編者水平有限,難免顧此失彼。對于書中存在的錯誤和不妥之處,敬請讀者批評指正。
編者
2015年5月
第一部分數(shù)據(jù)庫原理
第1章數(shù)據(jù)庫系統(tǒng)概述
1.1數(shù)據(jù)庫概述
1.1.1初識數(shù)據(jù)庫
1.1.2數(shù)據(jù)庫概念
1.2數(shù)據(jù)庫系統(tǒng)組成
1.2.1數(shù)據(jù)庫管理系統(tǒng)
1.2.2數(shù)據(jù)庫應用程序
1.2.3用戶
1.3數(shù)據(jù)庫系統(tǒng)的三級模式結(jié)構
1.3.1三級模式
1.3.2模式映像與數(shù)據(jù)獨立性
1.4數(shù)據(jù)庫系統(tǒng)的軟件體系結(jié)構
1.5數(shù)據(jù)庫系統(tǒng)發(fā)展歷程
1.5.1數(shù)據(jù)庫系統(tǒng)的特點
1.5.2數(shù)據(jù)庫系統(tǒng)的發(fā)展
1.5.3數(shù)據(jù)庫系統(tǒng)的發(fā)展趨勢
習題1
第2章數(shù)據(jù)模型
2.1數(shù)據(jù)模型簡介
2.1.1數(shù)據(jù)模型的組成要素
2.1.2數(shù)據(jù)模型的發(fā)展
2.2概念模型
2.2.1ER數(shù)據(jù)模型的基本概念
2.2.2ER圖
2.2.3EER圖
2.3傳統(tǒng)數(shù)據(jù)模型
2.3.1層次模型
2.3.2網(wǎng)狀模型
2.3.3關系模型
2.4面向?qū)ο髷?shù)據(jù)模型
2.4.1面向?qū)ο蠡靖拍?br />
2.4.2數(shù)據(jù)結(jié)構
2.4.3數(shù)據(jù)操作和約束
2.4.4對象數(shù)據(jù)模型的實施
習題2
第3章關系數(shù)據(jù)庫系統(tǒng)
3.1關系數(shù)據(jù)庫系統(tǒng)的特點
3.2關系模型的數(shù)據(jù)結(jié)構
3.2.1基本術語
3.2.2規(guī)范化的關系
3.2.3關系的鍵(碼)
3.3關系代數(shù)
3.3.1基本的關系操作
3.3.2關系數(shù)據(jù)語言
3.3.3關系代數(shù)
3.3.4關系代數(shù)運算實例
3.4關系的完整性
3.4.1實體完整性
3.4.2參照完整性
3.4.3用戶定義的完整性
習題3
第4章關系數(shù)據(jù)庫標準語言SQL
4.1SQL概述
4.1.1SQL的產(chǎn)生與發(fā)展
4.1.2SQL語言功能概述
4.1.3SQL的特點
4.2數(shù)據(jù)準備——曲庫
4.3數(shù)據(jù)定義
4.4數(shù)據(jù)查詢
4.4.1查詢語句的基本結(jié)構
4.4.2單表查詢
4.4.3連接查詢
4.4.4集合查詢
4.4.5子查詢
4.5數(shù)據(jù)更新
4.5.1插入操作
4.5.2刪除操作
4.5.3修改操作
習題4
第5章數(shù)據(jù)庫規(guī)范化理論
5.1函數(shù)依賴
5.1.1研究函數(shù)依賴的意義
5.1.2函數(shù)依賴的定義
5.1.3關系的鍵(碼)
5.1.4函數(shù)依賴的公理系統(tǒng)
5.1.5屬性集的閉包
5.1.6屬性集閉包的應用
5.2關系模式的規(guī)范化
5.2.1問題的提出
5.2.2問題的根源
5.2.3范式
5.2.4規(guī)范化小結(jié)
習題5
第6章數(shù)據(jù)庫設計
6.1數(shù)據(jù)庫設計概述
6.1.1數(shù)據(jù)庫設計的特點
6.1.2數(shù)據(jù)庫設計的步驟
6.2需求分析階段
6.2.1需求分析概述
6.2.2結(jié)構化分析建模
6.3概念結(jié)構設計
6.3.1概念結(jié)構設計概述
6.3.2采用ER方法的概念結(jié)構設計
6.4邏輯結(jié)構設計
6.4.1關系數(shù)據(jù)庫的邏輯設計
6.4.2關系模型的優(yōu)化
6.4.3設計外模式
6.5物理結(jié)構設計
6.6數(shù)據(jù)庫的實施和維護
6.6.1數(shù)據(jù)庫的實施
6.6.2數(shù)據(jù)庫的運行和維護
6.7使用PowerDesigner進行數(shù)據(jù)庫設計
6.7.1PowerDesigner介紹
6.7.2概念數(shù)據(jù)模型
6.7.3CDM生成PDM
6.7.4生成數(shù)據(jù)庫
6.7.5生成REPORT
習題6
第7章數(shù)據(jù)庫保護
7.1數(shù)據(jù)庫安全性
7.1.1安全控制模型
7.1.2用戶身份認證
7.1.3存取控制
7.1.4其他安全控制技術
7.1.5權限控制語句
7.2數(shù)據(jù)庫完整性
7.2.1完整性控制的功能
7.2.2完整性約束條件作用的對象
7.2.3完整性控制語句
7.3并發(fā)控制
7.3.1并發(fā)控制的單位——事務
7.3.2并發(fā)帶來的問題
7.3.3封鎖技術
7.4數(shù)據(jù)庫恢復
7.4.1故障種類
7.4.2數(shù)據(jù)庫恢復技術
7.4.3恢復策略
習題7
第二部分數(shù)據(jù)庫應用
第8章SQL Server概述
8.1SQL Server簡介
8.2SQL Server的平臺構成
8.3數(shù)據(jù)庫引擎的體系結(jié)構
8.4SQL Server的管理工具
8.4.1SQL Server Configuration Manager
8.4.2SQL Server Management Studio
8.4.3Database Engine Tuning Advisor
8.4.4SQL Server Profiler
8.5注冊服務器
習題8
第9章TransactSQL語言
9.1TransactSQL語言
9.2標識符、數(shù)據(jù)類型
9.2.1語法約定
9.2.2注釋語句
9.2.3標識符
9.2.4數(shù)據(jù)類型
9.3常量和變量
9.3.1常量
9.3.2變量
9.3.3運算符
9.3.4表達式
9.4系統(tǒng)內(nèi)置函數(shù)
9.4.1字符串函數(shù)
9.4.2日期函數(shù)
9.4.3數(shù)學函數(shù)
9.4.4其他常用函數(shù)
9.4.5轉(zhuǎn)換函數(shù)
9.5批處理和流程控制語句
9.5.1批處理
9.5.2流程控制語句
9.6游標
9.6.1游標概述
9.6.2使用游標
習題9
第10章管理數(shù)據(jù)庫
10.1數(shù)據(jù)庫的組成
10.1.1物理數(shù)據(jù)庫與文件
10.1.2邏輯數(shù)據(jù)庫與數(shù)據(jù)庫對象
10.1.3系統(tǒng)數(shù)據(jù)庫與用戶數(shù)據(jù)庫
10.2數(shù)據(jù)庫的操作
10.2.1創(chuàng)建數(shù)據(jù)庫
10.2.2修改數(shù)據(jù)庫
10.2.3刪除數(shù)據(jù)庫
10.2.4數(shù)據(jù)庫的重命名
10.2.5查看數(shù)據(jù)庫信息
10.2.6分離和附加數(shù)據(jù)庫
10.2.7設置當前數(shù)據(jù)庫
10.3擴展知識
10.3.1關于數(shù)據(jù)庫空間使用
10.3.2數(shù)據(jù)庫的排序規(guī)則
10.3.3數(shù)據(jù)庫的統(tǒng)計信息
10.3.4查看系統(tǒng)數(shù)據(jù)庫啟動順序
習題10
第11章表、視圖和索引
11.1概述
11.2表
11.2.1表的概述
11.2.2表的分類
11.2.3創(chuàng)建表
11.2.4數(shù)據(jù)完整性的實現(xiàn)
11.2.5修改表和刪除表
11.2.6表的數(shù)據(jù)操作
11.3視圖
11.3.1視圖概述
11.3.2創(chuàng)建視圖
11.3.3管理視圖
11.3.4視圖的使用
11.4索引
11.4.1索引的概念
11.4.2索引的類型
11.4.3索引的創(chuàng)建
11.4.4刪除索引
11.4.5查看索引信息
11.4.6索引填充因子
11.5使用數(shù)據(jù)庫引擎優(yōu)化顧問
習題11
第12章存儲過程和函數(shù)
12.1存儲過程
12.1.1存儲過程概述
12.1.2創(chuàng)建存儲過程
12.1.3執(zhí)行存儲過程
12.1.4帶參數(shù)的存儲過程
12.1.5管理存儲過程
12.2用戶自定義函數(shù)
12.2.1概述
12.2.2標量函數(shù)
12.2.3表值函數(shù)
12.2.4使用SSMS創(chuàng)建用戶定義函數(shù)
12.2.5修改用戶定義函數(shù)
12.2.6刪除用戶定義函數(shù)
習題12
第13章觸發(fā)器
13.1觸發(fā)器概述
13.2DML觸發(fā)器
13.2.1DML觸發(fā)器的概述和作用
13.2.2DML觸發(fā)器分類
13.2.3與DML觸發(fā)器相關的邏輯表
13.2.4創(chuàng)建DML觸發(fā)器
13.3DDL觸發(fā)器
13.3.1DDL觸發(fā)器概述
13.3.2創(chuàng)建DDL觸發(fā)器
13.4管理觸發(fā)器
習題13
第14章SQL Server數(shù)據(jù)庫的保護
14.1SQL Server的安全性
14.1.1SQL Server的安全機制
14.1.2管理SQL Server服務器安全性
14.1.3管理數(shù)據(jù)庫的安全性
14.1.4管理數(shù)據(jù)庫對象的安全性
14.2SQL Server的備份和恢復
14.2.1SQL Server的恢復模式
14.2.2SQL Server的備份
14.2.3備份數(shù)據(jù)庫
14.2.4恢復數(shù)據(jù)庫
14.3SQL Server的并發(fā)機制
14.3.1SQL Server的隔離級別
14.3.2SQL Server的鎖模式
14.3.3SQL Server中死鎖的處理
14.3.4SQL Server Profiler查看死鎖
14.4*擴展知識
習題14
第三部分數(shù)據(jù)庫實施
第15章數(shù)據(jù)庫應用程序開發(fā)技術
15.1開發(fā)環(huán)境簡介
15.2基于.NET的Windows程序開發(fā)
15.2.1可視化編程
15.2.2.NET下的可視化編程
15.3.NET中的數(shù)據(jù)庫技術
15.3.1ADO.NET與.NET框架
15.3.2ADO.NET的組成
15.3.3ADO.NET的常用類
習題15
第16章學分制財務管理系統(tǒng)總體設計
16.1需求分析
16.2功能模塊設計
16.3開發(fā)與運行環(huán)境
習題16
第17章學分制財務管理系統(tǒng)數(shù)據(jù)庫設計
17.1總體設計
17.2完整性設計
17.3函數(shù)和存儲過程設計
17.3.1函數(shù)設計——個人財務
17.3.2存儲過程設計
習題17
第18章學分制財務管理系統(tǒng)實現(xiàn)
18.1建立數(shù)據(jù)庫通用訪問類
18.2基礎DML的演練——用戶管理
18.3動態(tài)查詢條件的演練——查詢學生信息
18.4調(diào)用函數(shù)和存儲過程——查詢統(tǒng)計
18.5觸發(fā)器演練——資費標準管理
18.6事務演練——批量導入選課學分模塊
18.7安全性演練1——用戶登錄
18.8安全性演練2——系統(tǒng)集成
習題18
附錄
參考文獻