本書全面介紹了Microsoft SQL Server 2012數據庫設計與項目實踐的相關知識和應用技能。全書分為3篇,主要內容包括數據庫設計、數據庫應用與開發和數據庫安全管理與維護三部分。
本書采用了基于工作過程系統化的教學情境設計,通過新生入學管理系統、高校課務管理系統、權限管理系統等多個項目,由淺入深,從簡到繁,細致完整地介紹了數據庫設計方法,SQL Server 2012數據庫環境的安裝,數據庫創建,數據查詢,TransactSQL語言,存儲過程,觸發器,事務,SQL Server安全機制,SQL Server 2012配置,數據的導入導出,數據庫的備份與恢復。本書以實現學生在課務管理系統中的選課功能為例,介紹SQL Server 2012數據庫在WinForm窗體程序中的應用,以拓展和提高讀者的數據庫項目開發能力,從而加強對數據庫理論的理解。
本書可作為高職高專、中職、成人教育院校和計算機培訓學校數據庫相關課程的教材,同時,也可作為數據庫設計與應用人員的參考用書。
本書采用了基于工作過程系統化的教學情境設計,通過導入新生入學管理系統、高校課務管理系統、權限管理系統等多個項目,由淺入深、從簡到繁,細致完整地介紹數據庫設計方法、SQL Server 2012數據庫環境的安裝、數據庫創建、數據查詢、Transact-SQL語言、存儲過程、觸發器、事務、SQL Server安全機制、SQL Server 2012配置、數據的導入導出、數據庫的備份與恢復。并以實現學生在課務管理系統中的選課功能為例,介紹SQL Server2012數據庫在Windows應用程序中的開發與應用,以拓展和提高讀者的數據庫項目實踐開發能力,從而加強對基礎數據庫理論的理解。
本書可以作為職業教育、成人教育院校和計算機培訓學校數據庫相關課程的教材,也可作為數據庫設計與應用人員的入門與提高教程。
前言
在進入大數據時代的今天,數據庫得到了廣泛的應用。與專業的數據庫設計師相比,沒有項目實踐經驗的讀者往往會遇到以下問題:
網頁界面都設計好了,怎么連接數據庫?
用戶要登錄網站,如何保存和管理登錄信息?
存儲過程如何使用?
如何提高數據檢索的速度?
……
是否進入項目組后才能解決以上問題呢?答案是不盡然的。實際上,對于真正的數據庫設計師來講,這些都不會是問題。讀者們會遇到這些問題,主要是因為沒有一個真正“項目實踐”環境。
本書內容
本書依托SQLServer2012中文版軟件,圍繞“數據庫系統設計與項目實踐”這個主題,將與之相關的知識和技能融入學習情境,深入淺出地加以講解,確保讀者能將理論和實踐相結合,從而做到融會貫通。
情境1:以新生入學管理系統數據庫設計為例,介紹數據庫設計的基本原理。內容包括范式理論、實體—關系模型及數據庫系統設計步驟等,重點突出數據庫邏輯設計和規范化方面的應用。
情境2:以高校課務管理系統數據庫設計為例,進一步掌握數據流圖等工具在數據庫設計過程中的應用,介紹多對多實體關系的邏輯設計方法。
情境3:介紹權限管理系統中數據庫的用戶需求分析、概念設計和邏輯設計的方法。
情境4:介紹安裝和配置SQLServer2012數據庫的方法,及新生入學管理系統數據庫的創建方法。
情境5:主要介紹創建、維護數據庫表對象的方法,添加表記錄和創建索引的方法,重點突出了數據完整性的實現和維護。
情境6:布置圖書管理系統數據庫設計拓展項目練習,綜合運用數據庫設計的方法完成從用戶需求分析到數據庫物理實現的各個階段的任務。
情境7:以高校課務管理系統數據庫為例主要介紹簡單數據查詢、分類匯總查詢、多表連接查詢、子查詢和創建視圖的方法。
情境8:以高校課務管理系統為例主要介紹TSQL數據操縱語言,完成數據添加、更新和刪除操作。
情境9:以高校課務管理系統中完成學生選課為例介紹存儲過程的創建、維護和管理,同時介紹TSQL語言中的變量、運算符、函數、流程控制和注釋等元素。
情境10:以觸發器在學生選課中的應用為例,介紹DDL和DML兩種類型觸發器在實際項目開發中的使用和維護。
情境11:介紹數據庫中并發處理的概念和事務與鎖機制的應用。
情境12:以課務管理系統中學生登錄界面、學生選課功能實現為例介紹基于C#的WinForm技術與SQLServer2012數據庫的連接、訪問和操作的實現方法。
情境13:介紹Windows身份登錄用戶訪問SQLServer服務器和數據庫的方法,數據庫對象授權的方法。
情境14:介紹SQLServer身份登錄用戶訪問SQLServer服務器和數據庫的方法,架構在數據庫安全性中的應用,及數據庫角色的創建和使用。
情境15:介紹SQLServer2012的備份與恢復的方法,同時介紹SQLServer2012之間、SQLServer2012與Excel之間的數據導入與導出方法。
本書定位與特色
(1)工作過程系統化情境設計
本書內容以數據庫崗位職業能力培養為目標,按照數據庫項目開發的基本工作過程,將數據庫設計、數據庫應用、數據庫管理與維護相關內容組成一個完整的知識鏈。通過導入新生入學管理系統、課務管理系統等多個不同功能的數據庫設計實踐,使學習過程由簡入繁,利于學生融會貫通。
(2)應用為主、能力為本
本書自始至終緊扣“應用為主旨、能力為本位”的現代教育理念,通過綜合項目新生入學管理系統和高校課務管理系統,按照“必需、夠用”的原則對SQLServer2012數據庫系統設計與項目應用所需的各種知識進行了整合,重點培養學生的數據庫項目綜合設計與應用能力。
(3)多項目引導、任務驅動
本書以新生入學管理系統、高校課務管理系統和權限管理系統為教學項目,貫穿整本書的知識內容。在整體項目引入的基礎上,每個知識點由相應的任務模塊來支撐,處處體現“項目引導、任務驅動”的教學思想。
。4)理實一體、兼顧考證
依托新生入學管理系統和高校課務管理系統等項目,理論教學與實踐教學齊頭并進,每個任務中都有機融合了知識點的講解和技能的訓練,融“教、學、做”于一體。同時,本書在知識點的編排和課后作業的設計上還兼顧了微軟MCTS數據庫開發認證的考證需要。
本書讀者對象
本書可作為SQLServer2012數據庫職業認證教材和各類院校SQLServer2012數據庫系統設計與綜合項目應用的教材,也非常適合作為SQLServer2012數據庫自學用書和參考書。
參與本書編寫的還有周建林、陳士川,感謝吳懋剛對全書做了詳細的審稿。由于編者水平所限,書中不足之處在所難免,敬請廣大讀者朋友批評指正。
編者2017年6月
第1篇數據庫設計
情境1新生入學管理系統數據庫設計
任務1.1新生入學管理系統數據庫需求分析
1.1.1什么是數據庫
1.1.2數據模型
1.1.3關系數據庫
1.1.4數據庫設計
任務1.2新生入學管理系統數據庫概念設計
1.2.1數據庫建模
1.2.2實體—關系模型
任務1.3新生入學管理系統數據庫邏輯設計
1.3.1二維關系表
1.3.2表的鍵
1.3.3ER圖轉化為二維表
任務1.4數據庫設計規范化
情境2高校課務管理系統數據庫設計
任務2.1高校課務管理系統數據庫需求分析
2.1.1需求分析
2.1.2需求功能分析工具——數據流圖
任務2.2高校課務管理系統數據庫概念設計
任務2.3高校課務管理系統數據庫邏輯設計
2.3.1多對多關系邏輯設計
2.3.2數據庫完整性設計
2.3.3標識字段設計
2.3.4復合主鍵設計
情境3權限管理系統數據庫設計
任務3.1權限管理系統數據庫用戶需求分析
任務3.2權限管理系統數據庫概念設計
任務3.3權限管理系統數據庫邏輯設計
3.3.1Identity標識字段應用
3.3.2UniqueIdentifier標識字段應用
情境4創建新生入學管理系統數據庫
任務4.1安裝和配置SQLServer2012數據庫服務器
4.1.1SQLServer2012特性
4.1.2SQLServer2012體系結構
4.1.3SQLServer2012的版本選擇
4.1.4SQLServer2012的安裝環境
任務4.2啟動和連接SQLServer2012數據庫
4.2.1SQLServerManagementStudio簡介
4.2.2使用SQLServerManagementStudio
4.2.3配置SQLServer2012
4.2.4聯機叢書
任務4.3“新生入學管理系統”數據庫創建
4.3.1SQLServer2012系統數據庫
4.3.2數據庫文件
4.3.3數據庫對象
情境5創建數據表
任務5.1創建新生入學管理系統數據表
5.1.1表的類型
5.1.2表的約束
5.1.3級聯刪除和更新
任務5.2創建高校課務管理系統數據表及索引
5.2.1索引的類型
5.2.2何時用索引
5.2.3創建索引
5.2.4索引碎片的處理
任務5.3向表中添加數據
5.3.1數據單行插入
5.3.2數據多行插入
5.3.3創建表同時插入數據
情境6拓展練習:圖書管理系統的數據庫設計
任務6.1系統需求分析
任務6.2數據庫設計要求
實訓一數據庫設計
實訓二數據庫的創建
實訓三表的創建
第2篇數據庫應用與開發
情境7查詢與統計數據
任務7.1查詢單表數據
7.1.1查詢機制
7.1.2簡單SELECT查詢
7.1.3WHERE子句
7.1.4ORDERBY子句
任務7.2帶有計算列和運算符的查詢
7.2.1字符串連接運算
7.2.2查詢條件及運算符
7.2.3通配符
任務7.3分類匯總查詢
7.3.1GROUPBY子句
7.3.2HAVING子句
7.3.3聚合函數
任務7.4多表連接查詢
7.4.1交叉連接
7.4.2內連接
7.4.3外連接
7.4.4表別名
任務7.5子查詢
7.5.1單值子查詢
7.5.2多值子查詢
任務7.6創建視圖
7.6.1視圖的優點
7.6.2視圖的創建
7.6.3視圖數據更新
7.6.4視圖加密
情境8管理數據表
任務8.1合并多表的查詢結果
任務8.2添加表記錄
8.2.1單行插入
8.2.2多行插入
8.2.3創建表同時插入數據
任務8.3更新表記錄
8.3.1UPDATE語句
8.3.2數學函數
任務8.4刪除無用的數據
情境9存儲過程在學生選課過程中的應用
任務9.1創建存儲過程
9.1.1存儲過程的優點
9.1.2存儲過程的種類
9.1.3系統存儲過程
9.1.4用戶自定義存儲過程
任務9.2TransactSQL編程基礎
9.2.1常量與變量
9.2.2運算符與表達式
9.2.3流程控制
9.2.4數據類型轉換函數
任務9.3學生選課存儲過程的設計
9.3.1WHILE循環結構
9.3.2BREAK中斷語句
9.3.3CONTINUE語句
任務9.4存儲過程的管理
情境10觸發器在學生選課過程中的應用
任務10.1創建AFTER觸發器
10.1.1AFTER觸發器工作機制
10.1.2INSERTED表和DELETED表
任務10.2創建INSTEADOF觸發器
任務10.3創建DDL觸發器
10.3.1定義DDL觸發器
10.3.2DDL觸發器觸發機制
任務10.4修改和禁用觸發器
10.4.1修改觸發器
10.4.2禁用和啟用觸發器
10.4.3刪除觸發器
情境11處理事務與鎖
任務11.1定義事務
任務11.2并發與鎖
11.2.1并發問題
11.2.2封鎖技術
11.2.3死鎖
情境12高校課務管理系統開發
任務12.1學生登錄界面設計
12.1.1NET框架開發環境
12.1.2ADO.NET對象
12.1.3三層架構
任務12.2高校課務管理系統主窗體的實現
任務12.3選課功能實現
實訓四數據查詢
實訓五存儲過程與觸發器應用
第3篇數據庫安全管理與維護
情境13Windows身份登錄用戶的數據庫安全管理
任務13.1創建Windows驗證模式登錄名
13.1.1SQLServer安全機制
13.1.2登錄賬戶和身份驗證方式
任務13.2創建與登錄名同名的數據庫用戶
13.2.1數據庫用戶
13.2.2guest用戶
任務13.3為數據庫對象授權
13.3.1對象權限
13.3.2語句權限
情境14SQLServer身份登錄用戶的數據庫安全管理
任務14.1創建SQLServer驗證模式的登錄名
任務14.2創建學生評教架構及相應數據對象
14.2.1架構的定義
14.2.2架構的命名
任務14.3為高校課務管理系統創建用戶角色
14.3.1固定服務器角色
14.3.2固定數據庫角色
14.3.3應用程序角色
14.3.4用戶自定義角色
情境15高校課務管理系統數據庫備份與導入導出
任務15.1創建高校課務管理系統數據庫完全備份
15.1.1備份類型
15.1.2備份設備
任務15.2創建高校課務管理系統數據庫差異備份及日志備份
15.2.1差異備份
15.2.2日志備份
15.2.3文件組備份
15.2.4備份策略
任務15.3將教師表數據導入其他SQLServer數據表
任務15.4將SQLServer數據表導入導出到Excel中
15.4.1sp_configure系統存儲過程
15.4.2AdHocDistributedQueries高級選項
實訓六數據庫安全管理
實訓七數據庫備份與恢復
附錄SQLServer2012常用函數
參考文獻
1篇數據庫設計
數據庫設計是數據庫應用和開發的基礎,一個優秀的數據庫設計方案將決定數據在使用過程中的可用性和高效性。本篇介紹數據庫系統設計的基本過程,并結合數據庫在高校學生和教學管理中的典型應用,以3個不同的項目案例說明數據庫設計的一般方法與基本步驟,為初學數據庫設計的人員提供幫助。
【學習情境】
情境1新生入學管理系統數據庫設計
情境2高校課務管理系統數據庫設計
情境3權限管理系統數據庫設計
情境4創建新生入學管理系統數據庫
情境5創建數據表
情境6拓展練習:圖書管理系統的數據庫設計
【學習目標】
。1)理解關系型數據庫的基本概念。
。2)掌握數據庫設計的基本方法和步驟。
。3)熟練掌握概念設計階段ER圖的使用。
。4)熟練掌握ER圖轉換為關系邏輯表的方法。
。5)理解數據庫設計規范化。
(6)學習SQLServer2012數據庫環境的安裝與啟用。
(7)掌握SQLServer2012數據庫和表的創建。
情境1新生入學管理系統
數據庫設計
隨著計算機技術的普及應用,越來越多高校采用信息化手段對學生的個人信息進行采集和管理。目前項目團隊接到一個研發任務,要求完成某高校的新生入學信息的管理與維護工作。通過該系統可以完成對新生入學后個人基本信息、所在班級信息、所屬系部信息等數據的計算機錄入、查詢與維護。接受任務后,項目團隊成員開始著手進行系統數據庫設計階段的工作。
數據庫系統的分析與設計分為需求分析、概念設計、邏輯設計、物理設計4個階段。
任務1.1新生入學管理系統數據庫需求分析
任務描述
項目開發團隊所有成員利用座談會、調研問卷、用戶走訪等方式充分調研系統用戶,對用戶提出的系統功能需求進行詳細的分析與整理,明確本系統開發環境和功能要求,收集系統所需的數據信息。
相關知識
1.1.1什么是數據庫
數據庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫。計算機中的數據可以通過數據庫管理系統(DatabaseManagementSystem,DBMS)進行管理。
數據庫管理系統是指數據庫系統中對數據進行管理的軟件系統,它是數據庫系統的核心組成部分,用戶對數據庫的一切操作,包括定義、查詢、更新以及各種控制,都是通過數據庫管理系統進行的。
負責數據的規劃、設計、協調、維護和管理的人員稱為數據庫管理員(DatabaseAdministrator,DBA)。在不引起混淆的情況下,人們常常將數據庫管理系統稱為數據庫。常見的Access、SQLServer、Oracle和MySQL等都屬于數據庫管理系統。
由Microsoft發布的SQLServer產品是一個典型的關系型數據庫管理系統,該系統以其功能強大、操作簡便、安全可靠的優點,得到很多用戶的認可,應用也越來越廣泛。
1.1.2數據模型
根據數據存儲方式的不同,數據庫可以使用多種類型的系統模型(模型是指數據庫管理系統中數據的存儲結構),其中較為常見的有層次模型(HierarchicalModel)、網狀模型(NetworkModel)和關系模型(RelationModel)3種。
1.層次模型
層次數據庫使用層次模型作為自己的存儲結構。這是一種樹狀結構,它由節點和連線組成,其中節點表示實體,連線表示實體之間的關系。在這種存儲結構中,數據將根據需要分門別類地存儲于不同的層次下,如圖11所示。
從圖11所示的例子中可以看出,層次模型的優點是數據結構類似金字塔,不同層次之間的關聯性直接而且簡單;缺點是由于數據縱向發展,橫向關系難以建立,數據可能會重復出現,造成管理維護的不便。
2.網狀模型
網狀模型存儲結構中數據記錄將用網中的節點表示,數據與數據之間的關系則用網中各個節點的連線表示,從而構成一個節點與連線的復雜網狀模型,如圖12所示。
……