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