本書全面系統(tǒng)地闡述了數據庫系統(tǒng)的基本概念、基本方法和基本技術。內容包括:數據管理技術的發(fā)展,數據庫技術的特點,數據庫系統(tǒng)的組成,數據庫的體系結構,數據模型及其分類,關系數據模型,數據庫和表的創(chuàng)建和管理,完整性約束的實現和管理,數據的查詢和增刪改,索引的機理與使用,視圖的定義和作用,數據庫安全技術,事務及其特性,并發(fā)控制,數據庫恢復技術,關系數據庫設計理論,數據庫設計,Python數據庫應用系統(tǒng)開發(fā)技術,NoSQL的基本概念和技術特點,MongoDB的基本操作,以及練習和實驗指導。
數據庫技術始于20世紀60年代末,它的誕生極大地推動了計算機技術的應用和發(fā)展,已成為計算機信息系統(tǒng)的核心技術和重要基礎。進入21世紀后,隨著云計算、大數據和機器學習等技術的迅速發(fā)展,數據庫技術本身已是計算機科學技術中發(fā)展最快的分支之一,也是高等學校計算機相關專業(yè)的核心專業(yè)課程。
本教材的作者長期從事數據庫技術的教學工作,在本書的內容選擇和結構組織上凝聚了作者近35年數據庫課程教學工作的實踐經驗。本書具有以下特點。
(1) 強調關系數據庫,關注NoSQL技術。盡管關系數據庫在某些大數據應用場景下顯得有些力不從心,但對于大多數應用來說關系數據庫還是最有效的解決方案。DBEngines數據庫排行榜上排名前三位的均為關系數據庫,而且其分值遠高于其他產品,顯示出其強大的生命力。因此,本書用了8章的篇幅來闡述關系數據庫技術,為今后從事數據庫應用系統(tǒng)的開發(fā)奠定了堅實的基礎。同時,為了順應大數據時代的需求,用單獨一章來闡述蓬勃發(fā)展中的NoSQL數據庫的基本概念和技術特點,為今后進一步學習和使用NoSQL數據庫技術提供了良好的開端,F在這兩種數據庫技術也在相互融合,吸收彼此的優(yōu)點,如關系數據庫SQL Server中添加了文檔存儲功能,而NoSQL數據庫MongoDB中添加了對事務ACID的支持。因此本書內容的選擇,有利于學生充分了解兩種數據庫技術各自的長處,并能正確地選擇和合理地使用。
(2) 強調理論聯系實際,注重實踐應用。選擇主流的商用關系數據庫產品SQL Server作為實踐平臺,在介紹關系數據庫的基本方法和基本技術的同時,穿插介紹SQL Server中的相應方法和技術,如SQL Server中數據庫和基本表的創(chuàng)建和管理、索引和視圖的創(chuàng)建和應用、數據庫安全技術、并發(fā)控制技術以及備份和恢復技術。選擇主流的商用NoSQL數據庫產品MongoDB來講解NoSQL技術。附錄中的實驗指導與教學同步,實驗內容具有針對性、啟發(fā)性和綜合設計性。所有這些安排都有利于學生掌握數據庫系統(tǒng)的基本方法和基本技術。
第6章系統(tǒng)地介紹了SQL Server中函數、游標、存儲過程和觸發(fā)器的應用。第9章以“學校管理信息系統(tǒng)”為例完整地介紹了數據庫設計的全過程。第10章以當前最受關注的Python語言為例介紹數據庫應用系統(tǒng)的開發(fā)技術。這些內容的闡述有利于學生今后從事數據庫應用系統(tǒng)的開發(fā)。另外限于篇幅,一個以SQL Server 2014為數據庫、以Python 3.6為編程語言開發(fā)的針對中學的“排課系統(tǒng)”完整案例將通過電子稿的形式贈送給讀者,用于加強實踐應用教學。
(3) 數據庫技術的概念眾多,原理比較抽象,不易理解。作者精心選擇和編寫了數量多而且題型豐富的練習題,這些練習題不但與教學同步,而且不同題型覆蓋不同的知識點,相互之間不重復。通過這些練習題的解答有利于學生對數據庫技術的理解、消化和應用。
本書的適應性十分廣泛,從初學者到有一定基礎的讀者,從師生到專業(yè)技術人員,具體來說:
(1) 對于初學者可從本書全面系統(tǒng)地了解數據庫技術的基本概念、基本方法和基本技術。
(2) 對于有一定基礎的讀者可從本書了解有關數據庫的一些新概念和新技術,如NoSQL基本概念和技術特征,Python連接和操作SQL Server技術。
(3) 對于教師和學生,本書除了可以作為教材外,也是一本很好的教學參考書。第9章中的數據庫設計實例、附錄中的實驗指導、各章的練習題以及贈送的中學排課系統(tǒng),都是很好的教學參考資料。
(4) 對于專業(yè)技術人員,可從本書了解主流的商用關系數據庫產品SQL Server和NoSQL數據庫產品MongoDB的基本使用方法,從而在實踐中掌握數據庫技術。
考慮到學校機房以Windows 7平臺為主,書中關系數據庫例題在SQL Server 2014環(huán)境下調試通過,NoSQL數據庫例題在MongoDB 3.4.18環(huán)境下調試通過,讀者可根據自己的具體情況靈活選用。需要說明的是,本書不是SQL Server和MongoDB的使用手冊,有關這兩種數據庫產品更詳細、更深入、更全面完整的技術文檔請查閱其官網。使用本書的老師若需要練習題答案、PPT文件、排課系統(tǒng)源代碼、主要例題代碼和創(chuàng)建實驗用數據庫代碼、教學大綱、期末試卷等,可從清華大學出版社網站下載。
本書結構合理、概念清晰、圖文并茂、例題豐富,適合作為高等學校計算機、軟件工程、數據科學與大數據技術、大數據管理與應用、人工智能、物聯網工程、電子商務等相關專業(yè)本科生數據庫課程的教材,也可作為電器類專業(yè)研究生數據庫課程的教材,還可作為計算機等級考試(三級數據庫技術)的參考書和自學教材。
由于編者水平有限,雖然力求精準,但疏漏與不足之處在所難免,敬請專家和讀者指正。
編者
2020年4月于上海
陸黎明,副教授,碩士生導師。曾任計算機系主任,計算機本科專業(yè)負責人,現任計算機系黨支部書記。2000年起至今任上海市計算機等級考試命題專家組成員。2010年獲校級“精彩課堂”優(yōu)秀獎,2011年獲校級“師德楷模”,2014年獲上海市“育才獎”。
目錄
第1章概述
1.1數據庫技術的產生與發(fā)展
1.1.1數據處理和數據管理
1.1.2數據管理技術的發(fā)展
1.1.3數據庫技術的特點和展望
1.2數據庫系統(tǒng)的組成
1.2.1數據庫
1.2.2數據庫管理系統(tǒng)等軟件
1.2.3數據庫管理員
1.3數據庫的體系結構
1.3.1模式的概念
1.3.2三級模式結構
1.3.3二級映像和二級獨立性
習題1
第2章關系數據庫
2.1數據模型
2.1.1數據模型的定義和基本要求
2.1.2數據模型的三個層次
2.1.3數據模型的三個組成要素
2.2概念模型概述
2.2.1信息世界中的基本概念
2.2.2實體間的聯系
2.2.3概念模型的表示方法——ER圖
2.3邏輯數據模型概述
2.3.1層次模型
2.3.2網狀模型
2.3.3關系模型
2.4關系模型概述
2.4.1關系數據結構
2.4.2關系的完整性
2.4.3關系操作的特點與分類
2.5關系代數
2.5.1傳統(tǒng)的集合運算
2.5.2專門的關系運算
2.5.3擴展的關系代數運算
2.5.4關系代數運算的應用實例
習題2
第3章結構查詢語言(SQL)
3.1SQL概述
3.1.1SQL的產生與發(fā)展
3.1.2SQL的功能與特點
3.2數據定義
3.2.1數據庫的創(chuàng)建、修改與刪除
3.2.2SQL中的數據類型
3.2.3基本表的創(chuàng)建、修改與刪除
3.3完整性約束的實現
3.3.1數據庫完整性的概念
3.3.2各類完整性約束的實現
3.3.3表中完整性約束的增加與刪除
3.4數據查詢
3.4.1單表查詢
3.4.2連接查詢
3.4.3嵌套查詢
3.4.4集合查詢
3.5數據更新
3.5.1插入數據
3.5.2修改數據
3.5.3刪除數據
習題3
第4章索引與視圖
4.1索引
4.1.1索引的概念
4.1.2創(chuàng)建索引的基本原則
4.1.3索引的創(chuàng)建與刪除
4.1.4SQL Server 2014中的索引
4.2視圖
4.2.1視圖的定義與刪除
4.2.2查詢視圖
4.2.3更新視圖
4.2.4視圖的作用
4.2.5SQL Server 2014中的索引視圖
習題4
第5章數據庫安全技術
5.1安全性控制技術概述
5.1.1計算機系統(tǒng)的三類安全性問題
5.1.2安全標準簡介
5.1.3數據庫安全性控制概述
5.2用戶管理和角色管理
5.2.1用戶管理
5.2.2角色管理
5.3權限管理
5.3.1授予權限
5.3.2收回權限
5.4SQL Server的安全機制
5.4.1SQL Server 2014的身份驗證模式
5.4.2SQL Server 2014的固定角色
5.4.3拒絕權限
習題5
第6章函數、游標、存儲過程和觸發(fā)器
6.1腳本、批和注釋符
6.1.1腳本
6.1.2批
6.1.3注釋符
6.2常量、變量和運算符
6.2.1常量
6.2.2變量
6.2.3運算符
6.3流程控制語句
6.3.1塊語句
6.3.2分支語句
6.3.3循環(huán)語句
6.3.4其他控制語句
6.4函數
6.4.1系統(tǒng)函數
6.4.2用戶自定義函數
6.5游標
6.5.1定義游標
6.5.2打開游標
6.5.3通過游標讀取數據
6.5.4通過游標修改和刪除數據
6.5.5關閉游標和釋放游標
6.6存儲過程
6.6.1系統(tǒng)存儲過程
6.6.2用戶自定義存儲過程
6.6.3使用存儲過程實現封裝業(yè)務邏輯
6.7觸發(fā)器
6.7.1觸發(fā)器概述
6.7.2觸發(fā)器的創(chuàng)建和管理
6.7.3使用觸發(fā)器實現強制業(yè)務規(guī)則
習題6
第7章事務管理
7.1事務
7.1.1事務的定義
7.1.2事務的ACID性質
7.1.3事務的狀態(tài)
7.1.4SQL Server 2014中的事務
7.2并發(fā)控制
7.2.1并發(fā)操作與數據的不一致性
7.2.2可串行性
7.2.3封鎖及封鎖協(xié)議
7.2.4兩段鎖協(xié)議
7.2.5鎖的粒度
7.2.6事務的隔離級別
7.2.7SQL Server 2014中的并發(fā)控制
7.3數據庫恢復技術
7.3.1恢復的實現技術
7.3.2數據庫備份和登記日志方法
7.3.3故障類型及恢復策略
7.3.4具有檢查點的恢復技術
7.3.5SQL Server 2014中的數據庫備份與恢復
習題7
第8章關系數據庫設計理論
8.1關系模式規(guī)范化設計的必要性
8.2函數依賴與碼
8.2.1函數依賴的定義及分類
8.2.2函數依賴的公理系統(tǒng)和推理規(guī)則
8.2.3屬性集X關于函數依賴集F的閉包
8.2.4碼
8.2.5候選碼的快速求解方法
8.3關系模式的規(guī)范化
8.3.1第一范式
8.3.2第二范式
8.3.3第三范式
8.3.4BC范式
8.3.5規(guī)范化小結
8.4關系模式的分解
8.4.1模式分解的概念
8.4.2分解的無損連接性和函數依賴保持性
8.4.3模式分解的算法
習題8
第9章數據庫設計
9.1數據庫設計概述
9.1.1數據庫設計在軟件開發(fā)中的地位和作用
9.1.2數據庫設計的基本步驟
9.2基于ER圖的概念結構設計
9.2.1實體與用戶需求
9.2.2屬性及其分類
9.2.3聯系及其分類
9.2.4弱實體類型
9.2.5擴展的ER特性
9.2.6ER圖實例
9.2.7概念結構設計的方法和步驟
9.3邏輯結構設計
9.3.1強實體的表示
9.3.2聯系的表示
9.3.3弱實體的表示
9.3.4聚集的表示
9.3.5邏輯結構設計的步驟
9.4ER模型設計問題
9.5物理結構設計
9.6數據庫設計實例——學校管理信息系統(tǒng)
9.6.1系統(tǒng)概述
9.6.2學籍管理子系統(tǒng)的需求與概念設計
9.6.3行政管理子系統(tǒng)的需求與概念設計
9.6.4課表制定子系統(tǒng)的需求與概念設計
9.6.5子系統(tǒng)視圖的集成
9.6.6邏輯結構設計
習題9
第10章Python數據庫應用系統(tǒng)開發(fā)技術
10.1Python語言及開發(fā)環(huán)境
10.1.1Python語言概述
10.1.2開發(fā)環(huán)境搭建
10.2Python第三方庫及其安裝
10.2.1第三方庫概述
10.2.2安裝第三方庫
10.2.3導入第三方庫
10.3Python數據庫訪問模塊pymssql
10.3.1connect函數
10.3.2Connection對象
10.3.3Cursor對象
10.3.4Python訪問數據庫的主要步驟
10.4Python圖形用戶界面編程
10.4.1GUI編程概述
10.4.2PyQt5中應用程序的創(chuàng)建
10.4.3PyQt5中的常用控件
習題10
第11章NoSQL數據庫技術
11.1NoSQL產生的根源和必要性
11.1.1關系數據庫的特點
11.1.2大數據下關系數據庫存在的問題
11.2NoSQL數據庫技術概述
11.2.1大數據4V特征
11.2.2NoSQL定義
11.2.3NoSQL技術介紹
11.3NoSQL數據庫的存儲模式
11.3.1鍵值存儲模式
11.3.2文檔存儲模式
11.3.3列族存儲模式
11.3.4圖存儲模式
11.4MongoDB實踐環(huán)境的創(chuàng)建
11.4.1MongoDB安裝與配置
11.4.2MongoDB數據類型
11.4.3電商案例的數據模型設計方案
11.5MongoDB基本操作實踐
11.5.1數據庫的基本操作
11.5.2插入文檔
11.5.3查詢文檔
11.5.4修改文檔
11.5.5刪除文檔
11.5.6索引
11.5.7聚合
11.6兩種數據庫技術的選擇
習題11
附錄A實驗指導
實驗準備實驗背景介紹
實驗1創(chuàng)建和管理數據庫和數據表
實驗2實現數據完整性
實驗3查詢數據
實驗4視圖的定義與使用
實驗5數據庫安全技術
實驗6存儲過程與觸發(fā)器
實驗7并發(fā)控制
實驗8數據庫恢復技術
實驗9索引與查詢優(yōu)化
實驗10導入導出及數據庫的分離與附加
參考文獻