本書基于“數據庫原理 + SQL Server數據庫 + ADO.NET數據庫訪問技術 + VB.NET主語言”架構及其內容體系,全面、系統地介紹了數據庫系統的基本概念、基本原理、基本技術和基本設計方法。全書共分11章,內容包括數據庫系統概述、關系運算、數據庫應用系統設計方法、SQL Server 2012數據庫與數據表的創建、關系數據庫語言SQL、關系數據庫模式的規范化設計、TransactSQL與存儲過程、數據庫應用系統體系結構與訪問技術、數據庫應用系統設計與實現、數據庫保護技術、數據庫技術新發展等。內容不僅覆蓋了關系數據庫原理、數據庫應用系統設計方法和技術,而且較全面地介紹了利用ADO.NET訪問數據庫的過程和方法,介紹了VB.NET程序設計基礎和VB.NET綁定數據方法; 給出了一個完整的教學管理數據庫應用系統的設計案例及程序源碼,具有鮮明的理論與應用緊密結合特色。
本書內容上兼顧了數據庫課程教學的應用型和工程型要求,內容選材新穎精練,理論與實踐并重,針對性與系統性強。語言精練,表述通俗,圖文并茂; 案例驅動,配有大量習題,便于復習、練習和綜合設計實踐。
本書可作為高等院校本科計算機科學與技術、軟件工程、網絡工程、信息安全、物聯網工程、數字媒體技術、信息工程、信息與計算科學、信息管理與信息系統、地理信息系統、電子商務等專業的數據庫課程教材,也可作為電氣類專業研究生的數據庫課程教材,還可供相關領域專業的高等院校師生、從事計算機軟件研究和信息系統設計的科技人員和工程技術人員參考。
第3版前言
隨著信息技術的迅猛發展和信息化社會水平的進一步提升,數據庫技術已經成為國家信息基礎設施和信息化社會中的最重要的支撐技術之一; 基于數據庫技術和數據庫管理系統(DBMS)的應用軟件和裝備制造系統中的控制軟件的研發,已經成為計算機及其相關專業領域技術和管理人員的必備知識和基本技能。數據庫技術已在國民經濟的各個領域得到了十分廣泛的應用,并在推動科技發展和社會進步方面起著越來越重要的作用。
本書第1版和第2版自2009年和2012年出版以來,在幾十多所院校的計算機類專業、電子信息類專業、管理類專業和其他相關專業的教學中得到了采用,許多學生、教師和讀者對本書的進一步改版都給予了特別的關心,并提出了許多寶貴的建議。出版第3版的原因一是將第2版中基于SQL Server 2005的概念、平臺軟件環境介紹、SQL Server語句練習、數據庫應用系統設計應用等方面的內容,都改寫成基于SQL Server 2012,以適應數據庫軟件的版本更新。二是完善和優化第2版中的部分內容和實例,特別是進一步完善和優化了基于SQL Server 2012的數據庫應用系統設計案例的設計過程及程序代碼,進一步突出了面向綜合設計能力培養的主題,提高了對學生學習和設計過程的指導性。三是刪除了一些不重要的內容。
本教材在內容選取上兼顧了應用型人才和工程型人才培養的要求,構建了以“數據庫原理+ SQL Server數據庫+ ADO.NET數據庫訪問技術+ VB.NET主語言”為架構的數據庫課程內容體系,具有理論與應用結合的鮮明特色,教學參考及應用價值高。
數據庫課程理論抽象,實踐性強,對數據庫整體架構理解的要求高。本教材在編寫手法上旨在努力貫徹“深、活、透、新”四字教學要求,即把數據庫設計理論講深,把數據庫的SQL語言講活,把數據庫設計方法講透,把數據庫應用技術講新,以便使課程教學效果力爭達到: 在講解數據庫系統的整體概念時能讓學生自己搭起數據庫的總體架子,在講解數據庫設計理論時能讓學生穿起定義、定理之間的鏈子,在講解數據庫的保護技術時能讓學生厘清它們內部的口子,在講解數據庫應用系統設計時能讓學生掌握與實際結合的路子,在講解數據庫新技術時能給學生指出新技術未來的影子。
本教材第3版共分11章,第1章是數據庫系統概述,第2章介紹關系運算,第3章是數據庫應用系統設計方法,第4章介紹SQL Server 2012數據庫與數據表的創建,第5章是關系數據庫語言SQL,第6章介紹關系數據庫模式的規范化設計,第7章是TransactSQL與存儲過程,第8章介紹數據庫應用系統體系結構與訪問技術,第9章是數據庫應用系統設計與實現,第10章介紹數據庫保護技術,第11章是數據庫技術新發展。內容覆蓋了關系數據庫原理、數據庫應用系統設計方法和設計技術。
本書可作為高等院校本科計算機科學與技術、軟件工程、網絡工程、信息安全、物聯網工程、數字媒體技術、信息工程、信息與計算科學、信息管理與信息系統、地理信息系統、電子商務等專業的數據庫課程教材,也可作為相關專業研究生的數據庫課程教材,還可供相關領域專業的高等院校師生、從事計算機軟件研究和信息系統設計的科技人員和工程技術人員參考。
本書的第1章、第2章、第3章、第6章、第10章由李俊山編寫,第9章、附錄A、附錄B、附錄C由葉霞編寫,第5章、第8章由李俊山和葉霞編寫,第4章由羅蓉編寫,第7章由李俊山和羅蓉編寫,第11章由李俊山和劉東編寫。另外,李建華、趙方舟、楊威、張嬌、楊亞威等參與了部分資料整理和早期版本的數據庫應用系統案例程序的編寫。
由于作者水平有限,書中難免有不當之處,敬請廣大讀者和專家批評指正。
李俊山
2017年3月Email: lijunshan403@163.com
第1章數據庫系統概述
1.1數據與數據管理
1.1.1信息與數據
1.1.2數據管理技術的發展
1.2數據庫系統組成
1.2.1數據庫
1.2.2數據庫管理系統
1.2.3數據庫應用系統
1.3數據描述與數據模型
1.3.1現實世界的數據描述
1.3.2數據模型
1.3.3層次模型
1.3.4網狀模型
1.4關系模型
1.4.1關系模型的基本概念
1.4.2關系的鍵與關系的屬性
1.5數據庫的內部體系結構
1.5.1數據庫內部體系結構中的三級模式結構
1.5.2數據庫內部體系結構中的兩級映像與數據獨立性
1.5.3數據庫內部體系結構的概念
習題1
第2章關系運算
2.1關系的數學定義
2.1.1笛卡兒積的數學定義
2.1.2關系的數學定義
2.2關系代數
2.2.1基于傳統集合理論的關系運算
2.2.2關系代數特有的關系運算
2.2.3關系運算綜合示例
2.2.4關系代數運算在關系數據庫查詢操作中的應用
2.3關系演算
2.3.1元組關系演算
2.3.2域關系演算
*2.43種關系運算表達能力的等價性
2.4.1關系演算表達式的安全性約束
2.4.2安全的元組關系演算表達式滿足的條件
2.4.3安全的域關系演算表達式滿足的條件
2.4.43種關系運算表達能力的等價性定理
習題2
第3章數據庫應用系統設計方法
3.1數據庫應用系統設計概述
3.1.1數據庫應用系統的生命周期
3.1.2數據庫應用系統設計方法
3.1.3數據庫應用系統研發、管理和使用人員視圖級別
3.2用戶需求分析
3.2.1用戶需求分析過程
3.2.2數據流圖及用戶業務處理邏輯描述
3.2.3數據字典
3.2.4數據庫應用系統的功能需求
3.2.5數據庫應用系統環境配置與安全性需求
3.3數據庫概念結構設計
3.3.1屬性表概念結構設計方法
3.3.2實體與實體集
3.3.3實體集之間的聯系及聯系集
3.3.4ER圖設計方法
3.3.5實體聯系模型設計中的一些特殊情況
3.3.6基于ER圖的概念結構設計步驟和方法
3.4數據庫邏輯結構設計
3.4.1屬性表表示的概念結構向關系模型的轉換
3.4.2ER圖表示的概念結構向關系模型的轉換
3.4.3關系數據庫模式的規范化設計及優化
3.5數據庫物理結構設計
3.5.1數據庫的物理文件與數據表
3.5.2數據庫物理文件的存儲位置
3.5.3索引技術(數據表的存儲結構與組織方式1)
3.5.4數據聚簇(數據表的存儲結構與組織方式2)
3.5.5數據庫物理結構評價
3.6數據庫實現技術簡介
3.7數據庫應用系統運行與系統維護
3.7.1軟件維護
3.7.2運行與維護時期的主要工作
習題3
第4章SQLServer2012數據庫與數據表的創建
4.1SQLServer2012關系數據庫系統
4.1.1SQLServer2012的基礎知識
4.1.2SQLServerManagementStudio
4.1.3SQLServer2012的服務器管理
4.1.4SQLServer2012的聯機叢書和教程
4.2SQLServer2012數據庫的存儲結構
4.3SQLServer2012數據庫創建
4.3.1SQLServer2012數據庫
4.3.2使用SQLServerManagementStudio創建數據庫
4.4創建數據表
4.4.1使用表設計器創建表
4.4.2表結構的修改
4.4.3表的刪除
4.5表中數據的插入和更新
4.6創建索引
4.6.1SQLServer中的索引
4.6.2建立索引的基本原則
4.6.3使用SQLServerManagementStudio操作索引
習題4
第5章關系數據庫語言SQL
5.1SQL的功能與特點
5.1.1SQL的功能
5.1.2SQL的特點
5.2表的基本操作
5.2.1表的創建、修改與撤銷
5.2.2表中數據的插入、修改和刪除
5.3SQL的數據查詢
5.3.1投影查詢
5.3.2選擇查詢
5.3.3分組查詢
5.3.4結果的排序查詢
5.3.5模糊查詢(字符串匹配)
5.3.6SQL語言中的常用函數
5.3.7表的連接查詢
5.3.8嵌套查詢
5.3.9謂詞演算查詢
5.3.10并、交、差運算查詢
5.4SQL的視圖操作
5.4.1視圖的創建
5.4.2在視圖上進行查詢操作
5.4.3用戶視圖對數據庫應用系統設計及系統性能帶來的影響
5.5SQL中帶有子查詢的數據更新操作
5.5.1帶有子查詢的數據插入操作
5.5.2帶有子查詢條件的數據更新操作
5.6嵌入式SQL與游標應用
5.6.1嵌入式SQL
5.6.2SQLServer2012的游標及其使用
習題5
第6章關系數據庫模式的規范化設計
6.1關系約束與關系模式的表示
6.2對關系模式進行規范化設計的必要性
6.3函數依賴
6.3.1函數依賴的定義
6.3.2具有函數依賴約束的關系模式
6.3.3函數依賴的邏輯蘊涵
6.4函數依賴的公理體系
6.4.1阿姆斯特朗公理
6.4.2阿姆斯特朗公理的推論
6.4.3X關于F的閉包及其計算
6.4.4最小函數依賴集
6.5關系模式的分解
6.5.1關系模式分解的概念
6.5.2保持無損的分解
6.5.3保持依賴的分解
6.6關系模式的規范化
6.6.1候選鍵的求解方法
6.6.2第一范式
6.6.3第二范式
6.6.4第三范式
6.6.5鮑依斯柯德范式
6.6.6范式之間的關系和關系模式的規范化
6.6.7向3NF的模式分解算法
6.7關系模式的規范化方法小結
習題6
第7章TransactSQL與存儲過程
7.1TransactSQL基礎
7.2TransactSQL的語言要素
7.2.1常量
7.2.2變量
7.2.3表達式與運算符
7.2.4TransactSQL函數
7.3TransactSQL流程控制語句
7.3.1BEGIN…END語句
7.3.2IF…ELSE語句
7.3.3CASE語句
7.3.4WHILE語句
7.3.5WAITFOR語句
7.3.6其他語句
7.4基于TransactSQL的數據庫創建與管理應用
7.4.1利用TransactSQL語句創建數據庫
7.4.2利用TransactSQL語句管理數據庫
7.5存儲過程
7.5.1存儲過程基礎
7.5.2創建存儲過程
7.5.3執行存儲過程
7.5.4管理存儲過程
習題7
第8章數據庫應用系統體系結構與訪問技術
8.1數據庫應用系統的體系結構
8.1.1集中式計算模式的數據庫應用系統
8.1.2CS結構的數據庫應用系統
8.1.3BS結構的數據庫應用系統
8.2ADO.NET數據庫訪問接口
8.2.1認識ADO.NET
8.2.2ADO.NET常用對象
8.2.3ADO.NET訪問數據庫的方法
8.3VB.NET程序設計基礎
8.3.1窗體
8.3.2控件
8.3.3屬性
8.3.4事件
8.3.5方法
8.4用VB.NET綁定數據
8.4.1VB.NET數據綁定概念
8.4.2DataGridView控件綁定數據源
8.4.3用代碼方式綁定數據源
習題8
第9章數據庫應用系統設計與實現
9.1系統功能分析
9.2數據庫結構創建
9.3新建應用系統項目
9.4應用系統設計與實現
9.4.1登錄模塊
9.4.2學生信息添加功能模塊
9.4.3學生信息查詢功能模塊
9.4.4成績信息查詢功能模塊
9.4.5成績信息維護功能模塊
9.4.6主界面模塊
9.5系統調試運行
習題9
第5章關系數據庫語言SQL
SQL(StructuredQueryLanguage,結構化查詢語言)是一種介于關系代數和元組演算之間的關系數據庫語言,1974年由Boyce和Chamberlin提出,1975年至1979年由IBM公司在SystemR上實現,1986年由美國國家標準局(AmericanNationalStandardInstitute,ANSI)批準為關系數據庫語言的國家標準,1987年由國際標準化組織(InternationalStandardOrganization,ISO)批準為國際標準,1993年我國也批準其為中國國家標準。隨著SQL語言的發展和完善,至1999年國際標準化組織已公布了最新的SQL標準SQL—99,也即SQL—3。SQL在世界絕大多數關系數據庫中的采用,極大地推進了數據庫技術的發展和廣泛應用,并已在數據庫之外的其他領域的軟件產品中得到應用。也進一步突顯出學習數據庫技術和SQL語言的重要性。
5.1SQL的功能與特點
在SQL語言中,把關系模式稱為基本表(BaseTable),簡稱為表;有時在容易與上下文有關概念相混淆的地方也稱為關系表。
5.1.1SQL的功能
SQL語言按各語句完成的功能主要分為數據定義語句、數據操縱語句和數據控制語句3大類,相應的功能也分為3類。
1.數據定義功能
SQL的數據定義功能包括定義基本表、定義視圖、定義索引等,由SQL語言的數據定義語句實現。
本章將介紹基本表和視圖的定義,以及基本表的變更(修改)。
2.數據操作功能
SQL的數據操縱功能包括數據查詢和數據更新。數據查詢是指按照某種要求從數據庫中檢索出需要的數據,并對其進行統計、分組、排序等,由SQL語言的數據查詢語句實現;數據更新包括數據的插入、刪除、修改等數據維護操作,由SQL語言的更新類語句實現。
3.數據控制功能
SQL的數據庫控制功能包括用戶授權、基本表和視圖授權、事務控制、數據完整性和安全性控制等,由SQL的數據控制類語句實現。
5.1.2SQL的特點
SQL語言集數據定義、數據查詢、數據控制功能于一體;簡捷易學,靈活易用;非過程性強,開發應用過程簡單。同時在應用中具有以下兩個特點。
1.SQL具有交互式命令和嵌入式兩種工作方式
SQL語言提供了交互式命令(在SQL的交互式工作方式中,每一個SQL語句又可看作是一條SQL命令,所以常常稱SQL語句為SQL命令)方式和嵌入式兩種工作方式。在交互式命令工作方式下,用戶可以以交互式命令方式通過直接輸入SQL命令(語句)對數據庫進行操作。例如,在SQLServer2012中,用戶可以在查詢編輯器窗口直接輸入SQL命令(語句)對數據庫進行操作;在嵌入式工作方式下,SQL語句可以被嵌入到某種高級語言(例如,VB.NET、VC、Java等)程序中實現對數據庫的操作,并利用主語言(所嵌入的高級語言稱為宿主語言,簡稱主語言)的強大計算功能、邏輯判斷功能、屏幕控制及輸出功能等,實現對數據的處理和輸入/輸出控制等。
2.SQL支持數據庫的三級模式結構
SQL語言支持的關系數據庫三級模式結構如圖5.1所示。視圖和部分基本表構成了關系數據庫的外模式。視圖由某個或某些數據庫表中滿足一定條件約束的數據組成,從程序員的觀點看,視圖和基本表是一樣的。數據庫應用系統中的全體基本表構成了該關系型數據庫應用系統的全局邏輯模式。用于存儲用戶數據的所有存儲文件構成了該關系型數據庫應用系統的內模式。一般情況下,一個表可以帶有一個或多個索引,一個或多個表存放在一個存儲文件中。存儲文件對用戶是透明的。
圖5.1SQL對關系數據庫三級模式的支持
本章將以交互式命令方式的形式介紹SQL語言中主要的語句及其功能。在應用舉例中除特別說明外,總是假設使用圖1.8給出的大學教學管理數據庫中的關系及其當前值和圖1.11的大學教學管理數據庫概念模式中的關系模式。
5.2表的基本操作
SQLServer2012的SQLServerManagementStudio工具中的查詢編輯器,為用戶和數據庫管理員提供了在交互式命令方式下,使用數據定義語句、數據操縱語句和數據查詢語句對數據庫進行操作的環境。本章后續內容在介紹有關的SQL語句過程中,將利用SQLServer2012的交互式命令環境對各相關SQL語句的功能進行驗證。
表的基本操作包括以表為對象的操作(表的創建、修改和撤銷)和以表中數據為對象的操作(數據的插入、修改和刪除)。
5.2.1表的創建、修改與撤銷