這是一本嚴格采用“工作過程導向”模式規(guī)范編寫的Microsoft SQL Server 2012的教材。本書內(nèi)容可分為兩個部分:數(shù)據(jù)庫的創(chuàng)建和數(shù)據(jù)庫的管理。本書的內(nèi)容組織以關系數(shù)據(jù)庫理論知識為基礎,注重操作技能的培養(yǎng)和實際問題的解決,旨在使學生掌握使用和管理Microsoft SQL Server 2012。本書以創(chuàng)建“學生管理系統(tǒng)”的數(shù)據(jù)庫為工作任務,具體內(nèi)容包括設計數(shù)據(jù)庫、創(chuàng)建數(shù)據(jù)庫、創(chuàng)建表、更新和查詢記錄、Transact-SQL語言、視圖和索引、用戶定義函數(shù)、存儲過程、觸發(fā)器、管理數(shù)據(jù)庫安全、備份和還原數(shù)據(jù)庫、導入和導出數(shù)據(jù)庫中的數(shù)據(jù)。最后的項目18中介紹了學生管理系統(tǒng)應用程序的設計和實施,從而完成了一個完整的數(shù)據(jù)庫系統(tǒng)。本書貼切實際,結(jié)構(gòu)合理,內(nèi)容豐富,操作方便。本書作為Microsoft SQL Server 2012的入門類教材,既可以作為高等職業(yè)教育計算機及相關專業(yè)的教材,也可作為Microsoft SQL Server 2012的各種培訓班、職業(yè)資格等級考試或認證考試的培訓教材,還可用于讀者自學。
這是一本嚴格采用“工作過程導向”模式規(guī)范編寫的Microsoft SQLServer 2012的教材。本書內(nèi)容可分為兩個部分:數(shù)據(jù)庫的創(chuàng)建和數(shù)據(jù)庫的管理。本書的內(nèi)容組織以關系數(shù)據(jù)庫理論知識為基礎,注重操作技能的培養(yǎng)和實際問題的解決,旨在使學生掌握使用和管理MicrosoftSQL Server 2012。本書以創(chuàng)建“學生管理系統(tǒng)”的數(shù)據(jù)庫為工作任務,具體內(nèi)容包括設計數(shù)據(jù)庫、創(chuàng)建數(shù)據(jù)庫、創(chuàng)建表、更新和查詢記錄、Transact-SQL語言、視圖和索引、用戶定義函數(shù)、存儲過程、觸發(fā)器、管理數(shù)據(jù)庫安全、備份和還原數(shù)據(jù)庫、導入和導出數(shù)據(jù)庫中的數(shù)據(jù)。*后的項目18中介紹了學生管理系統(tǒng)應用程序的設計和實施,從而完成了一個完整的數(shù)據(jù)庫系統(tǒng)。本書貼切實際,結(jié)構(gòu)合理,內(nèi)容豐富,操作方便。本書作為Microsoft SQL Server 2012的入門類教材,既可以作為高等職業(yè)教育計算機及相關專業(yè)的教材,也可作為MicrosoftSQL Server 2012的各種培訓班、職業(yè)資格等級考試或認證考試的培訓教材,還可用于讀者自學。
為適應高職院校應用型人才培養(yǎng)迅速發(fā)展的趨勢,培養(yǎng)以就業(yè)市場為導向的具備“職業(yè)化”特征的高級應用型人才,著眼于國家發(fā)展和培養(yǎng)造就綜合能力人才的需要,“任務驅(qū)動、項目導向”成了主流的教學模式。本書以Microsoft SQL Server 2012為數(shù)據(jù)庫管理系統(tǒng),通過完成一個完整的學生管理系統(tǒng),引導學生掌握Microsoft SQL Server 2012的使用和管理。
本書特色
本書以實際工作任務為背景,將知識的學習、技能的練習與任務相結(jié)合,再通過課后練習幫助讀者鞏固所學內(nèi)容。每一個項目均針對數(shù)據(jù)庫設計和實施中的一個工作過程環(huán)節(jié)來傳授相關的課程內(nèi)容,實現(xiàn)實踐技能與理論知識的整合,將工作環(huán)境與學習環(huán)境有機地結(jié)合在一起。本書內(nèi)容簡明扼要,結(jié)構(gòu)清晰,通過工作過程的講解將掌握關系數(shù)據(jù)庫的理論知識和掌握Microsoft SQL Server 2012的使用方法有機結(jié)合,示例眾多,步驟明確,講解細致,突出可操作性和實用性。再輔以豐富的實訓題和課后練習,使學生得到充足的訓練,具備使用Microsoft SQL Server 2012解決實際問題的能力。
本書由高職院校的優(yōu)秀教師編寫,是在其現(xiàn)有教學成果基礎上整合編寫而成的,作者擁有豐富的開發(fā)案例和教學經(jīng)驗。本書共分為18個項目,計劃需要80個課時,需要用一學期進行學習。
本書主要內(nèi)容
項目1介紹數(shù)據(jù)庫的設計。通過該項目的學習,主要了解數(shù)據(jù)庫的基本概念、數(shù)據(jù)模型、關系代數(shù)和數(shù)據(jù)庫的設計方法與步驟,掌握數(shù)據(jù)庫的理論知識,為后面使用Microsoft SQL Server 2012做好準備。
項目2介紹安裝SQL Server 2012。通過該項目的學習,了解SQL Server的組成,掌握如何安裝SQL Server 2012。
項目3講解如何創(chuàng)建數(shù)據(jù)庫。通過該項目的學習,主要掌握SQL Server數(shù)據(jù)庫的分類和文件組成,掌握創(chuàng)建、修改、刪除和查看數(shù)據(jù)庫的方法,掌握分離和附加數(shù)據(jù)庫的方法。
項目4介紹如何創(chuàng)建數(shù)據(jù)庫中的表,設置表的數(shù)據(jù)完整性。通過該項目的學習,掌握表的概念,掌握創(chuàng)建、修改、刪除表的方法,掌握數(shù)據(jù)完整性的概念、分類和具體實施方法。
項目5介紹如何創(chuàng)建索引。通過該項目的學習,掌握索引的概念和分類,掌握創(chuàng)建、修改、刪除索引的方法,了解設計和優(yōu)化索引的方法。
項目6介紹如何創(chuàng)建視圖。通過該項目的學習,掌握視圖的概念、分類、創(chuàng)建和使用。
項目7介紹了Transact-SQL語言。通過該項目的學習,了解Transact-SQL語言的基礎知識。
項目8講解如何查詢數(shù)據(jù)庫中的記錄。通過該項目的學習,了解SELECT語句的組成,掌握SELECT語句的書寫。
項目9學習使用Transact-SQL語句插入、更新和刪除記錄。
項目10介紹事務和鎖。通過該項目的學習,掌握事務的概念、屬性、類型和使用,掌握并發(fā)控制的概念和類型,掌握隔離級別的類型,掌握鎖定、鎖粒度、鎖模式、鎖兼容性和死鎖的概念。
項目11學習使用游標。通過該項目的學習,掌握游標的概念、類型和使用方法。
項目12講解創(chuàng)建存儲過程。通過該項目的學習,掌握存儲過程的概念、分類和作用,介紹創(chuàng)建、修改、刪除、執(zhí)行和查看存儲過程的方法。
項目13學習使用用戶定義函數(shù)。通過該項目的學習,掌握用戶定義函數(shù)的概念、作用和類型,掌握創(chuàng)建、修改、刪除、執(zhí)行和查看用戶定義函數(shù)的方法。
項目14學習使用觸發(fā)器。通過該項目的學習,掌握觸發(fā)器的概念、分類、工作原理、創(chuàng)建和使用。
項目15講解對數(shù)據(jù)庫的備份和還原。通過該項目的學習,掌握備份、還原和恢復的概念,掌握備份設備的概念,掌握恢復模式的概念和類型,掌握不同恢復模式下對數(shù)據(jù)庫備份和還原的方法。
項目16講解導入和導出數(shù)據(jù)庫中的數(shù)據(jù)。通過該項目的學習,掌握SQL Server導入和導出向?qū)У氖褂,學習SSIS的作用和工作方式,掌握創(chuàng)建和執(zhí)行SSIS包來導入和導出數(shù)據(jù)庫中的數(shù)據(jù)。
項目17學習管理數(shù)據(jù)庫安全。通過該項目的學習,掌握數(shù)據(jù)庫權(quán)限層次結(jié)構(gòu),掌握身份驗證模式的分類,掌握登錄名、用戶、權(quán)限、角色的概念、分類、創(chuàng)建和使用。
項目18設計并完成了基于Windows的學生管理系統(tǒng)和基于Web的學生管理系統(tǒng)。通過本項目的完成,學習Windows應用程序的創(chuàng)建方法,學習Web應用程序的創(chuàng)建方法,學習注冊和登錄頁面的設計方法,學習查詢學生功能的實現(xiàn)方法。
讀者對象
本書作為Microsoft SQL Server 2012的入門類教材,既可以作為高等職業(yè)教育計算機及相關專業(yè)的教材,也可作為Microsoft SQL Server 2012的各種培訓班、職業(yè)資格等級考試或認證考試的培訓教材,還可用于讀者自學。
本書由高云(南京信息職業(yè)技術學院教師)任主編,崔艷春(南京信息職業(yè)技術學院教師)、夏平(南京信息職業(yè)技術學院教師)任副主編,其中項目1、2、3、4、5、6、7、8、9、10由高云編寫,項目11、12、13、14由夏平編寫,項目15、16、17、18由崔艷春編寫,高云負責本書的校對。全書框架結(jié)構(gòu)由何光明擬定,王珊珊、石雅琴、盧振俠、鄭愛琴、楊橙、陳鳳、曹冬梅等參與了部分資料整理工作。
由于作者水平有限,書中難免存在不當之處,懇請廣大讀者批評指正。
編 者
項目1
設計數(shù)據(jù)庫
【項目要點】
* 數(shù)據(jù)庫的基本概念。
* 數(shù)據(jù)管理技術的發(fā)展歷史。
* 數(shù)據(jù)庫的三級模式結(jié)構(gòu)。
* 數(shù)據(jù)模型的概念、組成和類型。
* 概念數(shù)據(jù)模型的概念。
* 實體-聯(lián)系模型的基本概念和E-R圖。
* 邏輯數(shù)據(jù)模型的概念和類型。
* 關系模型的基本概念。
* 關系代數(shù)。
* 數(shù)據(jù)庫設計的方法和步驟。
【學習目標】
* 掌握數(shù)據(jù)庫的基本概念、數(shù)據(jù)管理技術的發(fā)展歷史和數(shù)據(jù)庫三級模式結(jié)構(gòu)。
* 掌握數(shù)據(jù)模型的概念、組成和類型。
* 掌握概念數(shù)據(jù)模型的概念。
* 掌握實體-聯(lián)系模型的基本概念。
* 掌握E-R圖的組成和畫法。
* 掌握關系模型的基本概念。
* 掌握關系代數(shù)表達式的書寫。
* 掌握數(shù)據(jù)庫設計的方法和步驟。
1.1 數(shù)據(jù)庫的基本概念
1.1.1 數(shù)據(jù)庫
信息(Information)是現(xiàn)實世界事物的存在方式或運動狀態(tài)的反映,其內(nèi)容描述的是事物之間的相互聯(lián)系和相互作用。
數(shù)據(jù)(Data)是描述事物的符號記錄。數(shù)據(jù)包括文字、圖形、圖像、聲音等。數(shù)據(jù)包括兩個方面,即型和值。型是指數(shù)據(jù)的類型,是數(shù)值類、字符類還是日期類等;值是指數(shù)據(jù)在給定類型下的值,比如數(shù)值類的值可以是12、字符類的值可以是“中國”、日期類的值可以是“2015-3-22”等。
數(shù)據(jù)和信息之間存在著聯(lián)系,信息通過數(shù)據(jù)表示,而信息是數(shù)據(jù)的含義。
數(shù)據(jù)庫(Database,DB)是一個長期存儲在計算機內(nèi)的、有組織的、有共享的、統(tǒng)一管理的數(shù)據(jù)集合。數(shù)據(jù)庫中的數(shù)據(jù)是按照一定的數(shù)據(jù)模型組織、描述和存儲的,有較小的冗余度、較高的數(shù)據(jù)獨立性和易擴展性。
1.1.2 數(shù)據(jù)庫管理系統(tǒng)
數(shù)據(jù)庫管理系統(tǒng)(Database Management System,DBMS)是使用和管理數(shù)據(jù)庫的系統(tǒng)軟件,位于用戶與操作系統(tǒng)之間,負責對數(shù)據(jù)庫進行統(tǒng)一的管理和控制。所有對數(shù)據(jù)庫的操作都交由數(shù)據(jù)庫管理系統(tǒng)完成,這使得數(shù)據(jù)庫的安全性和完整性得以保證。
數(shù)據(jù)庫管理系統(tǒng)主要具備6個功能:數(shù)據(jù)定義,數(shù)據(jù)的組織、存儲和管理,數(shù)據(jù)操縱,數(shù)據(jù)庫的運行管理和安全保護,數(shù)據(jù)庫的維護,通信和互操作。
數(shù)據(jù)定義功能用于建立和修改數(shù)據(jù)庫的庫結(jié)構(gòu),數(shù)據(jù)庫管理系統(tǒng)提供數(shù)據(jù)定義語言(Data Definition Language,DDL)來完成數(shù)據(jù)定義功能。
數(shù)據(jù)的組織、存儲和管理功能的目標是提高存儲空間利用率,選擇合適的存取方法提高存取效率。數(shù)據(jù)的組織、存儲與管理功能主要包括DBMS如何分類組織、存儲和管理各種數(shù)據(jù),包括數(shù)據(jù)字典、用戶數(shù)據(jù)、存取路徑等,需確定以何種文件結(jié)構(gòu)和存取方式在存儲級上組織這些數(shù)據(jù),如何實現(xiàn)數(shù)據(jù)之間的聯(lián)系。
數(shù)據(jù)操縱功能用于用戶對數(shù)據(jù)庫插入、更新、刪除和查詢數(shù)據(jù),數(shù)據(jù)庫管理系統(tǒng)提供數(shù)據(jù)操縱語言(Data Manipulation Language,DML)來完成數(shù)據(jù)操縱功能。
數(shù)據(jù)庫的運行管理和安全保護功能確保數(shù)據(jù)庫系統(tǒng)的正常運行,內(nèi)容包括多用戶環(huán)境下的并發(fā)控制、安全性檢查、存取限制控制、完整性檢查、日志的管理、事務的管理和發(fā)生故障后數(shù)據(jù)庫的恢復。數(shù)據(jù)庫管理系統(tǒng)提供數(shù)據(jù)控制語言(Data Control Language,DCL)來完成數(shù)據(jù)庫的運行管理和安全保護功能。
數(shù)據(jù)庫的維護功能包括數(shù)據(jù)庫的數(shù)據(jù)輸入、轉(zhuǎn)換、轉(zhuǎn)儲、數(shù)據(jù)庫的重組織、數(shù)據(jù)庫性能監(jiān)視和分析等功能,這些功能是由若干實用程序和管理工具來完成的。
通信和互操作功能是指數(shù)據(jù)庫管理系統(tǒng)與其他系統(tǒng)的通信和不同數(shù)據(jù)庫之間的互操作。
1.1.3 數(shù)據(jù)庫系統(tǒng)
數(shù)據(jù)庫系統(tǒng)(Database Systems,DBS)是指在計算機系統(tǒng)中引入了數(shù)據(jù)庫的系統(tǒng),專門用于完成特定的業(yè)務信息處理。數(shù)據(jù)庫系統(tǒng)包括硬件、軟件和用戶。其中,軟件包括數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、操作系統(tǒng)、應用開發(fā)工具和數(shù)據(jù)庫應用程序。用戶包括系統(tǒng)分析員、數(shù)據(jù)庫設計人員、程序開發(fā)人員、數(shù)據(jù)庫管理員和最終用戶。數(shù)據(jù)庫系統(tǒng)的核心是數(shù)據(jù)庫管理系統(tǒng)。
數(shù)據(jù)庫管理員(Database Administrator,DBA)是專門負責管理和維護數(shù)據(jù)庫系統(tǒng)的人。通常,數(shù)據(jù)庫管理員的工作職責包括參與或負責數(shù)據(jù)庫設計,根據(jù)應用來創(chuàng)建和修改數(shù)據(jù)庫,設計系統(tǒng)存儲方案并制定未來的存儲需求計劃,維護數(shù)據(jù)庫的數(shù)據(jù)安全性、完整性、并發(fā)控制,安裝和升級數(shù)據(jù)庫服務器以及應用程序工具,管理和監(jiān)控數(shù)據(jù)庫的用戶,監(jiān)控和優(yōu)化數(shù)據(jù)庫的性能,制定數(shù)據(jù)庫備份計劃,定期進行數(shù)據(jù)庫備份,在災難出現(xiàn)時對數(shù)據(jù)庫信息進行恢復,等等。在實際工作中,一個數(shù)據(jù)庫系統(tǒng)可能有一個或多個數(shù)據(jù)庫管理員,也可能數(shù)據(jù)庫管理員同時也負責系統(tǒng)中的其他工作。
數(shù)據(jù)庫應用系統(tǒng)(Database Application Systems,DBAS)是指由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫應用程序組成的軟件系統(tǒng)。
1.1.4 數(shù)據(jù)管理技術的發(fā)展
數(shù)據(jù)管理技術是指對數(shù)據(jù)進行分類、組織、編碼、存儲、檢索和維護的技術。數(shù)據(jù)管理技術的發(fā)展大致劃分為3個階段,即人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)階段。
。1) 人工管理階段。20世紀50年代中期之前,計算機剛剛出現(xiàn),主要用于科學計算。硬件存儲設備只有磁帶、卡片和紙帶;軟件方面還沒有操作系統(tǒng),沒有專門管理數(shù)據(jù)的軟件。因此,程序員在程序中不僅要規(guī)定數(shù)據(jù)的邏輯結(jié)構(gòu),還要設計其物理結(jié)構(gòu),包括存儲結(jié)構(gòu)、存取方法、輸入輸出方式等。數(shù)據(jù)的組織面向應用,不同的計算程序之間不能共享數(shù)據(jù),使得不同的應用之間存在大量的重復數(shù)據(jù),數(shù)據(jù)與程序不獨立。數(shù)據(jù)通過批處理方式進行處理,處理結(jié)果不保存,難以重復使用。
(2) 文件系統(tǒng)階段。20世紀50年代中期到60年代中期,隨著計算機大容量存儲設備(如硬盤)和操作系統(tǒng)的出現(xiàn),數(shù)據(jù)管理進入文件系統(tǒng)階段。在文件系統(tǒng)階段,數(shù)據(jù)以文件為單位存儲在外存,且由操作系統(tǒng)統(tǒng)一管理。用戶通過操作系統(tǒng)的界面管理數(shù)據(jù)文件。文件的邏輯結(jié)構(gòu)與物理結(jié)構(gòu)相獨立,程序和數(shù)據(jù)分離。用戶的程序與數(shù)據(jù)可分別存放在外存儲器上,各個應用程序可以共享一組數(shù)據(jù),通過文件來進行數(shù)據(jù)共享。但是,數(shù)據(jù)在文件中的組織方式仍然是由程序決定,因此必然存在相當?shù)臄?shù)據(jù)冗余。數(shù)據(jù)的邏輯結(jié)構(gòu)和應用程序相關聯(lián),一方修改,必然導致另一方也要隨之修改。此外,簡單的數(shù)據(jù)文件不能體現(xiàn)現(xiàn)實世界中數(shù)據(jù)之間的聯(lián)系,只能交由應用程序來進行處理,缺乏獨立性。
。3) 數(shù)據(jù)庫系統(tǒng)階段。20世紀60年代后,隨著計算機在數(shù)據(jù)管理領域的普遍應用,數(shù)據(jù)管理開始運用數(shù)據(jù)庫技術,進入了數(shù)據(jù)庫系統(tǒng)階段。數(shù)據(jù)庫技術以數(shù)據(jù)為中心組織數(shù)據(jù),采用一定的數(shù)據(jù)模型,數(shù)據(jù)模型不僅體現(xiàn)數(shù)據(jù)本身的特征,而且體現(xiàn)數(shù)據(jù)之間的聯(lián)系,數(shù)據(jù)集成性高。根據(jù)數(shù)據(jù)模型建成的數(shù)據(jù)庫數(shù)據(jù)冗余小,易修改、易擴充,便于共享,程序和數(shù)據(jù)有較高的獨立性。數(shù)據(jù)庫管理系統(tǒng)統(tǒng)一管理與控制數(shù)據(jù)庫,保證了數(shù)據(jù)的安全性和完整性,可以有效地控制并發(fā)管理。
20世紀80年代中期以來,數(shù)據(jù)庫技術與其他新技術相結(jié)合,陸續(xù)產(chǎn)生了多種類型的數(shù)據(jù)庫,如面向?qū)ο髷?shù)據(jù)庫、分布式數(shù)據(jù)庫、并行數(shù)據(jù)庫、多媒體數(shù)據(jù)庫、模糊數(shù)據(jù)庫、時態(tài)數(shù)據(jù)庫、實時數(shù)據(jù)庫、知識數(shù)據(jù)庫、統(tǒng)計數(shù)據(jù)庫等。隨著大數(shù)據(jù)時代的到來,各行各業(yè)不僅越來越多地面對海量數(shù)據(jù),更迫切需求信息的挖掘和決策的制定,從而推動數(shù)據(jù)管理技術的進一步發(fā)展。
1.1.5 數(shù)據(jù)庫系統(tǒng)的體系結(jié)構(gòu)
從數(shù)據(jù)庫管理系統(tǒng)角度看,數(shù)據(jù)庫系統(tǒng)通常采用三級模式結(jié)構(gòu),即數(shù)據(jù)庫系統(tǒng)由外模式、模式和內(nèi)模式三級組成,如圖1-1所示。
圖1-1 數(shù)據(jù)庫系統(tǒng)三級模式結(jié)構(gòu)圖
* 模式:模式也稱邏輯模式或概念模式,是數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特性的描述,是所有用戶的公共數(shù)據(jù)視圖。模式和數(shù)據(jù)的物理存儲及硬件無關,也和使用的應用程序無關。一個數(shù)據(jù)庫只有一個模式。
* 外模式:外模式也稱子模式或用戶模式,是數(shù)據(jù)庫用戶能夠使用的部分數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是用戶的數(shù)據(jù)視圖。外模式面向用戶,描述用戶所關心的數(shù)據(jù),是模式的子集。一個數(shù)據(jù)庫可以有多個外模式。
* 內(nèi)模式:內(nèi)模式也稱物理模式或存儲模式,是數(shù)據(jù)庫中數(shù)據(jù)物理結(jié)構(gòu)和存儲方式的描述,是數(shù)據(jù)在數(shù)據(jù)庫內(nèi)部的表示方式。一個數(shù)據(jù)庫只有一個內(nèi)模式。
數(shù)據(jù)庫系統(tǒng)的三級模式滿足了數(shù)據(jù)庫的不同層面的需求。數(shù)據(jù)庫管理系統(tǒng)在三級模式結(jié)構(gòu)之間提供了兩層映像,即外模式/模式映像和模式/內(nèi)模式映像。這種兩層映像機制保證了數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)獨立性。數(shù)據(jù)獨立性包括邏輯獨立性和物理獨立性。
* 外模式/模式映像:每個外模式和模式之間存在外模式/模式映像,是外模式所描述的數(shù)據(jù)局部邏輯結(jié)構(gòu)和模式所描述的全局邏輯結(jié)構(gòu)之間的對應關系。當模式改變時,只要修改外模式/模式的映像,使得外模式保持不變,那么使用外模式的應用程序也保持不變,從而保證了數(shù)據(jù)的邏輯獨立性。邏輯獨立性將數(shù)據(jù)庫的結(jié)構(gòu)與應用程序相分離,減少了修改應用程序的工作量。
* 模式/內(nèi)模式映像:模式和內(nèi)模式之間存在模式/內(nèi)模式映像,是模式所描述的全局邏輯結(jié)構(gòu)和內(nèi)模式所描述的物理存儲結(jié)構(gòu)之間的對應關系。當內(nèi)模式改變時,只要修改模式/內(nèi)模式的映像,使得模式保持不變,那么外模式以及相關的應用程序都不用修改,從而保證了數(shù)據(jù)的物理獨立性。
1.2 數(shù) 據(jù) 模 型
1.2.1 數(shù)據(jù)模型的概念
數(shù)據(jù)模型是數(shù)據(jù)庫的核心和基礎,是對現(xiàn)實世界的抽象描述。數(shù)據(jù)模型描述現(xiàn)實世界的數(shù)據(jù)、數(shù)據(jù)之間的聯(lián)系、數(shù)據(jù)的語義和完整性約束。數(shù)據(jù)模型應能夠比較真實地模擬現(xiàn)實世界,容易被人們理解,便于在計算機上實現(xiàn)。通過數(shù)據(jù)模型的建立,人們完成了從現(xiàn)實世界到信息世界和機器世界之間信息的抽象和表示,使得現(xiàn)實中的問題通過計算機系統(tǒng)得到精準的描述和解決。
1.2.2 數(shù)據(jù)模型的組成
數(shù)據(jù)模型描述了數(shù)據(jù)庫系統(tǒng)的靜態(tài)特征、動態(tài)特征和完整性約束條件。數(shù)據(jù)模型包括數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和完整性約束3個部分。
1. 數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)庫中所有對象類型的集合,是對系統(tǒng)靜態(tài)特征的描述。數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)模型的核心。通常根據(jù)數(shù)據(jù)模型中數(shù)據(jù)結(jié)構(gòu)的類型來命名數(shù)據(jù)模型,如將采用層次結(jié)構(gòu)、網(wǎng)狀結(jié)構(gòu)和關系結(jié)構(gòu)的數(shù)據(jù)模型命名為層次模型、網(wǎng)狀模型和關系模型。
2. 數(shù)據(jù)操作
數(shù)據(jù)操作是基于數(shù)據(jù)結(jié)構(gòu)并對數(shù)據(jù)庫中對象可執(zhí)行的操作和操作規(guī)則的集合,是對系統(tǒng)動態(tài)特征的描述。數(shù)據(jù)操作主要包括數(shù)據(jù)庫中數(shù)據(jù)的插入、更新、修改和查詢的操作。數(shù)據(jù)模型必須定義這些操作的確切含義、操作符號、操作規(guī)則及實現(xiàn)操作的語言。
3. 完整性約束
完整性約束是一組完整性規(guī)則的集合。完整性約束規(guī)定了數(shù)據(jù)模型中的數(shù)據(jù)本身及數(shù)據(jù)之間所需要遵守的約束條件,以便確保數(shù)據(jù)庫中數(shù)據(jù)的正確、有效和相容。
1.2.3 數(shù)據(jù)模型的類型
用計算機解決現(xiàn)實中的問題,這其實就是建立不同階段的數(shù)據(jù)模型的過程。通過建立不同階段的數(shù)據(jù)模型,人們將現(xiàn)實世界的特征抽象出來,然后轉(zhuǎn)化為能用計算機建立的模型,從而達到解決實際問題的目的。
根據(jù)數(shù)據(jù)建模的不同階段,數(shù)據(jù)模型分為概念數(shù)據(jù)模型、邏輯數(shù)據(jù)模型和物理數(shù)據(jù)模型3個類型。
1. 概念數(shù)據(jù)模型
概念數(shù)據(jù)模型,也稱概念模型,能夠真實地反映現(xiàn)實世界,包括事物和相互之間的聯(lián)系,能滿足用戶對數(shù)據(jù)的處理要求,是表示現(xiàn)實世界的一個抽象模型。概念數(shù)據(jù)模型是用戶與數(shù)據(jù)庫設計人員之間進行交流的語言。概念數(shù)據(jù)模型不依賴于特定的數(shù)據(jù)庫管理系統(tǒng),但可以轉(zhuǎn)換為特定的數(shù)據(jù)庫管理系統(tǒng)所支持的數(shù)據(jù)模型。因此,概念數(shù)據(jù)模型要易于理解、易于擴充和易于向各種類型的邏輯數(shù)據(jù)模型轉(zhuǎn)換。
概念數(shù)據(jù)模型有實體-聯(lián)系模型、面向?qū)ο蟮臄?shù)據(jù)模型、二元數(shù)據(jù)模型、語義數(shù)據(jù)模型、函數(shù)數(shù)據(jù)模型等。下面主要介紹實體-聯(lián)系(E-R)模型。
實體-聯(lián)系模型是采用E-R圖來描述現(xiàn)實世界的概念模型。E-R圖由簡單的圖形構(gòu)成,可以直觀地表示現(xiàn)實世界中各類對象的特征和對象之間的聯(lián)系。
1)??E-R圖的介紹
E-R圖的組成元素包括實體集、屬性、聯(lián)系。E-R圖中,實體集用矩形表示,內(nèi)有實體集名稱;屬性用橢圓形表示,內(nèi)有屬性名稱,并以直線與所屬實體集或聯(lián)系相連;聯(lián)系用菱形表示,內(nèi)有聯(lián)系名稱,并以直線與實體集相連,并在聯(lián)系旁邊注明聯(lián)系的類型(1∶1、1∶n或者m∶n)。如果聯(lián)系有屬性,那么也要用直線將屬性和聯(lián)系相連。
2) 實體-聯(lián)系模型中的基本概念
(1) 實體:實體是現(xiàn)實世界中可區(qū)分的客觀對象或抽象概念。例如,一個學生、一門課程。
(2) 屬性:屬性是實體所具有的特征。一個實體往往有多個屬性。例如,每個學生都有學號、姓名、性別、班級、出生日期等屬性。
。3) 實體集:實體集是具有相同屬性描述的實體的集合。例如,所有學生、所有課程。
。4) 實體型:實體型將實體集抽象為實體的名稱和所有屬性來表示該類實體。例如,學生(學號,姓名,性別,班級,出生日期)就是學生實體集的實體型。
。5) 碼:碼也稱鍵,是可以將實體集中每個實體進行區(qū)分的屬性或?qū)傩约。例如,每個學生的學號絕不相同,學號這個屬性可以作為學生實體集的鍵。
。6) 域:域是實體集的各個屬性的取值范圍。例如,學生的性別屬性取值為“男”或“女”。
。7) 聯(lián)系:兩個實體集之間存在一對一、一對多和多對多3種聯(lián)系。例如,一個班主任只管理一個班級,一個班級只有一個班主任,班主任和班級之間是一對一的聯(lián)系;一個班級有多個學生,一個學生只屬于一個班級,班級和學生之間是一對多的聯(lián)系;一門課程有多個學生選修,一個學生選修多門課程,課程和學生之間是多對多的聯(lián)系。兩個實體集之間的3種聯(lián)系如圖1-2所示。
?(a)??1∶1聯(lián)系 ? (b)??1∶n聯(lián)系 (c)??m∶n聯(lián)系
圖1-2 兩個實體集之間的聯(lián)系圖
單一實體集之間也存在一對一、一對多和多對多3種聯(lián)系。例如,領導和職工之間,一個領導可以管理多個職工,而領導本人也是職工,如圖1-3所示。
兩個以上的實體集之間也存在一對一、一對多和多對多3種聯(lián)系。例如,一門課程由多個教師講授,一門課程有多個學生學習,一個學生的一門課程可能由多個教師講授(因為有可能存在補考和重修),如圖1-4所示。
圖1-3 單個實體集之間的一對多聯(lián)系圖 圖1-4 3個實體集之間的多對多聯(lián)系圖
班主任、班級、學生、課程4個實體集組成的E-R圖如圖1-5所示。
圖1-5 班主任、班級、學生、課程實體集的E-R圖
2. 邏輯數(shù)據(jù)模型
邏輯數(shù)據(jù)模型,也稱邏輯模型,是與特定的數(shù)據(jù)庫管理系統(tǒng)相關的數(shù)據(jù)模型。邏輯模型設計的要求是把概念模型轉(zhuǎn)換成所選用的數(shù)據(jù)庫管理系統(tǒng)所支持的特定類型的邏輯模型。
現(xiàn)有的邏輯模型主要包括層次模型、網(wǎng)狀模型和關系模型。
1) 層次模型
層次模型的總體結(jié)構(gòu)為樹形結(jié)構(gòu),其中結(jié)點表示記錄類型,每個記錄類型包含多個字段,結(jié)點之間的連線表示記錄類型之間的聯(lián)系。層次模型有且只有一個根結(jié)點,除根結(jié)點外的所有結(jié)點向上有且只有一個父結(jié)點,向下可以有一個或多個子結(jié)點。層次模型的優(yōu)點是數(shù)據(jù)結(jié)構(gòu)簡單,完整性支持良好,但僅適用于數(shù)據(jù)具有層次性聯(lián)系的場合,插入和刪除結(jié)點操作的限制較多,查詢必須逐級通過父結(jié)點。
2) 網(wǎng)狀模型
網(wǎng)狀模型允許每個結(jié)點有零個或多個父結(jié)點,還允許結(jié)點之間有多個聯(lián)系。網(wǎng)狀模型較層次模型相比更接近現(xiàn)實,存取效率高,但數(shù)據(jù)獨立性復雜,在存取時要指定路徑,應用程序訪問困難。
3) 關系模型
關系模型建立在嚴格的數(shù)學概念基礎上,是當前流行的邏輯模型。以二維表為基本結(jié)構(gòu)所建立的模型稱為關系模型。關系模型中,表是基礎邏輯結(jié)構(gòu),由行和列組成,如表1-1所示。
表1-1 教師信息表
教師工號
姓 名
性 別
出生日期
職 稱
09001
王斌
男
1975-3-26
副教授
09002
李梅
女
1977-6-2
講師
09003
金志明
男
1957-12-15
教授
09004
王思思
女
1981-3-2
助教
關系模型中以表來表示實體以及實體之間的聯(lián)系,以表來存儲記錄,數(shù)據(jù)結(jié)構(gòu)簡單,存取路徑透明,具有良好的數(shù)據(jù)獨立性和安全保密性。關系模型中的基本概念如下。
* 關系:表。
* 元組:也稱記錄,是表中的一行,代表該關系所包含的一個實體。
* 屬性:也稱字段,是表中的一列,代表該關系所具有的一個特性。
* 碼:表中可以唯一確定一個元組的屬性或者屬性組。
* 候選碼:表中所有可以唯一確定一個元組的屬性或者屬性組的集合。其中,屬性組中應沒有可去除的屬性。
* 主碼:表中唯一確定一個元組的屬性或者屬性組。一個表只能有一個主碼。
* 外碼:不是表中的碼,但與另一個表中的主碼相對應的屬性或者屬性組。
* 域:屬性的取值范圍。
* 分量:一個元組中的某個屬性值。
* 關系模式:對關系的描述,可寫成“關系名(屬性1,屬性2,…,屬性n)”。
關系具有以下7個性質(zhì)。
* 關系中元組的個數(shù)有限。
* 關系中的元組不能重復,
* 關系中的元組可以交換順序。
* 關系中的屬性具有原子性,不可分解。
* 關系中各屬性的名稱不能重復。
* 關系中的屬性可以交換順序。
* 關系中各元組同一屬性值的值域是相同的。
關系模型的數(shù)據(jù)操作主要包括查詢、插入、更新和刪除。
關系模型的完整性分為實體完整性、參照完整性和域完整性3類。其中,實體完整性是指關系的主碼值不能為空值;參照完整性是指關系的外碼值必須為空值或者等于所對應主碼所在關系中某個元組的主碼值;域完整性是指關系的屬性值滿足特定的語義要求。
1.2.4 數(shù)據(jù)庫的規(guī)范化
既然關系模型是用關系來保存數(shù)據(jù),那么是不是關系中只要能裝入所有數(shù)據(jù)就行了呢?答案是否定的。關系模式不是隨意設計的。關系模式設計不佳,會導致后續(xù)使用出現(xiàn)如數(shù)據(jù)冗余量過大、插入異常、更新異常、刪除異常等問題。
因此,關系模式的設計必須滿足一定的標準,這個標準就是范式。關系數(shù)據(jù)庫中的關系模式必須滿足一定級別的范式。范式是符合某一種級別的關系模式的集合。目前,關系模式有6種范式,即第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、改進的第三范式(BCNF)、第四范式(4NF)和第五范式(5NF)。滿足最低要求的范式是第一范式(1NF)。在第一范式的基礎上進一步滿足更多要求的稱為第二范式(2NF),其余范式依次類推。
第一范式是指關系模式的每一個屬性都是不可分割的基本數(shù)據(jù)項,同一行同一列中不能有多個值。在任何一個關系數(shù)據(jù)庫中,第一范式是對關系模式的基本要求,不滿足第一范式的數(shù)據(jù)庫就不是關系數(shù)據(jù)庫。例如,學生表包含學號、學生姓名、班級編號和聯(lián)系方式,其中聯(lián)系方式不能將電話、地址和郵編3類數(shù)據(jù)合在一列中顯示,解決的方法是在學生表中設置電話、地址和郵編3個屬性,分別保存這3部分數(shù)據(jù)。
第二范式建立在第一范式的基礎上,即滿足第二范式必須先滿足第一范式。第二范式要求關系模式的非主屬性完全函數(shù)依賴于碼,不能存在對碼的部分函數(shù)依賴。例如,成績表包含學號、學生姓名、班級編號、課程編號、成績,主碼是學號、課程編號和班級編號。但是,只知道學號和課程編號就可以查出該學生的成績,不需要知道學生的班級編號,因此成績表的現(xiàn)有結(jié)構(gòu)不符合第二范式。這樣設計的表在使用中有很多問題,插入一個學生的所有課程成績將反復插入該生的基本信息,如果刪除該生的所有課程成績將導致刪除該生的基本信息,如果該生的基本信息有變化又需要將其所有的成績記錄進行更新。為了解決數(shù)據(jù)冗余和重復操作的問題,可以將其中的學號和班級編號分解出來,形成學生表,原有的成績表保留學號、學生姓名、課程編號和成績。學生表的主碼是學號,成績表的主碼是學號和課程編號,這樣調(diào)整使得兩個表均滿足第二范式。
第三范式建立在第二范式的基礎上,要求關系模式中的非主屬性不依賴于其他非主屬性,也就是不存在傳遞依賴。例如,班級表包含班級編號、班級名稱、系編號、系名稱,主碼是班級編號。如果插入同一個系的兩個班級的信息,將產(chǎn)生兩條記錄,其中系編號和系名稱完全一樣。其實,系編號決定了系名稱,這樣又會產(chǎn)生大量的數(shù)據(jù)冗余?梢蕴砑酉当,系表包含系編號、系名稱、系簡介,主碼是系編號,在班級表中刪除系名稱和系簡介,添加系編號。這樣使得關系模式滿足第三范式。
BCNF建立在第三范式的基礎上,是指關系模式的所有非主屬性完全函數(shù)依賴于碼,所有主屬性完全函數(shù)依賴于不包含它的碼,沒有屬性完全函數(shù)依賴于非碼的任何屬性組。例如,排課表包含課程編號、教師編號和學號。一名教師教一門課程,一名學生上一門課程,一門課程有多名教師任教。由此可見,知道學號和教師編號便可推斷課程編號,但根據(jù)教師編號也可以推斷課程編號。這個關系模式有學號和教師編號及教師編號兩個碼,雖然滿足第三范式,但不滿足BCNF?梢詫⑦@個關系模式分解成任教表和選課表,任教表包含教師編號和課程編號,選課表包含學號和教師編號。這兩個關系模式滿足了BCNF。
第一范式到第五范式的6種范式之間的關系:第五范式高于第四范式高于BCNF高于第三范式高于第二范式高于第一范式。但并不是說關系模式分解的數(shù)量越多越好,表的數(shù)量過多反而會導致連接操作的代價增大,影響數(shù)據(jù)庫的使用效率。一般說來,工程項目中關系數(shù)據(jù)庫設計只需滿足第三范式(3NF)就行了。
1.3 關 系 代 數(shù)
關系模型的數(shù)據(jù)結(jié)構(gòu)是關系,也就是表。對于關系中元組的操作包括插入、更新、刪除和查詢4種。這些操作可以使用數(shù)學理論來進行表述,其中最重要的是關系代數(shù)。
1.3.1 傳統(tǒng)的集合運算
關系代數(shù)中,傳統(tǒng)的集合運算包括并、差、交和笛卡兒積。
。1) 并:假設關系R和關系S,R和S的關系模式完全一樣,則R和S并運算的結(jié)果是由關系R和關系S中所有的元組組成(重復元組需要去除),記作R∪S,如圖1-6所示。
圖1-6 并運算示意圖
。2) 差:假設關系R和關系S,R和S的關系模式完全一樣,則R和S差運算的結(jié)果是僅存在于關系R而不存在于關系S的元組組成,記作R-S,如圖1-7所示。
圖1-7 差運算示意圖
。3) 交:假設關系R和關系S,R和S的關系模式完全一樣,則R和S交運算的結(jié)果是由關系R和關系S共同存在的元組組成,記作R∩S,如圖1-8所示。
圖1-8 交運算示意圖
。4) 笛卡兒積:假設關系R和關系S,則R和S笛卡兒積運算的結(jié)果是由關系R的元組和關系S的元組拼接組成,笛卡兒積的關系模式同樣也是R和S的關系模式的拼接結(jié)果,記作R×S,如圖1-9所示。
圖1-9 笛卡兒積運算示意圖
1.3.2 專門的關系運算
關系代數(shù)中,專門的關系運算包括選擇、投影、連接和除運算。
在使用關系運算時,往往還會使用到比較運算符和邏輯運算符。比較運算符包括>、>=、<、<=、=和<>(代表不等于)。邏輯運算符包括∧(與)、∨(或)和非(?)。比較運算符和邏輯運算符可以組合使用,就是邏輯表達式。例如,a=0、b<3∧c>=10、?(a='abc'∧b<10)。邏輯表達式的結(jié)果只能為邏輯值“真”或者“假”。
。1) 選擇:選擇運算是在關系R中選擇滿足給定條件F的元組,記作?F(R),其中的F是一個邏輯表達式。選擇運算是對關系進行水平分解,也就是說運算結(jié)果的模式和原關系的模式完全一樣。例如,在關系R中選擇屬性A值為“a”并且屬性C值為1的元組,表達式寫作?A='a'∧C=1(R),如圖1-10所示。
?A='a'∧C=1(R)也可以寫作?1='a'∧3=1(R),這里的1='3'的意思是第一屬性列的值等于3,3=1的意思是第三屬性列的值等于1。
(2) 投影:選擇運算是在關系R中選擇所需的屬性列,記作?A(R),其中的A是R中的屬性列。投影運算是對關系進行垂直分解,也就是說運算結(jié)果的模式和原關系的模式不完全一樣,屬性列少于或等于原有關系,如果出現(xiàn)重復行則需要去除。例如,在關系R中對屬性A和屬性B進行投影,表達式寫作A,B(R),如圖1-11所示。
圖1-10 選擇運算示意圖 圖1-11 投影運算示意圖
。3) 連接:連接也稱?連接。連接運算是從關系R和關系S的笛卡兒積運算結(jié)果中選擇屬性值之間滿足條件的元組,記作。其中,i和j分別是關系R和關系S上的屬性組,值具備可比性,?是比較運算符。
連接運算中有兩種最重要的運算,分別是等值運算和自然連接。等值運算是指?為“=”的連接運算。等值運算從是從關系R和關系S的笛卡兒積運算結(jié)果中選擇屬性值相等的元組,記作。自然連接將關系R和關系S中相同屬性組具有相同值的元組進行等值連接,結(jié)果中相同屬性需要去重,記作RS。連接、等值連接和自然連接如圖1-12所示。
。4) 除:假設關系R(X,Y)和關系S(Y,Z),其中X,Y,Z為屬性組。R中的Y與S中的Y可以有不同的屬性名,但必須出自相同的域集。R與S的除運算得到一個新的關系P(X),P是R中滿足下列條件的元組在X屬性列上的投影:元組在X上分量值x的象集Yx包含S在Y上投影的集合。記作R÷S,如圖1-13所示。
圖1-12 連接、等值連接、自然連接運算示意圖
圖1-13 除運算示意圖
1.4 數(shù)據(jù)庫設計的方法和步驟
數(shù)據(jù)庫設計是指將基于特定的信息內(nèi)容、操作方法和應用環(huán)境來設計數(shù)據(jù)庫的數(shù)據(jù)模式。數(shù)據(jù)庫設計的目標是為用戶提供一個高效、安全的數(shù)據(jù)庫,滿足用戶的使用需求。大型數(shù)據(jù)庫設計是一項復雜的工程,要求數(shù)據(jù)庫設計人員既要具有堅實的數(shù)據(jù)庫知識,還要具備應用系統(tǒng)開發(fā)的能力,同時要了解應用系統(tǒng)的業(yè)務使用。因此,數(shù)據(jù)庫設計是一項涉及多學科的綜合性技術。系統(tǒng)設計師、程序設計師、數(shù)據(jù)庫管理員和用戶代表也應參與整個數(shù)據(jù)庫設計過程。
1.4.1 數(shù)據(jù)庫設計的方法
目前常用的各種數(shù)據(jù)庫設計方法都屬于規(guī)范設計法,即都是運用軟件工程的思想與方法,根據(jù)數(shù)據(jù)庫設計的特點,提出了各種設計準則與設計規(guī)程。這種工程化的規(guī)范設計方法也是在目前技術條件下設計數(shù)據(jù)庫的最實用的方法。規(guī)范設計法中,最著名的是新奧爾良(New Orleans)方法。新奧爾良方法采用軟件工程的思想,按照軟件開發(fā)生命周期來完成數(shù)據(jù)庫的設計,開發(fā)過程采取工程化方法,按照步驟來進行,確保數(shù)據(jù)庫設計的質(zhì)量。
1.4.2 數(shù)據(jù)庫設計的步驟
按照常用的規(guī)范設計法——新奧爾良方法來劃分,數(shù)據(jù)庫設計分為6個階段,即需求分析、概念設計、邏輯設計、物理設計、數(shù)據(jù)庫的實施和部署、數(shù)據(jù)庫的運行和維護。
1. 需求分析
需求分析的內(nèi)容是充分調(diào)查研究,收集基礎數(shù)據(jù),了解系統(tǒng)運行環(huán)境,明確用戶需求,確定新系統(tǒng)的功能,最終得到系統(tǒng)需求分析說明書,作為設計數(shù)據(jù)庫的依據(jù)。需求分析所調(diào)查的重點是數(shù)據(jù)和處理,以獲得用戶對數(shù)據(jù)庫的以下要求:①用戶需要從數(shù)據(jù)庫中獲得信息的內(nèi)容與性質(zhì);②用戶要完成什么處理功能,處理有哪些業(yè)務規(guī)則;③數(shù)據(jù)操作、系統(tǒng)吞吐量、并發(fā)訪問的性能要求;④安全性和數(shù)據(jù)完整性的要求;⑤數(shù)據(jù)庫及其應用系統(tǒng)的環(huán)境要求。
在做需求分析時,首先要了解用戶單位的組織機構(gòu)組成,然后調(diào)查用戶單位的日常業(yè)務活動流程。在此基礎上,明確用戶的信息需求和系統(tǒng)概念需求,明確用戶對系統(tǒng)的性能和成本的要求,確認數(shù)據(jù)項,產(chǎn)生系統(tǒng)需求說明書。需求分析的調(diào)查方法包括跟班作業(yè)、開調(diào)查會、請專人調(diào)查、發(fā)放用戶調(diào)查表和查閱原系統(tǒng)有關記錄。
經(jīng)過需求分析,可以產(chǎn)生數(shù)據(jù)字典、數(shù)據(jù)流圖、判定表和判定樹等。①數(shù)據(jù)字典是系統(tǒng)中所有數(shù)據(jù)及其處理的描述信息的集合。數(shù)據(jù)字典由數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲、處理過程組成。②數(shù)據(jù)流圖是結(jié)構(gòu)化分析方法中使用的圖形化工具,描繪數(shù)據(jù)在系統(tǒng)中流動和處理的過程。數(shù)據(jù)流圖中包括數(shù)據(jù)流、數(shù)據(jù)源、對數(shù)據(jù)的加工處理和數(shù)據(jù)存儲。數(shù)據(jù)流圖根據(jù)層級不同分為頂層數(shù)據(jù)流圖、中層數(shù)據(jù)流圖和底層數(shù)據(jù)流圖。頂層數(shù)據(jù)流圖經(jīng)過細化可以產(chǎn)生中層數(shù)據(jù)流圖和底層數(shù)據(jù)流圖。③判定表和判定樹是描述加工的圖形工具,分別是表格和樹狀結(jié)構(gòu),適合描述問題處理中具有多個判斷,而且每個決策與若干條件有關。判定表和判定樹給出判定條件和判定決策,以及判定條件的從屬關系、并列關系、選擇關系。
2. 概念設計
概念設計的任務是根據(jù)需求分析說明書對現(xiàn)實世界進行數(shù)據(jù)抽象,建立概念模型。概念模型的作用是與用戶溝通,確認系統(tǒng)的信息和功能,與數(shù)據(jù)庫管理系統(tǒng)無關。
概念設計方法有4種,分別是自頂向下、自底向上、逐步擴張和混合策略。①自頂向下是指先設計概念模型的總體框架,再逐步細化。②自底向上是指先設計局部概念模型,再合并成總體。③逐步擴張是指先設計概念模型的主要部分,再逐步擴充。④混合策略是指將自頂向下和自底向上相結(jié)合,先設計概念模型的總體框架,再根據(jù)框架來合并各局部概念模型。
概念模型有實體-聯(lián)系模型、面向?qū)ο蟮臄?shù)據(jù)模型、二元數(shù)據(jù)模型、語義數(shù)據(jù)模型、函數(shù)數(shù)據(jù)模型等。
采用實體-聯(lián)系模型進行概念模型設計的步驟如下。
。1) 設計局部實體-聯(lián)系模型。具體任務是確定局部實體-聯(lián)系模型中的實體、實體的屬性、關鍵字、實體之間的聯(lián)系和屬性,畫出局部E-R圖。
。2) 設計全局實體-聯(lián)系模型。具體任務是合并局部E-R圖,生成全局E-R圖,并消除局部E-R圖合并時產(chǎn)生的沖突。這里的沖突包括屬性沖突、命名沖突和結(jié)構(gòu)沖突,僅在合并E-R圖時才會發(fā)現(xiàn)。①屬性沖突是指同名的屬性的類型、值域或單位不同;②命名沖突是指業(yè)務內(nèi)容相同的屬性命名不同或業(yè)務內(nèi)容不同的屬性命名相同;③結(jié)構(gòu)沖突是指實體在其他圖中作為聯(lián)系或?qū)傩猿霈F(xiàn),或是同一實體的屬性不同。
(3) 優(yōu)化全局E-R模型。具體任務是修改全局E-R圖,消除冗余屬性、消除冗余聯(lián)系,得到最終的E-R圖。
3. 邏輯設計
邏輯模型設計的任務是把概念模型轉(zhuǎn)換為所使用的數(shù)據(jù)庫管理系統(tǒng)所支持的邏輯模型,定義數(shù)據(jù)完整性、安全性,評估性能。
將實體-聯(lián)系模型轉(zhuǎn)換成關系模型的步驟如下。
(1) 將E-R圖轉(zhuǎn)換為關系模式集合。在轉(zhuǎn)換時,E-R圖中的一個實體轉(zhuǎn)換為一個關系模式,實體的屬性轉(zhuǎn)換為關系模式的屬性,實體的碼轉(zhuǎn)換為關系模式的關鍵字。E-R圖中的聯(lián)系也要進行轉(zhuǎn)換,轉(zhuǎn)換方法如下:①一對一的聯(lián)系可以轉(zhuǎn)換成單個關系模式,也可以與任意一端的實體型轉(zhuǎn)換成的關系模式合并;②一對多的聯(lián)系可以轉(zhuǎn)換成單個關系模式,也可以與多端的實體型轉(zhuǎn)換成的關系模式合并;③多對多、3個及3個以上的聯(lián)系只能轉(zhuǎn)換成單個關系模式。
。2) 對關系模式集合進行規(guī)范化處理,滿足一定的范式。規(guī)范化目的是使結(jié)構(gòu)更合理,消除存儲異常,使數(shù)據(jù)冗余盡量小,便于插入、刪除和更新。在對關系模式進行規(guī)范化時,必須遵從概念單一化原則,即一個關系模式描述一個實體或?qū)嶓w間的一種聯(lián)系。規(guī)范化的操作方法是確定數(shù)據(jù)依賴,用關系來表示E-R圖中的所有實體,對所有數(shù)據(jù)依賴進行極小化處理,對需要分解的關系模式逐一進行分解,分解后的關系模式集合必須保證不丟失原有關系的信息。實際操作時,并不一定要求全部模式都達到BCNF,有時會故意保留部分冗余便于數(shù)據(jù)查詢。
。3) 設計外模式。外模式是提供給數(shù)據(jù)庫不同用戶的使用接口。對于關系數(shù)據(jù)庫來說,外模式就是視圖。視圖能夠為用戶屏蔽不需要的數(shù)據(jù)庫結(jié)構(gòu),按用戶的需求顯示數(shù)據(jù)庫中的數(shù)據(jù)。同時,視圖使得用戶在使用數(shù)據(jù)庫時,只能使用被視圖引用的數(shù)據(jù),而不能使用數(shù)據(jù)庫中其他數(shù)據(jù),保證了數(shù)據(jù)庫的安全性。在數(shù)據(jù)庫結(jié)構(gòu)發(fā)生變化時,只需要修改視圖的定義,用戶的使用接口保持不變,從而保證了與數(shù)據(jù)庫相關的應用程序無須修改,達到了數(shù)據(jù)獨立性。
(4) 評價數(shù)據(jù)庫性能并優(yōu)化關系模式。
4. 物理設計
物理設計是要選取一個最適合數(shù)據(jù)庫的應用環(huán)境的物理結(jié)構(gòu),包括數(shù)據(jù)庫的存儲記錄格式、存儲記錄安排和存取方法,使得數(shù)據(jù)庫具有良好的響應速度、足夠的事務流量和適宜的存儲空間。它與系統(tǒng)硬件環(huán)境、存儲介質(zhì)性能和DBMS有關。
在關系模型數(shù)據(jù)庫中,物理設計主要包括存儲記錄結(jié)構(gòu)的設計、數(shù)據(jù)存放位置和存取方法。其中,存儲記錄結(jié)構(gòu)包括記錄的組成、數(shù)據(jù)項的類型和長度,以及邏輯記錄到存儲記錄的映像。數(shù)據(jù)存放位置是指是否要把經(jīng)常訪問的數(shù)據(jù)結(jié)合在一起。存取方法是指聚集索引和非聚集索引的使用。物理設計還要對綜合分析影響數(shù)據(jù)庫的因素,確定系統(tǒng)配置,建立最優(yōu)化設計方案,使空間利用率達到最大,系統(tǒng)數(shù)據(jù)操作負荷最小。
5. 數(shù)據(jù)庫的實施和部署
數(shù)據(jù)庫實施的內(nèi)容包括使用數(shù)據(jù)庫管理系統(tǒng)創(chuàng)建實際數(shù)據(jù)庫結(jié)構(gòu)、加載初始數(shù)據(jù)、編制和調(diào)試相應的應用程序、測試數(shù)據(jù)庫及其應用程序。
數(shù)據(jù)庫部署的內(nèi)容是指將完成并通過測試的數(shù)據(jù)庫及其應用程序,包括相關的系統(tǒng)軟件安裝在規(guī)定的硬件平臺上,在數(shù)據(jù)庫中裝入完整的數(shù)據(jù),配置系統(tǒng)運行環(huán)境,對系統(tǒng)的用戶進行操作培訓,提交用戶手冊及系統(tǒng)使用文檔。
6. 數(shù)據(jù)庫的運行和維護
數(shù)據(jù)庫的運行和維護主要是由數(shù)據(jù)庫管理員來負責。數(shù)據(jù)庫的運行和維護主要包括調(diào)整數(shù)據(jù)庫的結(jié)構(gòu),重組與重構(gòu)數(shù)據(jù)庫,調(diào)整數(shù)據(jù)庫的安全性和完整性條件,制定合理的數(shù)據(jù)備份計劃,完成備份以及故障恢復任務,監(jiān)控數(shù)據(jù)庫性能并優(yōu)化數(shù)據(jù)庫結(jié)構(gòu)。
1.5 小型案例實訓
創(chuàng)建一個學生成績數(shù)據(jù)庫,所涉及的信息包括校內(nèi)所有的系、班級、學生、課程、教師和學生成績。
學生成績數(shù)據(jù)庫的信息內(nèi)容如下:每個系有系號、系名和系主任,每個班級有班號、班名、入學年份、人數(shù)、系號和班主任,每個學生有學號、姓名、性別、出生日期,每門課程有課程號、課程名、學分和學時,每個教師有教師號、姓名、性別、出生日期、職稱。每位學生屬于一個班級,每個班級屬于一個系,每個班級有一個班主任,每個系有一個系主任,每個學生修多門課程,每門課程有多個學生選修,并有課程成績。學生成績需要記錄該課程的授課教師、學期、成績。
先畫出學生成績數(shù)據(jù)庫的E-R圖,再轉(zhuǎn)換成關系模型。E-R圖和關系模式中加下劃線的屬性分別是該實體集的和關系模式的主碼。
由題意可知,學生成績數(shù)據(jù)庫E-R圖中包含5個實體,即系、班級、學生、課程和教師。各實體的屬性設計如下:系(系號,系名,系主任號),班級(班號,班名,入學年份,人數(shù),系號,班主任號),學生(學號,姓名,性別,出生日期,班號),課程(課程號,課程名,學分,學時),教師(教師號,姓名,性別,出生日期,職稱,系號)。各實體之間的聯(lián)系包括:班級與系之間的隸屬關系,學生與班級之間的隸屬關系,教師與系之間的隸屬關系,學生選修課程之間的“選修”聯(lián)系,“選修”聯(lián)系應有成績屬性。根據(jù)以上分析,得到學生成績數(shù)據(jù)庫的E-R圖,如圖1-14所示。
圖1-14 學生成績數(shù)據(jù)庫E-R圖
根據(jù)學生成績數(shù)據(jù)庫E-R圖,轉(zhuǎn)換得到學生成績數(shù)據(jù)庫關系模式如下。
系(系號,系名,系主任號)
班級(班號,班名,入學年份,人數(shù),系號,班主任號)
學生(學號,姓名,性別,出生日期,班號)
課程(課程號,課程名,學分,學時)
教師(教師號,姓名,性別,出生日期,職稱,系號)
成績(學號,課程號,教師號,成績,學期)
小 結(jié)
數(shù)據(jù)庫(Database,DB)是一個長期存儲在計算機內(nèi)的、有組織的、有共享的、統(tǒng)一管理的數(shù)據(jù)集合。數(shù)據(jù)庫中的數(shù)據(jù)是按照一定的數(shù)據(jù)模型組織、描述和存儲的,有較小的冗余度、較高的數(shù)據(jù)獨立性和易擴展性。
數(shù)據(jù)庫管理系統(tǒng)(Database Management System,DBMS)是使用和管理數(shù)據(jù)庫的系統(tǒng)軟件,位于用戶與操作系統(tǒng)之間,負責對數(shù)據(jù)庫進行統(tǒng)一的管理和控制。所有對數(shù)據(jù)庫的操作都交由數(shù)據(jù)庫管理系統(tǒng)完成,這使得數(shù)據(jù)庫的安全性和完整性得以保證。
數(shù)據(jù)庫系統(tǒng)(Database Systems,DBS)是指在計算機系統(tǒng)中引入了數(shù)據(jù)庫的系統(tǒng),專門用于完成特定的業(yè)務信息處理。數(shù)據(jù)庫系統(tǒng)包括硬件、軟件和用戶。其中,軟件包括數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、操作系統(tǒng)、應用開發(fā)工具和數(shù)據(jù)庫應用程序。用戶包括系統(tǒng)分析員、數(shù)據(jù)庫設計人員、程序開發(fā)人員、數(shù)據(jù)庫管理員和系統(tǒng)用戶。數(shù)據(jù)庫系統(tǒng)的核心是數(shù)據(jù)庫管理系統(tǒng)。
數(shù)據(jù)管理技術是指對數(shù)據(jù)進行分類、組織、編碼、存儲、檢索和維護的技術。數(shù)據(jù)管理技術的發(fā)展大致劃分為3個階段,即人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)階段。
從數(shù)據(jù)庫管理系統(tǒng)角度看,數(shù)據(jù)庫系統(tǒng)通常采用三級模式結(jié)構(gòu),即數(shù)據(jù)庫系統(tǒng)由外模式、模式和內(nèi)模式三級組成。兩層映像機制保證了數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)獨立性,數(shù)據(jù)獨立性包括邏輯獨立性和物理獨立性。
數(shù)據(jù)模型是數(shù)據(jù)庫系統(tǒng)的核心和基礎,是對現(xiàn)實世界的抽象描述。數(shù)據(jù)模型描述現(xiàn)實世界的數(shù)據(jù)、數(shù)據(jù)之間的聯(lián)系、數(shù)據(jù)的語義和完整性約束。數(shù)據(jù)模型包括數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和完整性約束3部分。數(shù)據(jù)模型分為概念數(shù)據(jù)模型、邏輯數(shù)據(jù)模型和物理數(shù)據(jù)模型3類。
實體-聯(lián)系模型是采用E-R圖來描述現(xiàn)實世界的概念模型。E-R圖的組成元素包括實體集、屬性和聯(lián)系。
現(xiàn)有的邏輯模型主要包括層次模型、網(wǎng)狀模型和關系模型。以二維表為基本結(jié)構(gòu)所建立的模型稱為關系模型。
關系數(shù)據(jù)庫中的關系模式必須滿足一定級別的范式。目前關系模式有6種范式,即第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、改進的第三范式(BCNF)、第四范式(4NF)和第五范式(5NF)。一般說來,工程項目中關系數(shù)據(jù)庫設計只需滿足第三范式(3NF)即可。
關系代數(shù)中,傳統(tǒng)的集合運算包括并、差、交和笛卡兒積,專門的關系運算包括選擇、投影、連接和除運算。
目前常用的各種數(shù)據(jù)庫設計方法都屬于規(guī)范設計法,最著名的是新奧爾良(New Orleans)方法。按照常用的規(guī)范設計法——新奧爾良方法來劃分,數(shù)據(jù)庫設計分為6個階段,即需求分析、概念設計、邏輯設計、物理設計、數(shù)據(jù)庫實施和部署、數(shù)據(jù)庫運行和維護。
習 題
1. 填空題
。1) 數(shù)據(jù)庫是一個____________________________________的數(shù)據(jù)集合。數(shù)據(jù)庫中的數(shù)據(jù)是按照一定的____________________________________組織、描述和存儲的,有較小的_______________________________、較高的__________________________________和____________________________________。
(2)??__________________________用于建立和修改數(shù)據(jù)庫的庫結(jié)構(gòu),數(shù)據(jù)庫管理系統(tǒng)提供__________________________來完成該功能。________________________用于用戶對數(shù)據(jù)庫插入、更新、刪除和查詢數(shù)據(jù),數(shù)據(jù)庫管理系統(tǒng)提供__________________________來完成該功能。______________________________確保數(shù)庫系統(tǒng)的正常運行,內(nèi)容包括多用戶環(huán)境下的并發(fā)控制、安全性檢查、存取限制控制、完整性檢查、日志的管理、事務的管理和發(fā)生故障后數(shù)據(jù)庫的恢復,數(shù)據(jù)庫管理系統(tǒng)提供____________________________來完成該功能。
。3) 數(shù)據(jù)庫系統(tǒng)包括硬件、軟件和用戶。其中,軟件包括_______________________。用戶包括_____________________。數(shù)據(jù)庫系統(tǒng)的核心是__________________________。
。4) 數(shù)據(jù)管理技術的發(fā)展大致劃分為3個階段,即___________________________、____________________________和_______________________________。
。5) 從數(shù)據(jù)庫管理系統(tǒng)角度看,數(shù)據(jù)庫系統(tǒng)通常采用三級模式結(jié)構(gòu),即數(shù)據(jù)庫系統(tǒng)由_______________________________三級組成。_______________________________保證了邏輯獨立性,________________________________保證了物理獨立性。
。6) 數(shù)據(jù)模型包括____________________________、__________________________和____________________________3部分。
。7) 根據(jù)數(shù)據(jù)建模的不同階段,數(shù)據(jù)模型分為_________、________和________三類。
(8)??____________________________是用戶與數(shù)據(jù)庫設計人員之間進行交流的語言。
(9)??____________________________是采用E-R圖來描述現(xiàn)實世界的概念模型。E-R圖的組成元素包括___________________________。___________________________用矩形表示,____________________________用橢圓形表示,___________________________用菱形表示,兩個實體集之間存在_____________________________3種聯(lián)系。
。10) 現(xiàn)有的邏輯模型主要包括____________________________________。
。11) 以____________________________________為基本結(jié)構(gòu)所建立的模型稱為關系模型。關系模型中,表是基礎邏輯結(jié)構(gòu),由____________________________________組成。
。12) 第一范式是指___________________________。第二范式要求關系模式的非主屬性完全函數(shù)依賴于碼,不能存在對碼的________________________。第三范式要求關系模式中的非主屬性不依賴于其他非主屬性,也就是不存在____________________________。_______________________________是指關系模式的所有非主屬性完全函數(shù)依賴于碼,所有主屬性完全函數(shù)依賴于不包含它的碼,沒有屬性完全函數(shù)依賴于非碼的任何屬性組。
。13) 關系代數(shù)中,傳統(tǒng)的集合運算包括____________________________________,專門的關系運算包括____________________________________。
。14) 按照常用的規(guī)范設計法——____________________________________來劃分,數(shù)據(jù)庫設計分為6個階段,即____________________________________。
2. 操作題
設計一個圖書館管理數(shù)據(jù)庫。圖書館管理數(shù)據(jù)庫的信息內(nèi)容如下:
每種圖書屬于一個圖書類別,每個圖書類別有多種圖書。每種圖書有ISBN、書名、版次、類型、作者、出版社、價格、可借數(shù)量和庫存數(shù)量。每種圖書有多本。每本圖書有圖書編號、ISBN、狀態(tài)和狀態(tài)更新時間。
每個讀者屬于一個讀者類型,每個讀者類型有多個讀者。每個讀者有讀者編號、姓名、類型、證件號、性別、聯(lián)系方式、登記日期、有效日期、已借書數(shù)量和是否掛失。
每個讀者可以借閱多本圖書,每本圖書可以被多次借閱。每次借閱記錄有借閱編號、圖書編號、讀者編號、借閱日期、到期日期、處理日期和狀態(tài)。
先畫出圖書館管理數(shù)據(jù)庫的E-R圖,再轉(zhuǎn)換成關系模型。
……