《軟件工程系列規劃教材:數據庫系統及應用(第2版)》從實用性和先進性出發,通過一個完整的數據庫應用實例,全面介紹數據庫的基本理論及數據庫的管理、設計與開發技術。全書共14章,主要內容包括:數據庫系統概論、關系數據模型、約束語言SQL、完整性約束、數據庫安全、數據庫恢復技術、并發控制、數據庫設計方法、數據庫高級開發技術、數據倉庫、數據挖掘、地理信息系統和空間數據庫、主流數據庫產品介紹等。
前言
計算機技術的發展不僅極大地促進了科學技術的發展,而且明顯加快了經濟信息化和社會信息化的進程。因此,計算機教育在各國都備受重視,具備計算機知識與使用能力已成為21世紀人才的基本素質之一。
數據庫應用技術是其中的核心技術之一,以其為核心的各種數據庫應用管理,無可爭議地改變了政府部門和企事業單位的運營和管理方式。隨著數據庫應用廣度和深度的擴展,不僅是計算機和信息技術行業,而且包括技術管理、工程管理甚至決策人員在內的眾多行業都開始關心數據庫技術。
教育部和國家發展計劃委員會在全國設立了若干示范性軟件學院,為了適應各軟件學院正在開展的課程體系與教學內容的改革,及時反映相關研究成果,積極探索適應21世紀軟件工程人才培養的教學模式,我們編寫了這本數據庫應用技術的教材。
本教材具有如下特色:
1.根據讀者的層次分類。將數據庫技術分為數據庫基礎知識、數據庫管理技術、數據庫應用技術、現代數據庫技術四個部分,且內容上保持連貫性。讀者可以根據自身需求選擇適當的內容閱讀,不同層次的讀者可以從不同的深度學習數據庫知識。這樣就使得本書更加符合軟件工程應用的特點。
2.面向軟件工程理念,采用工程應用型學習方法,即“提出問題→解決問題→應用分析”的問題驅動方式,突出學生主動探究在整個教學中的作用。
3.在內容描述上,我們換位思考,站在學生的角度闡述概念和理論,避免堆砌大量學生不常用的專業詞匯,使得整個教材通俗易懂。
4.在內容組織上,以一個典型的數據庫應用系統(簡化的醫院管理數據庫)為案例,在MSSQLServer平臺上,以理論和實際相結合的方式,講解數據庫的概念和應用開發技術,以期達到高效的學習效果。
5.本教材的內容分為4部分:①數據庫基礎知識,講述數據庫的基本概念和理論知識,這部分是基礎,面向所有讀者;②數據庫管理技術,講述數據庫維護管理技術,面向關心數據庫維護的讀者;③數據庫應用技術,講述數據庫的設計開發技術,面向關心行業應用系統開發的讀者;④現代數據庫技術及主流數據庫產品介紹,介紹數據庫技術的前沿熱點及主要的數據庫管理系統的商業產品,面向關心數據庫發展動向及實際數據庫產品的讀者。
6.本教材注重將計算機理論知識和現實中的工程應用相結合,適當引入數據庫技術的的最新發展,保持了教學內容的先進性和實用性。本書源于基礎教育的教學實踐及科研實踐中的許多心得體會,凝聚了工作在教學和科研第一線教師多年的教學與科研成果。
通過學習本書,你可以了解:
數據庫的概念、組成結構等基礎知識;
關系數據庫的核心——關系數據模型及數據庫的操作語言SQL;
數據庫的完整性、安全性、恢復、并發控制等數據庫管理技術;
數據庫的應用設計方法和開發技術;
現代數據庫技術的熱點——數據挖掘、數據倉庫及空間數據庫;
目前的主流數據庫管理系統產品——Oracle、SQLServer、DB2、MySQL及Sybase的概況。
教學中,可以根據教學對象和學時等具體情況對書中的內容進行刪減和組合,也可以進行適當擴展,參考學時為32~64學時。為適應教學模式和教學方法的改革,本教材每章配套安排了習題及參考答案、多媒體電子課件及相應的網絡教學資源,請登錄華信教育資源網注冊下載。
本書第1、2、12、13、14章由魏祖寬編寫,第3、4、5、6、7章由鄭莉華編寫,第8、9、10、11章、案例數據庫、習題及附錄的習題答案由胡旺編寫。全書由魏祖寬統稿并定稿。參加本書編寫的還有電子科技大學的胡俊杰、張彪、張鑫、惠孛、周益民、朱小林、代林、胡紅梅、陳佳、張樂信、劉小龍、張江泓,他們在收集基本素材、案例數據、相關技術資料及稿件校對等基礎方面承擔了大量工作。
本書在編寫過程中參考了大量新近出版的相關資料和書籍,吸取了許多專家和同仁的寶貴經驗,在此向他們深表謝意!
由于數據庫應用技術發展迅速,作者學識有限,書中難免存在誤漏之處,望廣大讀者批評指正。
作者
第1章 數據庫系統概論
1.1 數據庫系統的應用及其研究領域
1.2 數據庫系統概述
1.2.1 數據庫的基本概念和相關術語
1.2.2 數據庫技術的產生和發展
1.2.3 數據庫系統的特點
1.3 數據模型
1.3.1 概念模型
1.3.2 數據模型
1.4 數據庫系統的結構與組成
1.4.1 數據庫系統的體系結構
1.4.2 數據庫系統的模式結構
1.4.3 數據庫系統的一般組成
1.5 數據庫語言
1.5.1 四大數據庫語言
1.5.2 結構化查詢語言SQL
1.6 數據庫系統的發展趨勢及前沿技術
1.7 習題
第2章 關系數據模型
2.1 數據模型
2.1.1 概述
2.1.2 概念模型
2.1.3 數據模型的基本要素
2.1.4 數據模型的發展
2.2 關系數據模型
2.2.1 基本概念
2.2.2 關系數據模型的數據結構
2.2.3 數據操作
2.2.4 數據約束
2.2.5 關系數據模型的優缺點
2.3 關系
2.3.1 域、笛卡兒積和關系
2.3.2 關系的性質
2.3.3 關系模式
2.3.4 關系完整性
2.4 關系代數和關系演算
2.4.1 關系代數
2.4.2 關系演算
2.5 習題
第3章 關系數據庫標準語言SQL
3.1 SQL簡介
3.1.1 SQL的發展史
3.1.2 SQL提供的功能
3.1.3 SQL的特點
3.2 數據定義
3.2.1 數據庫的創建、修改與刪除
3.2.2 基本表的定義、修改與刪除
3.3 數據查詢
3.3.1 格式
3.3.2 簡單查詢
3.3.3 連接查詢
3.3.4 用TOP限制結果集
3.3.5 嵌套查詢
3.3.6 集合查詢
3.4 數據更新
3.4.1 插入
3.4.2 修改
3.4.3 刪除
3.5 視圖
3.5.1 視圖的基本概念
3.5.2 視圖的定義與刪除
3.5.3 視圖的查詢
3.5.4 視圖的更新
3.5.5 視圖的作用
3.6 索引
3.6.1 索引的概念
3.6.2 索引的分類
3.6.3 索引的創建與刪除
3.6.4 建立索引的原則
3.7 習題
第4章 完整性約束
4.1 數據庫完整性概述
4.2 完整性約束的分類
4.3 完整性約束的定義
4.3.1 Primary Keys約束
4.3.2 UNIQUE 約束
4.3.3 NOT NULL約束
4.3.4 CHECK約束
4.3.5 Foreign-Key約束
4.3.6 域約束
4.3.7 斷言
4.4 完整性約束的修改
4.4.1 約束的命名
4.4.2 約束的修改
4.5 完整性約束的驗證
4.6 數據庫產品對完整性的支持
4.6.1 Oracle的完整性約束
4.6.2 DB2的完整性約束
4.6.3 SQL Server 2000的完整性約束
4.7 習題
第5章 數據庫安全
5.1 計算機安全概述
5.2 數據庫安全性控制
5.3 自主訪問控制(DAC)
5.3.1 權限
5.3.2 授權
5.3.3 授權圖
5.3.4 授權和視圖
5.3.5 角色
5.3.6 收回權限
5.4 強制訪問控制(MAC)
5.5 跟蹤審計
5.6 數據庫安全性的其他技術
5.6.1 數據加密
5.6.2 鑒定
5.7 習題
第6章 數據庫恢復技術
6.1 事務概念
6.2 數據庫恢復概述
6.3 恢復的實現技術
6.3.1 日志
6.3.2 更新事務的執行與恢復
6.3.3 檢查點
6.3.4 數據轉儲
6.4 故障的種類及恢復策略
6.4.1 故障的分類
6.4.2 不同故障的恢復策略
6.5 RAID
6.5.1 RAID的優點
6.5.2 RAID的分級
6.5.3 RAID級別的選擇
6.5.4 RAID的應用
6.6 習題
第7章 并發控制
7.1 事務的并發執行
7.2 并發執行可能引起的問題
7.3 可串行化
7.3.1 串行調度
7.3.2 可串行化調度
7.3.3 可恢復性
7.4 基于鎖的并發控制協議
7.4.1 封鎖
7.4.2 兩段鎖協議(2PL)
7.4.3 鎖的升級及更新鎖
7.5 活鎖與死鎖
7.5.1 活鎖
7.5.2 死鎖的形成
7.5.3 死鎖的預防
7.5.4 死鎖的檢測及處理
7.6 多粒度封鎖
7.7 習題
第8章 關系數據庫設計理論
8.1 關系模式設計中的問題
8.2 函數依賴
8.2.1 函數依賴的定義
8.2.2 FD的邏輯蘊涵
8.2.3 FD的Armstrong公理
8.2.4 函數依賴與碼的聯系
8.2.5 屬性集的閉包
8.2.6 FD推理規則的完備性
8.2.7 FD集的最小依賴集
8.3 模式分解
8.3.1 模式分解問題
8.3.2 無損分解
8.3.3 保持函數依賴的分解
8.3.4 模式分解與模式等價問題
8.4 規范化
8.4.1 第一范式(1NF)
8.4.2 第二范式(2NF)
8.4.3 第三范式(3NF)
8.4.4 BC范式(BCNF)
8.4.5 模式設計的原則
8.5 多值函數依賴與4NF
8.5.1 多值函數依賴
8.5.2 FD與MVD的推理規則集
8.5.3 4NF
8.6 連接依賴和5NF
8.7 本章小結
8.8 習題
第9章 數據庫設計方法
9.1 數據庫設計概述
9.1.1 數據庫的設計方法
9.1.2 數據庫開發生命周期方法
9.1.3 數據庫設計的基本過程
9.2 數據庫需求分析
9.2.1 需求描述與分析
9.2.2 需求分析的步驟
9.2.3 數據字典
9.3 概念數據庫設計
9.3.1 概念數據庫設計的必要性
9.3.2 概念設計的方法和步驟
9.3.3 概念設計工具:E-R圖
9.4 數據庫邏輯結構設計及優化
9.4.1 邏輯設計環境
9.4.2 E-R模式向關系模型的轉換
9.4.3 用關系規范化理論對關系數據
模型進行優化
9.5 數據庫的物理設計
9.5.1 數據庫的物理結構確定
9.5.2 物理結構的評價
9.6 數據庫的實施和運行維護
9.6.1 實際數據庫結構的建立
9.6.2 裝入數據
9.6.3 應用程序開發和調試
9.6.4 數據庫試運行
9.6.5 數據庫運行和維護
9.7 習題
第10章 數據庫高級開發技術
10.1 游標
10.1.1 游標種類
10.1.2 游標操作
10.2 存儲過程
10.2.1 存儲過程的概念
10.2.2 存儲過程的種類
10.2.3 存儲過程的操作
10.3 函數
10.3.1 SQL中函數的概念
10.3.2 函數類型
10.3.3 函數的操作
10.4 觸發器
10.4.1 觸發器的概念
10.4.2 觸發器的作用
10.4.3 觸發器的工作過程
10.4.4 觸發器的操作
10.5 嵌入式SQL
10.5.1 ESQL的處理過程
10.5.2 ESQL與主語言之間的通信
10.5.3 ESQL的使用規定
10.5.4 ESQL的使用技術
10.6 數據庫的連接訪問
10.6.1 ODBC
10.6.2 JDBC
10.7 XML數據庫
10.7.1 XML數據模型
10.7.2 XML數據庫
10.8 本章小結
10.9 習題
第11章 數據倉庫技術
11.1 商業智能
11.1.1 商業智能是什么
11.1.2 商業智能過程
11.1.3 商業智能的