版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
11.1數(shù)據(jù)庫系統(tǒng)概述11.2關(guān)系數(shù)據(jù)庫基礎(chǔ)理論11.3關(guān)系數(shù)據(jù)庫規(guī)范化理論11.4關(guān)系數(shù)據(jù)庫應(yīng)用系統(tǒng)設(shè)計(jì)11.5創(chuàng)建數(shù)據(jù)庫11.6查詢與SQL11.7網(wǎng)絡(luò)管理信息系統(tǒng)——基于ASP
技術(shù)的網(wǎng)絡(luò)教學(xué)管理信息系統(tǒng)習(xí)題11第11章數(shù)據(jù)庫系統(tǒng)及其應(yīng)用11.1.1信息、數(shù)據(jù)與數(shù)據(jù)處理
1.信息
基于計(jì)算機(jī)、通信和信息處理技術(shù)的信息技術(shù)近年來發(fā)展迅速,計(jì)算機(jī)互聯(lián)網(wǎng)也進(jìn)入千家萬戶,這一切都使得信息革命深入人心。世界范圍的信息革命激發(fā)了人類歷史上最活躍的生產(chǎn)力,人類在經(jīng)歷了農(nóng)業(yè)社會(huì)、工業(yè)社會(huì)后,已步入信息化社會(huì)。信息化水平的高低已成為衡量一個(gè)國家、一個(gè)地區(qū)現(xiàn)代化水平和綜合國力的重要標(biāo)志。各種信息化系統(tǒng)已成為國家基礎(chǔ)設(shè)施,它們支撐著電子政務(wù)、電子商務(wù)、電子金融、科學(xué)研究、網(wǎng)絡(luò)教育、能源、通信、交通和社會(huì)保障等方方面面,信息成為人類社會(huì)必需的重要資源。11.1數(shù)據(jù)庫系統(tǒng)概述進(jìn)入20世紀(jì)中期以后,隨著信息科學(xué)技術(shù)的發(fā)展,人們開始探討信息的準(zhǔn)確含義。學(xué)術(shù)界公認(rèn)的,即把信息作為一種理論來認(rèn)識(shí)與描述的,當(dāng)推信息論的奠基人香農(nóng)(Shannon)于1948年在《通信的數(shù)學(xué)理論》中首次提出的經(jīng)典定義——“信息是用來消除不確定性的東西”。顯然,這是從通信的角度提出來的。
1988年,我國信息論專家鐘義信教授在《信息科學(xué)原理》一書中把信息定義為:“事物的運(yùn)動(dòng)狀態(tài)和狀態(tài)變化的方式”,并通過引入約束條件推導(dǎo)了信息的概念體系,對信息進(jìn)行了完整和準(zhǔn)確的描述。
2.?dāng)?shù)據(jù)
信息只有依附于一定的物質(zhì)載體才能顯現(xiàn)出來。載體本身也不是信息,人類認(rèn)識(shí)主體時(shí)首先接觸的是載體,然后才逐漸感知載體中所承載的信息內(nèi)涵。根據(jù)載體本身的特征,我們可以把信息載體分為兩大部分:一部分是由人類認(rèn)識(shí)主體的感官表達(dá)的表意型載體,如語言、文字、符號、形體、表情等;另一部分是人的感官無法直接感知而存儲(chǔ)于物質(zhì)的物質(zhì)載體,無形的如聲波、電磁波、網(wǎng)絡(luò)等,有形的如石頭、絲綢、紙張、磁帶、光盤等。目前,信息已由最初的語言、文字等形態(tài)演變成數(shù)據(jù)、文本、聲音、圖像等復(fù)雜的形態(tài)。在這里,“數(shù)據(jù)”并非單純指“數(shù)字”。從信息科學(xué)的角度來考察,數(shù)據(jù)是指電子計(jì)算機(jī)能夠生成和處理的所有事件、數(shù)字、文字、符號等。當(dāng)文本、聲音、圖像在計(jì)算機(jī)里被簡化成“0”和“1”的原始單位時(shí),它們便成了數(shù)據(jù)。人們儲(chǔ)存在“數(shù)據(jù)庫”里的信息,自然也不僅僅是一些“數(shù)字”。
需要指出的是,信息表現(xiàn)的形態(tài)不是一成不變的。也就是說,文本、數(shù)據(jù)、聲音、圖像能夠相互轉(zhuǎn)化。如語言可以通過紙張記錄下來,于是聲音變成了文字,而文字可在掃描后輸入計(jì)算機(jī),最后經(jīng)計(jì)算機(jī)被輸出為圖像。
3.?dāng)?shù)據(jù)處理
信息與數(shù)據(jù)有著密切的聯(lián)系:數(shù)據(jù)是記錄客觀事物的性質(zhì)、形態(tài)、數(shù)量特征的抽象符號,而信息則是對數(shù)據(jù)加工的結(jié)果,使之成為反映事物客觀規(guī)律的一組數(shù)據(jù)。可見,信息來源于數(shù)據(jù),但又對數(shù)據(jù)給予解釋,揭示了數(shù)據(jù)的內(nèi)涵。信息作為數(shù)據(jù)的載體,可以采用不同的形式傳播,但無論何種形式都不能改變其基本內(nèi)容。數(shù)據(jù)與信息兩者在概念上不盡相同,但通常并不嚴(yán)格去區(qū)分它們。所以,數(shù)據(jù)處理也可稱為信息處理。
數(shù)據(jù)處理是將數(shù)據(jù)轉(zhuǎn)換成信息的過程,包括對數(shù)據(jù)的收集、存儲(chǔ)、加工、檢索、傳輸?shù)纫幌盗谢顒?dòng)。其目的是從大量的原始數(shù)據(jù)中抽取和推導(dǎo)出有價(jià)值的信息,作為決策的依據(jù)。數(shù)據(jù)處理的基本環(huán)節(jié)是數(shù)據(jù)管理。數(shù)據(jù)管理的功能為:
(1)組織和保存數(shù)據(jù)功能,對收到的數(shù)據(jù)合理地分類組織,將其存儲(chǔ)在物理載體上,使數(shù)據(jù)能夠長期被保存;
(2)數(shù)據(jù)維護(hù)功能,根據(jù)需要隨時(shí)進(jìn)行插入新數(shù)據(jù)、修改原數(shù)據(jù)和刪除失效數(shù)據(jù)的操作;
(3)數(shù)據(jù)查詢和數(shù)據(jù)統(tǒng)計(jì)功能,能快速地得到需要的正確數(shù)據(jù),滿足各種使用要求;
(4)數(shù)據(jù)的安全和完整性控制功能,使保證數(shù)據(jù)的安全性和完整性。
數(shù)據(jù)管理的目標(biāo)是:收集完整的信息,將信息用數(shù)據(jù)表示,按數(shù)據(jù)結(jié)構(gòu)合理科學(xué)地組織并保存數(shù)據(jù);為各種使用快速地提供正確的數(shù)據(jù),并保證數(shù)據(jù)的安全性和完整性。11.1.2數(shù)據(jù)管理技術(shù)的發(fā)展
1.人工管理
20世紀(jì)50年代中期以前為人工管理階段,是計(jì)算機(jī)數(shù)據(jù)管理的初級階段。這一階段的計(jì)算機(jī)主要用于科學(xué)計(jì)算,硬件中的外存只有卡片、紙帶、磁帶,沒有磁盤等直接存取設(shè)備;軟件只有匯編語言,沒有操作系統(tǒng),更無統(tǒng)一的管理數(shù)據(jù)的軟件;對數(shù)據(jù)的管理完全在程序中進(jìn)行,數(shù)據(jù)處理的方式基本上是批處理。程序員編寫應(yīng)用程序時(shí),要考慮具體的數(shù)據(jù)物理存儲(chǔ)細(xì)節(jié),即每個(gè)應(yīng)用程序中都要包括數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)、存取方法、輸入方式、地址分配等,如果數(shù)據(jù)的類型、格式或輸入輸出方式等邏輯結(jié)構(gòu)或物理結(jié)構(gòu)發(fā)生變化,則必須對應(yīng)用程序做出相應(yīng)的修改。另外,數(shù)據(jù)是面向程序的,一組數(shù)據(jù)只能對應(yīng)一個(gè)程序,很難實(shí)現(xiàn)多個(gè)應(yīng)用程序共享數(shù)據(jù)資源,因此程序之間有大量的冗余數(shù)據(jù)。
2.文件系統(tǒng)
20世紀(jì)50年代后期至60年代中期,隨著計(jì)算機(jī)軟硬件技術(shù)的發(fā)展,出現(xiàn)了文件系統(tǒng),負(fù)責(zé)對數(shù)據(jù)進(jìn)行管理。這一階段,計(jì)算機(jī)已大量用于信息管理,硬件有了磁盤、磁鼓等直接存儲(chǔ)設(shè)備;在軟件方面,出現(xiàn)了高級語言和操作系統(tǒng);操作系統(tǒng)中有了專門管理數(shù)據(jù)的軟件,一般稱為文件系統(tǒng),用戶可以把相關(guān)數(shù)據(jù)組織成一個(gè)文件存放在計(jì)算機(jī)中,由文件系統(tǒng)對數(shù)據(jù)的存取進(jìn)行管理,處理方式有批處理,也有聯(lián)機(jī)處理。文件管理數(shù)據(jù)的特點(diǎn)是:
(1)數(shù)據(jù)可以長期保存;
(2)有專門的數(shù)據(jù)管理軟件——文件系統(tǒng);
(3)程序與數(shù)據(jù)間有一定的獨(dú)立性。隨著數(shù)據(jù)管理規(guī)模的擴(kuò)大,數(shù)據(jù)量急劇增加,文件系統(tǒng)顯露出如下一些缺陷:
(1)數(shù)據(jù)冗余度大。數(shù)據(jù)冗余度指同一數(shù)據(jù)重復(fù)存儲(chǔ)時(shí)的重復(fù)程度。文件系統(tǒng)階段各數(shù)據(jù)文件之間沒有有機(jī)的聯(lián)系,一個(gè)文件基本上對應(yīng)于一個(gè)應(yīng)用程序,數(shù)據(jù)不能共享,因此數(shù)據(jù)冗余度大。
(2)數(shù)據(jù)獨(dú)立性不高。文件系統(tǒng)中的文件是為某一特定應(yīng)用服務(wù)的,許多情況下不同的應(yīng)用程序使用的數(shù)據(jù)和程序相互依賴,系統(tǒng)不易擴(kuò)充。一旦改變數(shù)據(jù)的邏輯結(jié)構(gòu),就必須修改相應(yīng)的應(yīng)用程序,而應(yīng)用程序發(fā)生變化,如改用另一種程序設(shè)計(jì)語言來編寫程序時(shí),也需修改數(shù)據(jù)結(jié)構(gòu)。
(3)數(shù)據(jù)一致性差。由于相同數(shù)據(jù)的重復(fù)存儲(chǔ)、各自管理,在進(jìn)行更新操作時(shí),容易造成數(shù)據(jù)的不一致性。
3.?dāng)?shù)據(jù)庫系統(tǒng)
20世紀(jì)60年代后期,數(shù)據(jù)管理技術(shù)進(jìn)入數(shù)據(jù)庫系統(tǒng)階段。數(shù)據(jù)庫系統(tǒng)克服了文件系統(tǒng)的缺陷,提供了對數(shù)據(jù)更高級、更有效的管理。這個(gè)階段的程序和數(shù)據(jù)的聯(lián)系通過數(shù)據(jù)庫管理系統(tǒng)(DBMS)來實(shí)現(xiàn)。數(shù)據(jù)庫系統(tǒng)階段的數(shù)據(jù)管理具有以下特點(diǎn):
(1)采用數(shù)據(jù)模型表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)模型不僅描述數(shù)據(jù)本身的特征,還要描述數(shù)據(jù)之間的聯(lián)系,這種聯(lián)系通過存取路徑實(shí)現(xiàn)。通過所有存取路徑表示自然的數(shù)據(jù)聯(lián)系是數(shù)據(jù)庫與傳統(tǒng)文件的根本區(qū)別。這樣,數(shù)據(jù)不再面向特定的某個(gè)或多個(gè)應(yīng)用,而是面向整個(gè)應(yīng)用系統(tǒng)。數(shù)據(jù)冗余明顯減少,實(shí)現(xiàn)了數(shù)據(jù)共享。
(2)有較高的數(shù)據(jù)獨(dú)立性。數(shù)據(jù)的邏輯結(jié)構(gòu)與物理結(jié)構(gòu)之間的差別可以很大。用戶以簡單的邏輯結(jié)構(gòu)操作數(shù)據(jù)而無需考慮數(shù)據(jù)的物理結(jié)構(gòu)。數(shù)據(jù)庫的結(jié)構(gòu)分成用戶的局部邏輯結(jié)構(gòu)、數(shù)據(jù)庫的整體邏輯結(jié)構(gòu)和物理結(jié)構(gòu)三級。用戶(應(yīng)用程序或終端用戶)的數(shù)據(jù)和外存中的數(shù)據(jù)之間轉(zhuǎn)換由數(shù)據(jù)庫管理系統(tǒng)實(shí)現(xiàn)。
(3)數(shù)據(jù)庫系統(tǒng)為用戶提供了方便的用戶接口。用戶可以使用查詢語言或終端命令操作數(shù)據(jù)庫,也可以用C++等程序方式操作數(shù)據(jù)庫。數(shù)據(jù)庫系統(tǒng)提供了以下數(shù)據(jù)控制功能:
●數(shù)據(jù)庫的并發(fā)控制:對程序的并發(fā)操作加以控制,防止數(shù)據(jù)庫被破壞,杜絕提供給用戶不正確的數(shù)據(jù);
●數(shù)據(jù)庫的恢復(fù):在數(shù)據(jù)庫被破壞或數(shù)據(jù)不可靠時(shí),系統(tǒng)有能力把數(shù)據(jù)庫恢復(fù)到最近某個(gè)正確狀態(tài);●數(shù)據(jù)完整性:保證數(shù)據(jù)庫中的數(shù)據(jù)始終是正確的;
●數(shù)據(jù)安全性:保證數(shù)據(jù)的安全,防止數(shù)據(jù)的丟失、破壞;增加了系統(tǒng)的靈活性;對數(shù)據(jù)的操作不一定以記錄為單位,可以數(shù)據(jù)項(xiàng)為單位。
最后我們通過表11.1總結(jié)一下這三個(gè)階段的特點(diǎn)。11.1.3數(shù)據(jù)庫系統(tǒng)
數(shù)據(jù)庫系統(tǒng)(DataBaseSystem,DBS)通常是指帶有數(shù)據(jù)庫的計(jì)算機(jī)應(yīng)用系統(tǒng),因此,數(shù)據(jù)庫系統(tǒng)不僅包括數(shù)據(jù)庫本身,還包括相應(yīng)的硬件、軟件和各類人員。數(shù)據(jù)庫系統(tǒng)是一個(gè)包括使用人員和維護(hù)人員、加工設(shè)備和數(shù)據(jù)資源的完整計(jì)算機(jī)應(yīng)用系統(tǒng)。
如圖11.1所示,數(shù)據(jù)庫系統(tǒng)由硬件平臺(tái)、軟件平臺(tái)、數(shù)據(jù)庫和人員幾部分組成。圖11.1數(shù)據(jù)庫系統(tǒng)的組成
1.硬件平臺(tái)
常見的數(shù)據(jù)庫系統(tǒng)硬件平臺(tái)分為服務(wù)器端和客戶端兩大部分。
數(shù)據(jù)庫服務(wù)器是系統(tǒng)的關(guān)鍵組成部分,它作為硬件的核心承擔(dān)了整個(gè)系統(tǒng)運(yùn)行數(shù)據(jù)的建立、存儲(chǔ)、查詢、操作、備份以及整個(gè)后臺(tái)應(yīng)用程序的運(yùn)行任務(wù)。數(shù)據(jù)庫服務(wù)器的處理能力、存儲(chǔ)能力、可靠性直接關(guān)系到整個(gè)系統(tǒng)的性能優(yōu)劣。因此,對服務(wù)器端硬件資源提出了較高的要求,應(yīng)選用高可靠性、高可用性、高性價(jià)比的服務(wù)器。
2.軟件平臺(tái)
數(shù)據(jù)庫系統(tǒng)軟件平臺(tái)主要包括以下軟件:
1)數(shù)據(jù)庫管理系統(tǒng)(DBMS)
數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心,它主要有如下幾方面的功能:
(1)數(shù)據(jù)庫的定義功能。DBMS提供數(shù)據(jù)定義語言DDL(DataDefinitionLanguage),定義數(shù)據(jù)的模式、外模式和內(nèi)模式三級模式結(jié)構(gòu),定義模式/內(nèi)模式和外模式/模式二級映像,定義有關(guān)的約束條件。例如,為保證數(shù)據(jù)庫安全而定義的用戶口令和存取權(quán)限,為保證正確語義而定義的完整性規(guī)則。
(2)數(shù)據(jù)庫的操縱功能。DBMS提供數(shù)據(jù)操縱語言DML(DataManipulationLanguage)實(shí)現(xiàn)對數(shù)據(jù)庫的基本操作,包括查詢、創(chuàng)建、插入、修改、刪除等,SQL語言就是DML的一種。
(3)數(shù)據(jù)庫的存儲(chǔ)管理功能。存儲(chǔ)管理器的主要作用是:檢查用戶訪問數(shù)據(jù)是否合法;事務(wù)管理;把各種DML語句轉(zhuǎn)換成OS的命令和參數(shù),讓OS執(zhí)行相應(yīng)的I/O操作;管理系統(tǒng)緩沖區(qū)。
(4)數(shù)據(jù)庫的保護(hù)功能。DBMS對數(shù)據(jù)庫的保護(hù)措施主要有以下幾個(gè)方面:數(shù)據(jù)庫的恢復(fù),數(shù)據(jù)庫的完整性控制,數(shù)據(jù)庫的并發(fā)控制,數(shù)據(jù)的安全性控制。
(5)數(shù)據(jù)庫的維護(hù)功能。這一部分包括數(shù)據(jù)庫的數(shù)據(jù)載入、轉(zhuǎn)換、轉(zhuǎn)儲(chǔ),數(shù)據(jù)庫的改組以及性能監(jiān)控等功能。
(6)數(shù)據(jù)字典。數(shù)據(jù)庫系統(tǒng)中存放三級結(jié)構(gòu)定義的數(shù)據(jù)庫稱為數(shù)據(jù)字典(DD)。對數(shù)據(jù)庫的操作都要通過DD才能實(shí)現(xiàn)。DD中還存放數(shù)據(jù)庫運(yùn)行時(shí)的統(tǒng)計(jì)信息,例如記錄個(gè)數(shù)、訪問次數(shù)等。
為完成以上功能,數(shù)據(jù)庫管理系統(tǒng)一般由兩大部分組成:查詢處理器和存儲(chǔ)管理器。前者包括DDL編譯器、DML編譯器、嵌入型DML預(yù)編譯器、查詢運(yùn)行核心程序。后者包括授權(quán)和完整性管理器、事務(wù)管理器、文件管理器、緩沖區(qū)管理器。
2)支持DBMS運(yùn)行的操作系統(tǒng)
通常DBMS運(yùn)行時(shí)都是基于某一種操作系統(tǒng),并通過操作系統(tǒng)來實(shí)現(xiàn)對數(shù)據(jù)的存取,許多DBMS可支持多種操作系統(tǒng)平臺(tái),操作系統(tǒng)的選擇應(yīng)與DBMS配套。
3)應(yīng)用開發(fā)工具
應(yīng)用開發(fā)工具是系統(tǒng)為應(yīng)用開發(fā)人員及最終用戶提供的高效率、多功能的應(yīng)用生成器,為數(shù)據(jù)庫系統(tǒng)的開發(fā)和應(yīng)用提供了有力的支持。當(dāng)前一些通用的開發(fā)工具已成為數(shù)據(jù)庫軟件的有機(jī)組成部分。常用的應(yīng)用開發(fā)工具有Delphi、PowerBuilder、VisualBasic、Developer2000、Java等。
4)為特定應(yīng)用開發(fā)的數(shù)據(jù)庫應(yīng)用軟件
數(shù)據(jù)庫管理系統(tǒng)為數(shù)據(jù)的定義、存儲(chǔ)、查詢和修改提供支持,而數(shù)據(jù)庫應(yīng)用軟件是對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行加工和處理的軟件,面向特定應(yīng)用。例如,基于數(shù)據(jù)庫的各種管理軟件、管理信息系統(tǒng)(MIS)、決策支持系統(tǒng)(DSS)、辦公自動(dòng)化系統(tǒng)、各級電子政務(wù)系統(tǒng)和各類電子商務(wù)系統(tǒng)等都屬于數(shù)據(jù)庫應(yīng)用軟件。
3.?dāng)?shù)據(jù)庫
數(shù)據(jù)庫是數(shù)據(jù)的集合,它具有統(tǒng)一的結(jié)構(gòu)形式并存放于統(tǒng)一的存儲(chǔ)介質(zhì)內(nèi),是多種應(yīng)用數(shù)據(jù)的集成,并可被應(yīng)用所共享。
數(shù)據(jù)庫存放數(shù)據(jù),數(shù)據(jù)按所提供的數(shù)據(jù)模式存放,它能構(gòu)造復(fù)雜的數(shù)據(jù)結(jié)構(gòu)以建立數(shù)據(jù)間內(nèi)在聯(lián)系與復(fù)雜關(guān)系,從而構(gòu)成數(shù)據(jù)的全局結(jié)構(gòu)模式。
數(shù)據(jù)庫中的數(shù)據(jù)具有“集成”、“共享”之特點(diǎn),亦即是數(shù)據(jù)庫集中了各種應(yīng)用的數(shù)據(jù),進(jìn)行統(tǒng)一的構(gòu)造與存儲(chǔ),而它們可為不同的應(yīng)用提供服務(wù)。例如,教務(wù)處學(xué)籍管理數(shù)據(jù)庫中有組織地存放了學(xué)生基本情況、課程情況、學(xué)生選課情況、開課情況、教師情況等內(nèi)容,可供教務(wù)處、各系教學(xué)辦、班主任、任課教師、學(xué)生等共同使用。
4.人員
參與分析、設(shè)計(jì)、管理、維護(hù)和使用數(shù)據(jù)庫中數(shù)據(jù)的人員都是數(shù)據(jù)庫系統(tǒng)的組成部分,在數(shù)據(jù)庫系統(tǒng)的開發(fā)、維護(hù)和應(yīng)用中起著重要的作用。分析、設(shè)計(jì)、管理和使用數(shù)據(jù)庫系統(tǒng)的人員主要是數(shù)據(jù)庫管理員、系統(tǒng)分析員、應(yīng)用程序員和最終用戶。
1)數(shù)據(jù)庫管理員(DataBaseAdministrator,DBA)
數(shù)據(jù)庫是整個(gè)企業(yè)或者組織的數(shù)據(jù)資源,因此企業(yè)或組織設(shè)立了專門的數(shù)據(jù)資源管理機(jī)構(gòu)來管理數(shù)據(jù)庫,數(shù)據(jù)庫管理員則是這個(gè)機(jī)構(gòu)的一組人員,從事數(shù)據(jù)庫管理工作,負(fù)責(zé)數(shù)據(jù)庫系統(tǒng)的管理、設(shè)計(jì)、維護(hù)和正常使用。其主要職責(zé)包括:參與數(shù)據(jù)庫設(shè)計(jì)的全過程,決定數(shù)據(jù)庫的結(jié)構(gòu)和內(nèi)容;定義數(shù)據(jù)的安全性和完整性,負(fù)責(zé)分配用戶對數(shù)據(jù)庫的使用權(quán)限和口令管理,幫助最終用戶使用數(shù)據(jù)庫系統(tǒng);監(jiān)督控制數(shù)據(jù)庫的使用和運(yùn)行,改進(jìn)和重新構(gòu)造數(shù)據(jù)庫系統(tǒng),優(yōu)化數(shù)據(jù)庫系統(tǒng)的性能;定期轉(zhuǎn)儲(chǔ)數(shù)據(jù),當(dāng)數(shù)據(jù)庫受到破壞時(shí),應(yīng)負(fù)責(zé)恢復(fù)數(shù)據(jù)庫,而當(dāng)數(shù)據(jù)庫的結(jié)構(gòu)需要改變時(shí),應(yīng)完成對數(shù)據(jù)結(jié)構(gòu)的修改。
2)系統(tǒng)分析員和應(yīng)用程序員(ApplicationProgrammer)
系統(tǒng)分析員負(fù)責(zé)整個(gè)數(shù)據(jù)庫系統(tǒng)的規(guī)劃及結(jié)構(gòu)設(shè)計(jì),負(fù)責(zé)應(yīng)用系統(tǒng)的需求分析與規(guī)范說明,需要從總體上了解、設(shè)計(jì)整個(gè)系統(tǒng)。因此,系統(tǒng)分析員必須與用戶及數(shù)據(jù)庫管理員相結(jié)合,確定系統(tǒng)的軟硬件配置并參與數(shù)據(jù)庫各級模式的概要設(shè)計(jì)。
應(yīng)用程序員負(fù)責(zé)為終端用戶設(shè)計(jì)和編制數(shù)據(jù)庫的應(yīng)用程序,以便終端用戶對數(shù)據(jù)庫進(jìn)行存取操作。
3)終端用戶(EndUser)
終端用戶主要是使用數(shù)據(jù)庫的各級管理人員、工程技術(shù)人員、科研人員,一般為非計(jì)算機(jī)專業(yè)人員。11.1.4數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu)
數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu)是數(shù)據(jù)庫系統(tǒng)的一個(gè)總框架,可以從多種不同的角度考查數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu)。從數(shù)據(jù)庫管理系統(tǒng)的角度看,數(shù)據(jù)庫系統(tǒng)通常采用三級模式結(jié)構(gòu),這是數(shù)據(jù)庫系統(tǒng)內(nèi)部的體系結(jié)構(gòu),如圖11.2所示。圖11.2數(shù)據(jù)庫系統(tǒng)的三級模式結(jié)構(gòu)
1)模式
模式也稱邏輯模式,是數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是所有用戶的公共數(shù)據(jù)視圖。它不涉及數(shù)據(jù)的物理存儲(chǔ)細(xì)節(jié)和硬件環(huán)境,與應(yīng)用程序使用的開發(fā)工具及高級程序設(shè)計(jì)語言無關(guān)。一個(gè)數(shù)據(jù)庫只有一個(gè)模式。數(shù)據(jù)庫模式以某一種數(shù)據(jù)模型為基礎(chǔ),統(tǒng)一、綜合地考慮了所有用戶的需求,并將這些需求有機(jī)地結(jié)合成一個(gè)邏輯整體。模式是數(shù)據(jù)庫中全部數(shù)據(jù)的一個(gè)邏輯表述,既要定義數(shù)據(jù)的名字、數(shù)據(jù)類型、大小,又要說明數(shù)據(jù)之間的關(guān)系及數(shù)據(jù)的安全性、完整性要求等。
2)外模式
外模式也稱子模式或用戶模式,是數(shù)據(jù)庫用戶看見和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是數(shù)據(jù)庫用戶的數(shù)據(jù)視圖,是與某一應(yīng)用有關(guān)的數(shù)據(jù)的邏輯表示。外模式是保證數(shù)據(jù)庫安全性的一個(gè)有力措施。每個(gè)用戶只能看見和訪問所對應(yīng)的外模式中的數(shù)據(jù),數(shù)據(jù)庫中的其余數(shù)據(jù)對他們來說是不可見的。比如,學(xué)生成績管理和學(xué)籍管理可以用不同的程序設(shè)計(jì)語言來建立,對同一個(gè)學(xué)生成績數(shù)據(jù),老師可以寫,學(xué)生卻只能讀。因此,不同用戶的外模式的描述是不同的。
3)內(nèi)模式
內(nèi)模式也稱存儲(chǔ)模式,是數(shù)據(jù)物理結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)的描述,是數(shù)據(jù)在數(shù)據(jù)庫內(nèi)部的表示方式。例如,記錄的存儲(chǔ)方式是順序存儲(chǔ)、按照B樹結(jié)構(gòu)存儲(chǔ)還是按Hash方法存儲(chǔ);索引按照什么方式組織;數(shù)據(jù)是否壓縮存儲(chǔ),是否加密;數(shù)據(jù)的存儲(chǔ)記錄結(jié)構(gòu)有何規(guī)定等。一個(gè)數(shù)據(jù)庫只有一個(gè)內(nèi)模式。
數(shù)據(jù)庫系統(tǒng)的三級模式是對數(shù)據(jù)的三個(gè)抽象級別。它把數(shù)據(jù)的具體組織留給DBMS管理,使用戶能邏輯地抽象地處理數(shù)據(jù),而不必關(guān)心數(shù)據(jù)在計(jì)算機(jī)中的具體表示方式與存儲(chǔ)方式。為了能夠在內(nèi)部實(shí)現(xiàn)這三個(gè)抽象層次的聯(lián)系和轉(zhuǎn)換,數(shù)據(jù)庫系統(tǒng)在這三級模式之間提供了兩層映射:外模式/模式映射和模式/內(nèi)模式映射。正是這兩層映射保證了數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)能夠具有較高的邏輯獨(dú)立性和物理獨(dú)立性。
4)外模式/模式映射
模式描述的是數(shù)據(jù)的全局邏輯結(jié)構(gòu),外模式描述的是數(shù)據(jù)的局部邏輯結(jié)構(gòu)。對應(yīng)于同一個(gè)模式可以有任意多個(gè)外模式。對于每一個(gè)外模式,數(shù)據(jù)庫系統(tǒng)都有一個(gè)外模式/模式映射,它定義了該外模式與模式之間的對應(yīng)關(guān)系。這些映射定義通常包含在各自外模式的描述中。當(dāng)模式改變(例如,增加新的數(shù)據(jù)類型、新的數(shù)據(jù)項(xiàng)、新的關(guān)系等)時(shí),由數(shù)據(jù)庫管理員對各個(gè)外模式/模式的映射做出相應(yīng)改變,可以使外模式保持不變,從而不必修改應(yīng)用程序,保證了數(shù)據(jù)的邏輯獨(dú)立性。
5)外模式/模式映射
數(shù)據(jù)庫中只有一個(gè)模式,也只有一個(gè)內(nèi)模式,所以模式/內(nèi)模式映射是唯一的,它定義了數(shù)據(jù)全局邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu)之間的對應(yīng)關(guān)系。例如,說明邏輯記錄和字段在內(nèi)部是如何表示的。該映射定義通常包含在模式描述中。當(dāng)數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)發(fā)生改變(例如,采用了更先進(jìn)的存儲(chǔ)結(jié)構(gòu))時(shí),由數(shù)據(jù)庫管理員對模式/內(nèi)模式映射做相應(yīng)改變,可以使模式保持不變,從而保證了數(shù)據(jù)的物理獨(dú)立性。
在數(shù)據(jù)庫的三級模式結(jié)構(gòu)中,數(shù)據(jù)庫模式即全局邏輯結(jié)構(gòu)是數(shù)據(jù)庫的中心與關(guān)鍵,它獨(dú)立于數(shù)據(jù)庫的其他層次。因此,設(shè)計(jì)數(shù)據(jù)庫模式結(jié)構(gòu)時(shí)應(yīng)首先確定數(shù)據(jù)庫的邏輯模式。11.2關(guān)系數(shù)據(jù)庫基礎(chǔ)理論11.2.1數(shù)據(jù)描述現(xiàn)實(shí)世界是復(fù)雜的,要將復(fù)雜的現(xiàn)實(shí)世界以數(shù)據(jù)的形式存儲(chǔ)在計(jì)算機(jī)中,需要一個(gè)抽象的過程。抽象的過程分為三個(gè)階段,我們稱為三個(gè)世界,即現(xiàn)實(shí)世界、信息世界和計(jì)算機(jī)世界。
(1)現(xiàn)實(shí)世界:是獨(dú)立于人們意識(shí)之外的客觀世界,事物及其聯(lián)系就處在這個(gè)世界中?,F(xiàn)實(shí)世界里存在著萬物,比如教師、學(xué)生、課程和學(xué)校等。事物之間存在著聯(lián)系,而這些聯(lián)系是由事物本身的性質(zhì)所決定的。學(xué)生學(xué)習(xí)課程,教師教授課程……由此可以看出,這些人或事物之間存在著錯(cuò)綜復(fù)雜的關(guān)系,要處理的對象越多,事物之間的聯(lián)系就越復(fù)雜。如果把現(xiàn)實(shí)世界中的事物和事物之間的聯(lián)系進(jìn)行選擇、命名、分類等抽象處理,就進(jìn)入了信息世界。
(2)信息世界:是指現(xiàn)實(shí)世界在人腦中形成的概念。它又稱為概念世界,客觀事物在信息世界中稱為實(shí)體。將現(xiàn)實(shí)世界中的客觀事物及其錯(cuò)綜復(fù)雜的關(guān)系作分析,去粗取精,去偽存真,最后形成一些基本概念與基本關(guān)系,它們可以用所謂的信息模型來表示。在信息世界中所表示的模型都是較為抽象的,它們與具體數(shù)據(jù)庫、具體計(jì)算機(jī)平臺(tái)無關(guān)。
(3)計(jì)算機(jī)世界:將信息世界中的信息模型轉(zhuǎn)化為計(jì)算機(jī)物理結(jié)構(gòu)上的描述,從而形成的物理模型叫計(jì)算機(jī)世界?,F(xiàn)實(shí)世界的要求只有在計(jì)算機(jī)世界中才能得到真正的物理實(shí)現(xiàn)。
上面所述的三個(gè)世界中,現(xiàn)實(shí)世界是客觀存在,而其他二個(gè)世界則是人們抽象得到的,這種加工轉(zhuǎn)化的過程是一種逐步精化和提高的過程(如圖11.3所示),它符合人類認(rèn)識(shí)客觀事物的規(guī)律。表示這三個(gè)世界術(shù)語的對應(yīng)關(guān)系如表11.2所示。圖11.3三個(gè)世界的轉(zhuǎn)化示意圖11.2.2數(shù)據(jù)模型
數(shù)據(jù)是現(xiàn)實(shí)世界的符號的抽象,而數(shù)據(jù)模型則是數(shù)據(jù)特征的抽象。在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)模型是它的核心與基礎(chǔ)。數(shù)據(jù)模型描述數(shù)據(jù)的結(jié)構(gòu),定義在其上的操作以及約束條件。它從抽象層次上描述了系統(tǒng)的靜態(tài)特征、動(dòng)態(tài)行為和約束條件,為數(shù)據(jù)庫系統(tǒng)的信息表示與操作提供了一個(gè)抽象框架。數(shù)據(jù)模型按不同的應(yīng)用層次分成信息模型和結(jié)構(gòu)數(shù)據(jù)模型兩個(gè)層次。
信息模型也稱概念模型,它是一種面向客觀世界、面向用戶的模型,它與具體的數(shù)據(jù)庫管理系統(tǒng)無關(guān),與具體的計(jì)算機(jī)平臺(tái)無關(guān)。信息模型著重于對客觀世界復(fù)雜事物的結(jié)構(gòu)描述及它們間的內(nèi)在聯(lián)系的刻畫,而與數(shù)據(jù)在計(jì)算機(jī)中的物理存儲(chǔ)無關(guān)。目前,最常用的信息模型是實(shí)體-聯(lián)系模式(E-R模型)。結(jié)構(gòu)數(shù)據(jù)模型是一種面向數(shù)據(jù)庫系統(tǒng)的模型,該模型著重于在數(shù)據(jù)庫系統(tǒng)一級的實(shí)現(xiàn)。它是客觀世界到計(jì)算機(jī)間的中介模型,具有承上啟下的功能。信息模型只有在轉(zhuǎn)換成數(shù)據(jù)模型后才能在數(shù)據(jù)庫中得以表示。目前,數(shù)據(jù)模型很多,較為成熟并被人們所大量使用的有層次模型、網(wǎng)狀模型、關(guān)系模型、面向?qū)ο竽P偷?。結(jié)構(gòu)數(shù)據(jù)模型通常由數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作與數(shù)據(jù)約束三個(gè)部分組成。
(1)數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)模型中的數(shù)據(jù)結(jié)構(gòu)主要描述數(shù)據(jù)類型、內(nèi)容、性質(zhì)的有關(guān)情況以及描述數(shù)據(jù)間的聯(lián)系的有關(guān)情況。數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)模型的基礎(chǔ),數(shù)據(jù)操作與約束均建立在數(shù)據(jù)結(jié)構(gòu)上。不同的數(shù)據(jù)結(jié)構(gòu)有著不同的操作與約束。因此,一般數(shù)據(jù)模型的分類均以數(shù)據(jù)結(jié)構(gòu)的不同而分。
(2)數(shù)據(jù)操作:是指對數(shù)據(jù)庫中各種對象的實(shí)例允許執(zhí)行的操作的集合,包括操作和有關(guān)操作的規(guī)則。例如插入、刪除、修改、檢索、更新等操作,數(shù)據(jù)模型要定義這些操作的確切含義、操作符號、操作規(guī)則以及實(shí)現(xiàn)操作的語言等。
(3)數(shù)據(jù)約束:數(shù)據(jù)的約束條件是完整性規(guī)則的集合,用以限定符合數(shù)據(jù)模型的數(shù)據(jù)庫狀態(tài)以及狀態(tài)的變化,以保證數(shù)據(jù)的正確、有效和相容。數(shù)據(jù)模型中的數(shù)據(jù)及其聯(lián)系都要遵循完整性規(guī)則的制約。例如,數(shù)據(jù)庫的主鍵不允許空值,人的年齡不能為負(fù)數(shù)等。
1.信息模型(實(shí)體-聯(lián)系模型)
實(shí)體-聯(lián)系模型(Entity-RelationshipModel)又稱E-R模型,它是P.P.Chen于1976年首先提出的,此后該模型不斷擴(kuò)展和完善,成為被廣泛采用的信息模型設(shè)計(jì)方法。這個(gè)模型直接從現(xiàn)實(shí)世界中抽象出實(shí)體類型及實(shí)體間聯(lián)系,然后用實(shí)體聯(lián)系圖(E-R圖)表示數(shù)據(jù)的抽象和數(shù)據(jù)的聯(lián)系。由于E-R圖簡單直觀,因此被廣泛使用。
1)概念
(1)實(shí)體:客觀存在的且又能相互區(qū)別的事物稱為實(shí)體,如一個(gè)學(xué)生、一門課。實(shí)體也可以是抽象的事件,如一次試驗(yàn)。實(shí)體是信息世界中的基本單位。
(2)實(shí)體集:具有相同特征的實(shí)體的集合稱為實(shí)體集。如數(shù)學(xué)課、英語課是實(shí)體,而所有課程則組成一個(gè)實(shí)體集。
(3)屬性:是實(shí)體所具有的特征。一個(gè)實(shí)體由若干個(gè)屬性描述,如學(xué)生的屬性可以有學(xué)號、姓名、班級、宿舍等。屬性可以有值,一個(gè)屬性的取值范圍稱為該屬性的域。實(shí)體有型與值之別,一個(gè)實(shí)體的所有屬性構(gòu)成了這個(gè)實(shí)體的型,如學(xué)生實(shí)體,它的型是學(xué)號、姓名、性別、年齡、班級、宿舍等,而實(shí)體中屬性值的集合(即元組)則構(gòu)成了這個(gè)實(shí)體的值。
(4)聯(lián)系:現(xiàn)實(shí)世界中事物間的關(guān)聯(lián)稱為聯(lián)系。在信息世界中,聯(lián)系反映了實(shí)體集間的一定關(guān)系,如學(xué)生與課程這兩個(gè)實(shí)體集間的選修關(guān)系,輔導(dǎo)員與學(xué)生這兩個(gè)實(shí)體集間的管理關(guān)系,教師與課程這兩個(gè)實(shí)體集間的授課關(guān)系。實(shí)體集間的聯(lián)系有多種,就實(shí)體集的個(gè)數(shù)而言有:
①兩個(gè)實(shí)體集間的聯(lián)系:兩個(gè)實(shí)體集間的聯(lián)系是一種最為常見的聯(lián)系,聯(lián)系概念中舉的例子均屬兩個(gè)實(shí)體集間的聯(lián)系。
②多個(gè)實(shí)體集間的聯(lián)系:這種聯(lián)系包括三個(gè)實(shí)體集間的聯(lián)系以及三個(gè)以上實(shí)體集間的聯(lián)系。如教師、課程、學(xué)生這三個(gè)實(shí)體集間存在著教師提供課程供學(xué)生選修的聯(lián)系。
③一個(gè)實(shí)體集內(nèi)部的聯(lián)系:一個(gè)實(shí)體集內(nèi)有若干個(gè)實(shí)體,它們間的聯(lián)系稱為實(shí)體集內(nèi)部的聯(lián)系。如學(xué)校教師這個(gè)實(shí)體集內(nèi)部可以有上下級聯(lián)系,某個(gè)教師(如教研室主任)既是院長的下級,又是教研室里教師的上級。實(shí)體集間聯(lián)系的個(gè)數(shù)可以是單個(gè),也可以是多個(gè)。如院長和教師之間既有上下級聯(lián)系,也有同事間聯(lián)系,還可以有項(xiàng)目組的聯(lián)系等。
兩個(gè)實(shí)體集間的聯(lián)系實(shí)際上是實(shí)體集間的函數(shù)關(guān)系,這種函數(shù)關(guān)系可以有下面幾種:
(a)一對一聯(lián)系:對于實(shí)體集A中的每一實(shí)體,實(shí)體集B中至多有一個(gè)實(shí)體與之聯(lián)系,反之亦然。這種函數(shù)關(guān)系是常見的函數(shù)關(guān)系之一,它可以記為1∶1。如學(xué)校與校長間的聯(lián)系,一個(gè)學(xué)校與一個(gè)校長間相互一一對應(yīng)。
(b)一對多或多對一聯(lián)系:對于實(shí)體集A中的每一實(shí)體,實(shí)體集B中有n個(gè)實(shí)體(n≥0)與之聯(lián)系;反之,對于實(shí)體集B中每一實(shí)體,實(shí)體集A中至多只有一個(gè)實(shí)體與之聯(lián)系,它們可以記為l∶n或n∶1。如學(xué)生與其宿舍房間的聯(lián)系是多一對應(yīng)函數(shù)關(guān)系(反之,則為一多對應(yīng)函數(shù)關(guān)系),即多個(gè)學(xué)生對應(yīng)一個(gè)房間。
(c)多對多聯(lián)系:對于實(shí)體集A中的每一實(shí)體,實(shí)體集B中有n個(gè)實(shí)體(n≥0)與之聯(lián)系,對于實(shí)體集B中的每一實(shí)體,實(shí)體集A中有m個(gè)實(shí)體(m≥0)與之聯(lián)系,可記為m∶n。如教師與學(xué)生這兩個(gè)實(shí)體集間的教與學(xué)的聯(lián)系是多多對應(yīng)函數(shù)關(guān)系,因?yàn)橐粋€(gè)教師可以教授多個(gè)學(xué)生,而一個(gè)學(xué)生又可以受教于多個(gè)教師。
圖11.4所示為實(shí)體之間的三種聯(lián)系。圖11.4實(shí)體之間的三種聯(lián)系
2)?E-R模型表示
E-R模型一個(gè)很好的優(yōu)點(diǎn)是它可以用一種非常直觀的圖來表示,這種圖稱為E-R圖。在E-R圖中,我們分別用下面的不同幾何圖形來表示E-R模型中的概念與聯(lián)接關(guān)系,它們是:
(1)實(shí)體:在E-R圖中用矩形框表示實(shí)體,矩形框內(nèi)注明實(shí)體名稱,例如學(xué)生、課程都是實(shí)體。
(2)屬性:在E-R圖中用橢圓框表示屬性,在橢圓框內(nèi)注明屬性名,屬性依附于實(shí)體。如學(xué)生Student實(shí)體有屬性學(xué)號、姓名、出生日期、性別、班級和高考成績等。
(3)聯(lián)系:在E-R圖中用菱形框表示實(shí)體之間的聯(lián)系,在菱形框內(nèi)給出聯(lián)系名稱,還應(yīng)當(dāng)標(biāo)出實(shí)體間的函數(shù)對應(yīng)關(guān)系,如1∶1,1∶n,n∶m等。顯然,學(xué)生與課程之間是多對多函數(shù)對應(yīng)關(guān)系。如果實(shí)體間是多對多聯(lián)系,那么聯(lián)系也具有屬性。
【例11-1】在學(xué)生選課系統(tǒng)中,有學(xué)生和課程實(shí)體,以及附屬于它們的屬性和實(shí)體之間的聯(lián)系,該系統(tǒng)的E-R圖可以用圖11.5表示。
我們?nèi)菀卓闯?,E-R模型有兩個(gè)明顯的優(yōu)點(diǎn):接近于人的思維,容易理解;與計(jì)算機(jī)無關(guān),用戶容易接受。但是E-R模型只能說明實(shí)體間語義的聯(lián)系,還不能進(jìn)一步說明詳細(xì)的數(shù)據(jù)結(jié)構(gòu)。在概念上,E-R模型中的實(shí)體、屬性與聯(lián)系是三個(gè)有明顯區(qū)別的不同概念,但是在分析客觀世界的具體事物時(shí),往往會(huì)產(chǎn)生混淆,以致區(qū)別不清。這是構(gòu)造E-R模型最困難的一點(diǎn)。解決該困難主要靠經(jīng)驗(yàn)與積累,當(dāng)然也有一些規(guī)則可循,但關(guān)鍵是與應(yīng)用背景以及設(shè)計(jì)人員的理解有關(guān)。圖11.5學(xué)生選課系統(tǒng)的E-R圖
2.結(jié)構(gòu)數(shù)據(jù)模型
實(shí)體聯(lián)系模型反映了實(shí)體之間的聯(lián)系,是人們對現(xiàn)實(shí)世界客觀事物之間聯(lián)系的認(rèn)識(shí)。而結(jié)構(gòu)數(shù)據(jù)模型是實(shí)體聯(lián)系模型的數(shù)據(jù)化,實(shí)體聯(lián)系模型和結(jié)構(gòu)數(shù)據(jù)模型是對現(xiàn)實(shí)世界中客觀事物及其聯(lián)系在信息世界和數(shù)據(jù)世界的兩級抽象描述。在建立了實(shí)體聯(lián)系模型之后,就可以著手建立數(shù)據(jù)模型。借助于數(shù)據(jù)模型,能夠更徹底、更精確地表達(dá)客觀事物的內(nèi)在關(guān)系。
數(shù)據(jù)模型的種類很多,用于不同的使用范圍。目前常用的數(shù)據(jù)模型有層次模型、網(wǎng)狀模型和關(guān)系模型三種。
1)層次模型
層次模型如圖11.6所示,其基本結(jié)構(gòu)是樹形結(jié)構(gòu),這種結(jié)構(gòu)方式在現(xiàn)實(shí)世界中很普遍,如家族結(jié)構(gòu)、行政組織機(jī)構(gòu),它們自頂向下、層次分明。層次模型通常是用樹形結(jié)構(gòu)來表示各類實(shí)體及實(shí)體間的一對多聯(lián)系(包括一對一聯(lián)系),每一個(gè)結(jié)點(diǎn)表示一個(gè)記錄類型,結(jié)點(diǎn)間的連線表示記錄類型間的聯(lián)系。圖11.6層次模型示意圖層次模型具有如下特征:
(1)有且只有一個(gè)結(jié)點(diǎn),無雙親結(jié)點(diǎn),該結(jié)點(diǎn)稱之為根結(jié)點(diǎn)。
(2)根以外的其他結(jié)點(diǎn)有且只有一個(gè)雙親結(jié)點(diǎn),這就使得層次數(shù)據(jù)庫系統(tǒng)只能直接處理一對多的實(shí)體關(guān)系。
(3)任何一個(gè)給定的記錄值只有按其路徑查看時(shí),才能顯出它的全部意義,沒有一個(gè)子女記錄能夠脫離雙親記錄值而獨(dú)立存在。在層次模型中,同一雙親的子女結(jié)點(diǎn)稱為兄弟結(jié)點(diǎn),沒有子女的結(jié)點(diǎn)稱為葉子結(jié)點(diǎn)。
在層次模型中,每個(gè)結(jié)點(diǎn)描述一個(gè)實(shí)體型,稱為記錄型。一個(gè)記錄型可以有許多記錄值,簡稱記錄。結(jié)點(diǎn)之間的有向線段表示記錄之間的聯(lián)系。如果要存取某一記錄型的記錄,可以從根結(jié)點(diǎn)開始,按照有向樹層次逐層向下查找,查找路徑就是存取路徑。
2)網(wǎng)狀模型
網(wǎng)狀模型是一種較為通用的模型,從圖論觀點(diǎn)看,它是一個(gè)不加任何條件限制的無向圖。在圖論中,這種圖稱為網(wǎng)絡(luò),因此這種模型就稱為網(wǎng)狀模型。
網(wǎng)狀數(shù)據(jù)模型是一種比層次模型更具普遍性的結(jié)構(gòu),它可以更直接地描述現(xiàn)實(shí)世界。從下面的特征不難看出,層次結(jié)構(gòu)實(shí)際上是網(wǎng)狀結(jié)構(gòu)的一個(gè)特例。網(wǎng)狀數(shù)據(jù)模型的特征是:
(1)允許多個(gè)結(jié)點(diǎn)無雙親結(jié)點(diǎn)。
(2)允許結(jié)點(diǎn)有多個(gè)雙親結(jié)點(diǎn)。
(3)允許兩個(gè)結(jié)點(diǎn)之間有多種聯(lián)系。
與層次模型一樣,網(wǎng)狀模型中也是每個(gè)結(jié)點(diǎn)表示一個(gè)記錄類型,每個(gè)記錄類型可以包含若干項(xiàng),結(jié)點(diǎn)間的連線表示記錄類型之間的父子關(guān)系,網(wǎng)狀數(shù)據(jù)結(jié)構(gòu)可以有很多種。
網(wǎng)狀模型能夠直接描述現(xiàn)實(shí)世界的多種復(fù)雜聯(lián)系,具有良好的性能,存取效率高,能取代任何層次結(jié)構(gòu)的系統(tǒng),但其數(shù)據(jù)定義語言(DDL)復(fù)雜,數(shù)據(jù)獨(dú)立性較差。
3)關(guān)系模型
關(guān)系模型的數(shù)學(xué)理論基礎(chǔ)是建立在集合代數(shù)上的,它是目前廣為應(yīng)用的一種重要的數(shù)據(jù)模型。關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)組織、管理與檢索等都是基于數(shù)學(xué)理論的方法來處理數(shù)據(jù)庫中的數(shù)據(jù)本身和數(shù)據(jù)之間的聯(lián)系。
關(guān)系模型的基本數(shù)據(jù)結(jié)構(gòu)是二維表,簡稱表。關(guān)系模型中的操作是建立在二維表上的操作,它包括對一張表及多張表間的查詢,對一張表的刪除、插入及修改操作。
IBM公司的E.F.Codd于1970年6月在一篇論文《大型共享數(shù)據(jù)庫的關(guān)系模型》(arelationalmodelforlargeshareddatabanks)中提出了關(guān)系模型與關(guān)系模型數(shù)據(jù)庫的概念與理論,并用數(shù)學(xué)理論作為該模型的基礎(chǔ)支撐。關(guān)系模型數(shù)據(jù)庫由于結(jié)構(gòu)簡單、使用方便、理論成熟而引來了越來越多的用戶,20世紀(jì)80年代以后,它已成為數(shù)據(jù)庫系統(tǒng)中的主流模型。目前主要的數(shù)據(jù)庫產(chǎn)品有ORACLE、FoxPro、SQLServer、ACCESS等。關(guān)系模型由關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作及關(guān)系的完整性約束三部分組成。
(1)關(guān)系數(shù)據(jù)結(jié)構(gòu)。
①關(guān)系。一個(gè)關(guān)系對應(yīng)于一張二維表,每個(gè)關(guān)系有一個(gè)關(guān)系名。從縱向看,表中的一行稱為一個(gè)元組,每行數(shù)據(jù)也稱為一個(gè)記錄;關(guān)系在每個(gè)橫向上由若干個(gè)數(shù)據(jù)項(xiàng)組成,稱為屬性或字段。表11.3給出了一個(gè)學(xué)生(Student)二維表的例子。
二維表具有的性質(zhì)有元組個(gè)數(shù)有限性、元組的唯一性、元組的次序無關(guān)性、屬性名唯一性、屬性的次序無關(guān)性。
②碼。碼是關(guān)系模型中的一個(gè)重要概念,它具有標(biāo)識(shí)元組、建立元組間聯(lián)系等重要作用。
●碼:在二維表中凡能唯一最小標(biāo)識(shí)元組的屬性集稱為該表的碼或稱關(guān)鍵字。
●候選碼:二維表中可能有若干個(gè)碼,它們稱為該表的候選碼或稱候選關(guān)鍵字。
●主碼:從二維表的所有候選碼中選取一個(gè)作為用戶使用的碼稱為主碼(或稱主關(guān)鍵字),一般主碼也簡稱碼。
●外碼:若表A中的某屬性集是某表B的碼,則稱該屬性集為A的外碼(或稱外關(guān)鍵字)。③關(guān)系模式。關(guān)系的描述稱為關(guān)系模式,一個(gè)關(guān)系模式應(yīng)當(dāng)是一個(gè)五元組。關(guān)系模式可以形式化地表示為
R(U,D,DOM,F(xiàn))
其中,R為關(guān)系名,U為組成該關(guān)系的屬性名集合,D為屬性組U中屬性所來自的域,DOM為屬性向域的映射集合,F(xiàn)為屬性間數(shù)據(jù)的依賴關(guān)系集合。
關(guān)系模式通??梢院営洖?/p>
R(A1,A2,…,An)
其中,R為關(guān)系名,A1,A2,…,An為屬性名。而域名及屬性向域的映射常常直接說明為屬性的類型、長度。
E-R模型可用關(guān)系模式表示。如圖11.5所示的E-R圖可用下面的關(guān)系模式表示:
學(xué)生Student(學(xué)號,姓名,出生日期,性別,班級,宿舍,高考成績)
選課Score(學(xué)號,課程號,成績)
課程Course(課程號,課程名,學(xué)分,教師)
表11.4給出了E-R模型與關(guān)系術(shù)語間的比較。④關(guān)系和關(guān)系模式的區(qū)別。關(guān)系實(shí)際上就是關(guān)系模式在某一時(shí)刻的狀態(tài)或內(nèi)容。也就是說,關(guān)系模式是型,關(guān)系是它的值。關(guān)系模式是靜態(tài)的、穩(wěn)定的,而關(guān)系是動(dòng)態(tài)的、隨時(shí)間不斷變化的,因?yàn)殛P(guān)系操作在不斷地更新著數(shù)據(jù)庫中的數(shù)據(jù)。但在實(shí)際應(yīng)用中,常把關(guān)系模式和關(guān)系統(tǒng)稱為關(guān)系。
(2)關(guān)系操作。
關(guān)系模型的數(shù)據(jù)操作即是建立在關(guān)系上的數(shù)據(jù)操作,一般有查詢、增加、刪除及修改四種操作。這四種操作的對象都是關(guān)系,而操作結(jié)果也是關(guān)系。這四種操作可以分解成六種基本操作:關(guān)系的屬性指定、關(guān)系的元組選擇、兩個(gè)關(guān)系合并、一個(gè)或多個(gè)關(guān)系的查詢、關(guān)系中元組的插入和關(guān)系中元組的刪除。
①關(guān)系的屬性指定:指定一個(gè)關(guān)系內(nèi)的某些屬性,用它確定關(guān)系這個(gè)二維表中的列。
②關(guān)系的元組選擇:用一個(gè)邏輯表達(dá)式給出關(guān)系中所滿足此表達(dá)式的元組,用它確定關(guān)系這個(gè)二維表的行。
利用前面兩種操作可確定一張二維表內(nèi)滿足一定行、列要求的數(shù)據(jù)。③兩個(gè)關(guān)系合并:將兩個(gè)關(guān)系合并成一個(gè)關(guān)系。用此操作可以不斷合并,從而可以將若干個(gè)關(guān)系合并成一個(gè)關(guān)系,以建立多個(gè)關(guān)系間操作。
④關(guān)系的查詢:在一個(gè)關(guān)系或多個(gè)關(guān)系間進(jìn)行查詢,查詢的結(jié)果也為關(guān)系。
⑤關(guān)系中元組的插入:在關(guān)系中增添一些元組。
⑥關(guān)系中元組的刪除:在關(guān)系中刪除一些元組。
(3)關(guān)系完整性約束。
關(guān)系模型的完整性規(guī)則是用來約束關(guān)系的,以保證數(shù)據(jù)庫中數(shù)據(jù)的正確性和一致性。關(guān)系模型的完整性共有三類:實(shí)體完整性、參照完整性和用戶定義的完整性。
●實(shí)體完整性規(guī)則:要求表上的主關(guān)鍵字中屬性值不能為空值,這是數(shù)據(jù)庫完整性的最基本要求。因?yàn)橹麝P(guān)鍵字是唯一決定元組的,如為空值,則其唯一性就成為不可能的了?!駞⒄胀暾砸?guī)則:也是完整性中的基本規(guī)則,它要求不允許引用不存在的元組,亦即是說在表中的外關(guān)鍵字要么為空值,要么其關(guān)聯(lián)表中必存在元組。如在表Student(學(xué)號,姓名,出生日期,性別,班級,宿舍,高考成績)與Score(學(xué)號,課程編號,成績)中,Score中主關(guān)鍵字為(學(xué)號,課程編號),而外關(guān)鍵字為學(xué)號,Score與Student通過學(xué)號相關(guān)聯(lián),而參照完整性規(guī)則要求Score中的學(xué)號的值必在Student中有相應(yīng)元組值,如有Score(0502001,03003,60)則必在Student中存在Student(0502001,…,…,…)。
參照完整性規(guī)則給出了表之間相關(guān)聯(lián)的基本要求。
上述兩種規(guī)則是關(guān)系數(shù)據(jù)庫所必須遵守的規(guī)則,因此任何一個(gè)RDBMS必須由系統(tǒng)自動(dòng)支持?!裼脩舳x的完整性規(guī)則:是針對具體數(shù)據(jù)環(huán)境與應(yīng)用環(huán)境由用戶具體設(shè)置的規(guī)則,它反映了具體應(yīng)用中數(shù)據(jù)的語義要求。
在實(shí)際系統(tǒng)中,完整性規(guī)則一般應(yīng)在建立數(shù)據(jù)庫中的表時(shí)進(jìn)行定義,應(yīng)用編程人員不需再做考慮。如果某些約束條件沒有建立在表一級,則應(yīng)用編程人員應(yīng)在各模塊的具體編程中通過程序進(jìn)行檢驗(yàn)和控制。11.2.3關(guān)系代數(shù)
關(guān)系數(shù)據(jù)庫系統(tǒng)的特點(diǎn)之一是它建立在數(shù)學(xué)理論基礎(chǔ)之上。目前,很多數(shù)學(xué)理論可以表示關(guān)系模型,其中最為著名的是關(guān)系代數(shù)與關(guān)系演算。關(guān)系代數(shù)是用代數(shù)的方法表示關(guān)系模型,而關(guān)系演算則是用邏輯方法表示關(guān)系模型,我們這里只介紹關(guān)系代數(shù)。
1.關(guān)系的表示
關(guān)系是由若干個(gè)不同元組所組成的,因此關(guān)系可視為元組的集合。一個(gè)n元關(guān)系,它的元組可視為一個(gè)n元有序組,因此,我們說n元關(guān)系是一個(gè)(n元)有序組的集合。設(shè)有一n元關(guān)系R,它有n個(gè)域,分別是D1,D2,…,Dn,此時(shí),它的笛卡爾乘積是
D1×D2×…×Dn
這個(gè)笛卡爾乘積給出了這樣一個(gè)集合,它的每個(gè)元素都是具有如下形式的n元有序組:
(d1,d2,…,dn)di∈Di?(i=1,2,…,n)
它與n元關(guān)系R有如下聯(lián)系:
R
D1×D2×…×Dn
因此我們說,n元關(guān)系R是n元有序組的集合,是它的域的笛卡爾乘積子集。
【例11-2】
表11.3所示的關(guān)系Student可用6個(gè)7元有序組所組成的集合表示。
Student={(0502001,張三,1986-1-1,男,電子061,3#101,600),(0502002,趙明,1987-5-26,男,電子061,3#102,589),(0502003,楊麗,1986-6-1,女,電子062,3#102,621),(0501001,李四,1986-1-21,男,信息061,6#101,580),(0501002,李紅,1987-10-16,女,信息061,6#101,611),(0501003,王飛,1986-12-7,男,信息061,6#102,598)}
2.關(guān)系基本運(yùn)算
1)關(guān)系代數(shù)的運(yùn)算符
●集合運(yùn)算符:∪(并)、-(差)、∩(交)、×(笛卡爾乘積)
●專門的關(guān)系運(yùn)算符:
(選擇)、П(投影)、∞(連接)、÷(除)
●比較運(yùn)算符:
={>,≥,<,≤,=,≠}
●邏輯運(yùn)算符:∧(邏輯“與”and)、∨(邏輯“或”or)和
(n邏輯“非”not)。
2)傳統(tǒng)的集合運(yùn)算
傳統(tǒng)的集合運(yùn)算都是二元運(yùn)算,所謂二元運(yùn)算是指運(yùn)算的對象為兩個(gè)。傳統(tǒng)的集合運(yùn)算如圖11.7所示。圖11.7傳統(tǒng)的集合運(yùn)算
(1)并(Union)運(yùn)算:設(shè)關(guān)系R和關(guān)系S具有相同的目n(即兩個(gè)關(guān)系都有n個(gè)屬性),且相應(yīng)的屬性取自同一個(gè)域,則關(guān)系R與關(guān)系S的并由屬于R或?qū)儆赟的元組組成。其結(jié)果關(guān)系仍為n目關(guān)系,記做:
R∪S={t|t∈R∨t∈S}
其中t代表元組。
【例11-3】
利用表11.5和表11.6中所示的數(shù)據(jù)做并運(yùn)算,得到的結(jié)果如表11.7所示。表11.5關(guān)系R表11.6關(guān)系S表11.7R∪S
(2)差(Difference)運(yùn)算:設(shè)關(guān)系R和關(guān)系S具有相同的目n,且相應(yīng)的屬性取自同一個(gè)域,則關(guān)系R與關(guān)系S的差由屬于R而不屬于S的所有元組組成。其結(jié)果關(guān)系仍為n目關(guān)系。記做:
R-S={t|t∈R∧t∈S}
【例11-4】
利用表11.5和表11.6中所示的數(shù)據(jù)做差運(yùn)算,得到的結(jié)果如表11.8所示。
(3)交(Intersection)運(yùn)算:設(shè)關(guān)系R和關(guān)系S具有相同的目n,且相應(yīng)的屬性取自同一個(gè)域,則關(guān)系R與關(guān)系S的交由既屬于R又屬于S的元組組成。其結(jié)果關(guān)系仍為n目關(guān)系。記做:
R∩S={t|t∈R∧t∈S}
【例11-5】利用表11.5和表11.6中所示的數(shù)據(jù)做交運(yùn)算,得到的結(jié)果如表11.9所示。表11.8R-S表11.9R∩S關(guān)系的交運(yùn)算可以用差運(yùn)算表示:
R∩S=R-(R-S)
(4)笛卡爾乘積(CartesianProduct)運(yùn)算:對于兩個(gè)關(guān)系的合并操作可以用笛卡爾乘積表示,設(shè)有關(guān)系R,S,它們分別為n、m元關(guān)系,分別有p、q個(gè)元組,此時(shí),關(guān)系R與S經(jīng)笛卡爾乘積所得的關(guān)系T是一個(gè)n+m元關(guān)系,它的有序組個(gè)數(shù)是p×q,T的有序組是由R與S的有序組組合而成的。關(guān)系R與S的笛卡爾乘積可寫為
R?×?S
【例11-6】兩個(gè)關(guān)系R、S及它們的笛卡爾乘積T=R×S如表11.10所示。
3)專門的關(guān)系運(yùn)算
(1)投影(Projection)運(yùn)算:在關(guān)系內(nèi)選取若干個(gè)屬性的運(yùn)算叫投影運(yùn)算。投影運(yùn)算是一個(gè)一元運(yùn)算,一個(gè)關(guān)系通過投影運(yùn)算(并由該運(yùn)算給出所指定的屬性)后仍為一個(gè)關(guān)系R‘。R’是這樣一個(gè)關(guān)系,它是R中投影運(yùn)算所指出的那些屬性所組成的關(guān)系。設(shè)R有n個(gè)屬性:A1,A2,…,An,則在R上對屬性Ai1,Ai2,…,Aim(Aij∈{A1,A2,…,An})的投影可表示成下面的一元運(yùn)算:
∏Ai1,Ai2,…Aim(R)
【例11-7】對表11.3所示的關(guān)系Student在姓名和班級投影上可得到:
∏姓名.班級(Student)={(張三,電子061),(趙明,電子061),(楊麗,電子061),(李四,信息061),(李紅,信息061),(王飛,信息061)}
(2)選擇(selection)運(yùn)算:選擇運(yùn)算是對關(guān)系內(nèi)的元組進(jìn)行選擇。選擇運(yùn)算也是一個(gè)一元運(yùn)算,關(guān)系R通過選擇運(yùn)算(并由該運(yùn)算給出所選擇的邏輯條件)后仍為一個(gè)關(guān)系,這個(gè)關(guān)系是由R中那些滿足邏輯條件的有序組所組成的。設(shè)關(guān)系的邏輯條件為F,則R滿足F的選擇運(yùn)算可寫為
σF(R)邏輯條件F是一個(gè)邏輯表達(dá)式,它由下面的規(guī)則組成:
①它可以具有
θ?b的形式,其中
、b是域(變量)或常量,但
、b又不能同為常量,θ是比較符,它可以是<、>、≤、≥、=及≠。
θ?b叫基本邏輯條件。
②可由若干個(gè)基本邏輯條件經(jīng)邏輯運(yùn)算∧(與)、∨(或)構(gòu)成,稱為復(fù)合邏輯條件。
【例11-8】
在表11.3所示的關(guān)系Student中找出高考成績大于610分的所有元組:
σ(高考成績>610)(Student)={(0502003,楊麗,1986-6-1,女,電子062,3#102,621),(0501002,李紅,1987-10-16,女,信息061,6#101,611)}
【例11-9】在關(guān)系Student中找出高考成績大于610分且在信息061班學(xué)習(xí)的學(xué)生,可以寫為
σ(高考成績>610)∧(班級=‘信息061’)(Student)={(0501002,李紅,1987-10-16,女,信息061,6#101,611)}
【例11-10】
在關(guān)系Student中查出所有高考成績大于610分的學(xué)生學(xué)號,可以寫為
∏學(xué)號σ高考成績>610(Student)={(0502003),(0501002)}
(3)連接運(yùn)算:是將兩個(gè)關(guān)系連接起來,以滿足查詢?nèi)蝿?wù)的要求,連接運(yùn)算是二元運(yùn)算。實(shí)際上,我們前面所講的關(guān)系笛卡爾積運(yùn)算就是一種連接運(yùn)算,是兩個(gè)關(guān)系的最大連接。前面我們也提到笛卡爾積運(yùn)算的結(jié)果,產(chǎn)生了很多沒有實(shí)際意義的記錄,而連接運(yùn)算是將兩個(gè)關(guān)系連接起來,獲得與用戶查詢有關(guān)的新關(guān)系。關(guān)系的連接有兩類:條件連接和自然連接。
①條件連接。條件連接運(yùn)算的運(yùn)算符是“
F”,是將兩個(gè)關(guān)系有條件的連接起來。因此,連接運(yùn)算在某種意義上說是一種復(fù)合運(yùn)算,可以理解為先將兩個(gè)關(guān)系進(jìn)行笛卡爾積運(yùn)算,再對連接結(jié)果做選擇運(yùn)算。連接運(yùn)算記為
R
FS={t|t=(t1,t2)∧t1∈R∧t2∈S∧F(t)}
其中:F(t)=R(i)θS(j)。
上面對關(guān)系R、S的運(yùn)算等價(jià)于:
R
θS=δR(i)θS(j)(R×S)
即對關(guān)系R和關(guān)系S先進(jìn)行笛卡爾積運(yùn)算,然后對運(yùn)算的結(jié)果進(jìn)行選擇運(yùn)算,選擇滿足條件R(i)θS(j)的記錄。在條件R(i)θS(j)中,“θ”是條件運(yùn)算符,可以是≤、≥、<、=、>這幾個(gè)條件運(yùn)算符;R(i)表示關(guān)系R元組的第i個(gè)分量;S(j)表示關(guān)系S元組的第j個(gè)分量。
現(xiàn)在我們可以完整地說明條件連接運(yùn)算的定義:連接運(yùn)算是將兩個(gè)關(guān)系進(jìn)行笛卡爾積,再從笛卡爾積中選擇滿足一定條件記錄的運(yùn)算,選擇的條件可以是兩個(gè)關(guān)系的元組分量是否滿足某種條件,這類條件稱為“θ”條件,也可以是一個(gè)一般的條件,稱為“F”條件。F為一個(gè)一般的條件表達(dá)式。
②自然連接。自然連接的運(yùn)算符是“”,是一種特殊的條件連接,它要求進(jìn)行連接的兩個(gè)關(guān)系具有相同的屬性組,連接的條件就是兩個(gè)相同屬性組的分量相等,并且在連接的結(jié)果中把重復(fù)的屬性去掉。因此,自然連接可以理解為將兩個(gè)有相同屬性的關(guān)系按對應(yīng)屬性值相等的條件進(jìn)行連接,再對連接的結(jié)果進(jìn)行投影運(yùn)算。自然連接運(yùn)算記為
R
S=∏m1,m2,…,mn(σR.A1=S.A1∧R.A2=S.A2∧…∧R.AK=S.AK(R×S))
其中σ選擇的條件是關(guān)系R和關(guān)系S相同的屬性對應(yīng)相等。上式中,表示關(guān)系R和關(guān)系S有K個(gè)相同的屬性,連接的條件是這K個(gè)屬性對應(yīng)相等;投影的屬性m1,m2,…,mn是R的所有屬性和S屬性中除了S.A1,S.A2,…,S.AK之外的所有屬性。
自然連接是一種常用的關(guān)系運(yùn)算,當(dāng)查詢數(shù)據(jù)涉及兩個(gè)關(guān)系時(shí),通常需將兩個(gè)關(guān)系進(jìn)行自然連接。自然連接比關(guān)系的笛卡爾積、條件連接運(yùn)算使用得多。
【例11-11】
兩個(gè)關(guān)系R和S,RS如表11.11所示。
11.3.1概述
規(guī)范化理論首先是由E.F.Codd于1971年提出的,目的是要設(shè)計(jì)“好的”關(guān)系數(shù)據(jù)庫模式。規(guī)范化是在關(guān)系型數(shù)據(jù)庫中減少數(shù)據(jù)冗余的過程。為討論關(guān)系數(shù)據(jù)庫規(guī)范化理論,我們先看一個(gè)例子。假設(shè)需設(shè)計(jì)一個(gè)教學(xué)管理數(shù)據(jù)庫,它的屬性有:學(xué)號,姓名,性別,班級,課程號,名稱,學(xué)分,成績,由此構(gòu)造出如表11.12所示的關(guān)系。
11.3關(guān)系數(shù)據(jù)庫規(guī)范化理論
我們很容易看出這個(gè)關(guān)系有如下缺點(diǎn):
(1)數(shù)據(jù)冗余。在這個(gè)關(guān)系中,一個(gè)學(xué)生如選修n門課,則這個(gè)學(xué)生的信息就要重復(fù)n遍。如張三這個(gè)學(xué)生修讀八門課,在這個(gè)數(shù)據(jù)庫中有關(guān)他的所有信息就要重復(fù)八次,這就造成了數(shù)據(jù)的冗余。
(2)插入異常。在這個(gè)關(guān)系中,如果我們要插入一門將來要開設(shè)的課程的信息,但現(xiàn)在學(xué)生還沒有選修,則無法將其存入這個(gè)數(shù)據(jù)庫內(nèi),這種現(xiàn)象就叫插入異常。
(3)刪除異常。關(guān)系中的0501002的李紅由于某種原因轉(zhuǎn)學(xué),因而有關(guān)她的信息在數(shù)據(jù)庫中就要被刪除,但在刪除李紅信息時(shí),連課程07101化學(xué)的相關(guān)信息也同時(shí)被刪除了(恰好在這個(gè)數(shù)據(jù)庫中,只有在李紅這個(gè)元組中記載有化學(xué)課程的有關(guān)信息),這種現(xiàn)象就叫刪除異常。
是什么原因引起數(shù)據(jù)冗余及插入、刪除異?,F(xiàn)象的出現(xiàn)呢?這是因?yàn)槲覀兯獦?gòu)造的數(shù)據(jù)庫中的各屬性間是相互關(guān)聯(lián)的,它們之間互相依賴、互相制約,構(gòu)成一個(gè)結(jié)構(gòu)嚴(yán)密的整體。因此,在構(gòu)造關(guān)系模式方案時(shí),必須從語義上摸清這些關(guān)聯(lián),將互相依賴的屬性構(gòu)成單獨(dú)的模式。每一個(gè)關(guān)系數(shù)據(jù)庫中的每個(gè)關(guān)系模式的屬性間一定要滿足某種內(nèi)在聯(lián)系,而這種聯(lián)系又可將對關(guān)系的不同要求分為若干個(gè)等級,這就叫做關(guān)系的規(guī)范化(normalization)。規(guī)范化可根據(jù)不同的要求而分成若干個(gè)級別。
11.3.2規(guī)范化理論
關(guān)系數(shù)據(jù)庫中關(guān)系規(guī)范化的問題在1970年Codd提出關(guān)系模型時(shí)就同時(shí)被提出來,關(guān)系規(guī)范化可按屬性間不同的依賴程度分為第一范式、第二范式、第三范式、Boyce-Codd范式以及第四范式。人們對規(guī)范化的認(rèn)識(shí)是有一個(gè)過程的,在1970年就已發(fā)現(xiàn)屬性間的函數(shù)依賴關(guān)系,從而定義了與函數(shù)依賴關(guān)系有關(guān)的第一、第二、第三及Boyce-Codd范式。在1976~1978年間,F(xiàn)agin、Delobe及Zanjolo發(fā)現(xiàn)了多值依賴關(guān)系,從而定義了與多值依賴有關(guān)的第四范式。
1.函數(shù)依賴
函數(shù)依賴是關(guān)系模式內(nèi)屬性間最常見的一種依賴關(guān)系。例如在關(guān)系模式Student中,學(xué)號與宿舍間有一種依賴關(guān)系,即學(xué)號的值一經(jīng)確定后,宿舍的值也隨之唯一地確定了,此時(shí)即稱學(xué)號函數(shù)決定宿舍或稱宿舍函數(shù)依賴于學(xué)號,它可用下面的符號表示:
學(xué)號→宿舍
同樣,我們還可以有:
學(xué)號→班級
學(xué)號→高考成績關(guān)系模式成績中的學(xué)號與成績間則沒有函數(shù)依賴關(guān)系,這是因?yàn)橐粋€(gè)確定的學(xué)號可以允許有多個(gè)成績(它們分別對應(yīng)于不同的課程),即成績并不能唯一地確定,但是(學(xué)號,課程號)與成績間則存在著函數(shù)依賴關(guān)系,即有:
(學(xué)號,課程號)→成績●函數(shù)依賴:設(shè)有關(guān)系模式R(A1,A2,…,An),簡記為R(U),其中U={A1,A2,…,An}。設(shè)X、Y是U的子集,r是R的任一具體關(guān)系,r的任意兩條記錄t1、t2,若t1[X]=t2[X]
(記錄t1、t2在X上的屬性值相等),則t1[Y]=t2[Y](記錄t1、t2在Y上的屬性值相等),則稱X函數(shù)決定Y,或Y函數(shù)依賴于X,記為X→Y。
●非平凡的函數(shù)依賴:一個(gè)函數(shù)依賴關(guān)系X→Y如滿足Y
X,則稱此函數(shù)依賴是非平凡的函數(shù)依賴。
●完全函數(shù)依賴:R(U)中如有X、Y
U,滿足X→Y且對任何X的真子集X',都有X'→Y',則稱Y完全函數(shù)依賴于X。●部分函數(shù)依賴:在關(guān)系模式R(U)中,如果X→Y,并且至少存在X的一個(gè)真子集X1,使得X1→Y成立,則稱Y部分依賴于X。
舉例:(學(xué)號,課程號)→姓名
●傳遞函數(shù)依賴:在關(guān)系模式R(U)中,如果X→Y,Y→Z,且Y
X,Y→X,則稱Z傳遞依賴于X。
舉例:學(xué)號→系地址(學(xué)號→系名稱,系名稱→系地址)●候選關(guān)鍵字:在關(guān)系模式R(U)中,K是U中的屬性或?qū)傩越M,如果K完全函數(shù)決定整個(gè)元組,則稱K為關(guān)系R(U)的一個(gè)候選關(guān)鍵字。如:學(xué)生關(guān)系中的(學(xué)號),選課關(guān)系中的(學(xué)號,課程號)就是候選關(guān)鍵字。
●關(guān)鍵字:也稱主鍵,當(dāng)候選鍵多于一個(gè)時(shí),可以選中其中的一個(gè)作為關(guān)鍵字。
●主屬性和非主屬性:包含在任意一個(gè)候選關(guān)鍵字中的屬性稱為主屬性,不包含在任意一個(gè)候選關(guān)鍵字中的屬性稱為非主屬性。如上例中的“學(xué)號”、“課程號”都為主屬性,而“成績”就是非主屬性?!裢怅P(guān)鍵字:外關(guān)鍵字的定義是,在關(guān)系模式R(U)中,若屬性或?qū)傩越MX不是關(guān)系R的關(guān)鍵字,但X是其客觀存在關(guān)系模式的關(guān)鍵字,則稱X為關(guān)系R(U)的外關(guān)鍵字。如選課關(guān)系中的“學(xué)號”不是該關(guān)系的關(guān)鍵字,但卻是學(xué)生關(guān)系的關(guān)鍵字,所以“學(xué)號”是選課關(guān)系的外關(guān)鍵字。
2.關(guān)系的范式
范式的定義與屬性間的依賴關(guān)系有密切關(guān)系,這里我們只介紹常用的幾個(gè)范式。一個(gè)較低范式的關(guān)系可以通過關(guān)系的無損分解轉(zhuǎn)換為若干較高級的范式關(guān)系的集合,這一過程就稱做關(guān)系規(guī)范化。
1)第一范式(1NF)
1NF:如果關(guān)系R的所有屬性都是不可再分的數(shù)據(jù)項(xiàng),則稱該關(guān)系屬于第一范式。
1NF存在許多問題,如數(shù)據(jù)冗余大、修改麻煩、插入異常、刪除異常等。
1NF是從關(guān)系的基本特征要求而來的,任何關(guān)系必須遵守。1NF的實(shí)質(zhì)就是消除表中有表,使表中的每一個(gè)元組分量都不可再分。
2)第二范式(
2NF)
若關(guān)系模式R∈1NF,且每一個(gè)非主屬性完全函數(shù)依賴于關(guān)系R的某個(gè)候選鍵,則關(guān)系R為第二范式,記為R∈2NF。
2NF就是不允許關(guān)系模式的非主屬性與候選鍵之間的部分函數(shù)依賴,如關(guān)系模式R(教師號,教師姓名,電話,課程號,課程名)的候選鍵是(教師號,課程號),即:
(教師號,課程號)→課程名
但課程號是(教師號,課程號)的子集,實(shí)際上,
課程號→課程名也就是說,在關(guān)系R中存在著非主屬性對候選鍵的部分依賴,因此,關(guān)系R不是第二范式??蓪㈥P(guān)系R分解為
R1(教師號,教師姓名,聯(lián)系地址)
R2(教師號,課程號,課程名)
3)第三范式(3NF)
若關(guān)系模式R∈2NF,且每一個(gè)非主屬性都不傳遞依賴于某個(gè)候選鍵,則關(guān)系R屬于第三范式,記為:R∈3NF。
【例11-12】
我們來考察關(guān)系模式:S(S#,SNAME,AGE,DNO,DEAN),其中:
S#:學(xué)號 SNAME:學(xué)生姓名
AGE:學(xué)生年齡 DNO:學(xué)生所在的系號
DEAN:學(xué)生所在系的系名
這個(gè)關(guān)系模式中存在的函數(shù)依賴集為
F={S#→NAME,s#→AGE,s#→DNO,DNO→DEAN}
在這個(gè)關(guān)系模式中,顯然S#→(S#,SNAME,AGE,DNO,DEAN),即S#是關(guān)系模式的候選鍵,且是唯一的候選鍵,并且,非主屬性對候選鍵是完全函數(shù)依賴,不存在非主屬性對候選鍵的部分函數(shù)依賴。因此,關(guān)系模式S∈2NF,然而S#→DEAN是由S#→DNO,DNO→DEAN兩個(gè)函數(shù)依賴推出的,我們稱系名(DEAN)傳遞依賴于學(xué)號(S#),因此S不屬于第三范式。
我們考察關(guān)系模式S的關(guān)系實(shí)例,很容易發(fā)現(xiàn)這種關(guān)系中同樣存在著前面提到的數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)操作的弊端。如果將上述關(guān)系分解成:
S1=(S#,SNAME,AGE,DNO)
S2=(DNO,DEAN)
則S1∈3NF,S2∈3NF,它們各自的關(guān)系實(shí)例克服了存儲(chǔ)上的數(shù)據(jù)冗余及操作上的更新異常、刪除異常、插入異常等問題。
4)?Boyce-Codd范式(BCNF)
通常認(rèn)為BCNF是修正的第三范式,比3NF又進(jìn)一步,即如果關(guān)系R∈3NF,且關(guān)系的每一個(gè)屬性都不傳遞依賴于R的任何候選鍵,則該關(guān)系就屬于BCNF。
3.總結(jié)
1)關(guān)系規(guī)范化的本質(zhì)
關(guān)系規(guī)范化的本質(zhì)就是對一個(gè)關(guān)系進(jìn)行一層一層的分解,逐步消除其中存在的部分依賴和傳遞依賴,達(dá)到較高的范式。
分解后的范式并不是越高越好,因?yàn)榉妒皆礁撸P(guān)系所表達(dá)的信息內(nèi)容越單純,關(guān)系互相之間需要查詢,這樣運(yùn)算速度就會(huì)降低。在實(shí)際應(yīng)用中,我們著重于查詢而很少用到插入、更新和刪除等操作,所以一般也愿意采用較低的范式,因?yàn)檫@樣可以提高系統(tǒng)的響應(yīng)速度。
2)分解關(guān)系的基本原則
關(guān)系規(guī)范化的過程實(shí)質(zhì)就是對關(guān)系不斷分解的過程,通過分解可以使關(guān)系逐步達(dá)到較高一級的范式。分解的方法有很多,方法不同,其分解結(jié)果也不同,應(yīng)根據(jù)原則選擇最好的一種。分解關(guān)系的基本原則如下:
(1)分解必須是無損的(即分解后不應(yīng)丟失信息),也就是分解后的兩個(gè)關(guān)系通過自然連接能夠恢復(fù)原來的面貌。
(2)分解后的關(guān)系要相互獨(dú)立(避免對一個(gè)關(guān)系的修改涉及到另一個(gè)關(guān)系)。
(3)合理選擇規(guī)范化程度。考慮到存取效率,低級模式造成的冗余度很大,既浪費(fèi)了存儲(chǔ)空間,又影響了數(shù)據(jù)的一致性,因此采用高級范式;若考慮到查詢效率,低級范式又比高級范式好,此時(shí)連接運(yùn)算的代價(jià)較小。這是一對矛盾,應(yīng)根據(jù)情況合理選擇規(guī)范化程度。
(4)正確性與可實(shí)現(xiàn)性原則。
關(guān)系規(guī)范化過程是對關(guān)系逐步分解的過程。每一次分解,都使關(guān)系從較低范式向高一級的范式變換,這種變換是根據(jù)函數(shù)依賴關(guān)系進(jìn)行的。各級范式之間是一種全包含關(guān)系。
3)關(guān)系規(guī)范化的過程
關(guān)系規(guī)范化的過程如圖11.8所示。其中:A指使每個(gè)屬性都不可再分,B指消除其中的部分依賴關(guān)系,C指消除其中的傳遞依賴關(guān)系。圖11.8關(guān)系規(guī)范化的過程11.4關(guān)系數(shù)據(jù)庫應(yīng)用系統(tǒng)設(shè)計(jì)數(shù)據(jù)庫應(yīng)用系統(tǒng)中的一個(gè)核心問題就是設(shè)計(jì)一個(gè)能滿足用戶要求、性能良好的數(shù)據(jù)庫,這就是數(shù)據(jù)庫設(shè)計(jì)(DatabaseDesign)。數(shù)據(jù)庫設(shè)計(jì)的基本任務(wù)是根據(jù)用戶對象的信息需求、處理需求和數(shù)據(jù)庫的支持環(huán)境(包括硬件、操作系統(tǒng)與DBMS)設(shè)計(jì)出數(shù)據(jù)模式。所謂信息需求,主要是指用戶對象的數(shù)據(jù)及其結(jié)構(gòu),它反映了數(shù)據(jù)庫的靜態(tài)要求;所謂處理需求,表示用戶對象的數(shù)據(jù)及其結(jié)構(gòu),它反映了數(shù)據(jù)庫的動(dòng)態(tài)要求。以此兩者為基礎(chǔ)作設(shè)計(jì),最終的結(jié)果產(chǎn)物是數(shù)據(jù)模式。數(shù)據(jù)庫設(shè)計(jì)中有一定的制約條件,它們即為系統(tǒng)設(shè)計(jì)平臺(tái),包括系統(tǒng)軟件、工具軟件以及設(shè)備、網(wǎng)絡(luò)等硬件。因此,數(shù)據(jù)庫設(shè)計(jì)是指在一定平臺(tái)制約下,根據(jù)信息需求與處理需求設(shè)計(jì)出性能良好的數(shù)據(jù)模式。數(shù)據(jù)庫設(shè)計(jì)目前一般采用生命周期法,它是將整個(gè)數(shù)據(jù)庫應(yīng)用系統(tǒng)的開發(fā)分解成目標(biāo)獨(dú)立的若干階段。這些階段分別是:
(1)需求分析階段;
(2)概念結(jié)構(gòu)設(shè)計(jì)階段;
(3)邏輯結(jié)構(gòu)設(shè)計(jì)階段;
(4)物理結(jié)構(gòu)設(shè)計(jì)階段;
(5)數(shù)據(jù)庫實(shí)現(xiàn)階段;
(6)數(shù)據(jù)庫運(yùn)行和維護(hù)階段。
下面詳細(xì)介紹數(shù)據(jù)庫的設(shè)計(jì)過程。11.4.1需求分析
需求分析階段的工作是充分調(diào)查研究,了解用戶需求;了解系統(tǒng)運(yùn)行環(huán)境,制定將要設(shè)計(jì)的系統(tǒng)的功能;收集基礎(chǔ)數(shù)據(jù),包括輸入、處理和輸出數(shù)據(jù)。在這個(gè)過程中,要從系統(tǒng)的觀點(diǎn)出發(fā),既要調(diào)查數(shù)據(jù),又要考慮數(shù)據(jù)處理,也就是數(shù)據(jù)庫和應(yīng)用系統(tǒng)應(yīng)同時(shí)進(jìn)行設(shè)計(jì)。需求分析是整個(gè)數(shù)據(jù)庫設(shè)計(jì)過程中的第一步,也是最重要的一步。
(1)收集資料。收集資料工作是由數(shù)據(jù)庫設(shè)計(jì)人員和用戶共同完成的任務(wù)。強(qiáng)調(diào)各級用戶的參與是數(shù)據(jù)庫應(yīng)用系統(tǒng)設(shè)計(jì)的特點(diǎn)之一。
(2)分析整理。分析的過程是對所收集到的數(shù)據(jù)進(jìn)行抽象的過程。結(jié)構(gòu)化分析方法(SA)是常用的分析用戶需求的規(guī)范化的方法,表達(dá)用戶需求的是數(shù)據(jù)字典和數(shù)據(jù)流圖(DFD)。這些文檔成為下個(gè)階段的概念設(shè)計(jì)的基礎(chǔ),也是將來系統(tǒng)維護(hù)的基礎(chǔ)。
(3)數(shù)據(jù)流圖。在系統(tǒng)分析中通常采用數(shù)據(jù)流圖來描述系統(tǒng)的數(shù)據(jù)流向和對數(shù)據(jù)的處理功能。
數(shù)據(jù)流圖是描述系統(tǒng)中數(shù)據(jù)傳遞過程的工具,它將數(shù)據(jù)獨(dú)立抽象出來,通過圖形方式描述數(shù)據(jù)的來龍去脈和實(shí)際流向。數(shù)據(jù)流圖可以簡單而清楚地展示管理系統(tǒng)的邏輯結(jié)構(gòu),即使不是專業(yè)的計(jì)算機(jī)技術(shù)人員也能非常容易理解,它是一種很好的系統(tǒng)功能構(gòu)造的表示方法。
繪制數(shù)據(jù)流圖時(shí),應(yīng)從已獲得的手工處理流程中去掉物理因素,只保留數(shù)據(jù)、信息處理部分,采用“先主后次,逐步細(xì)化”的方法,即抓住關(guān)鍵數(shù)據(jù)和關(guān)鍵處理。
(4)數(shù)據(jù)字典。除了一套DFD外,還要從原始的數(shù)據(jù)資料中分析整理出下述數(shù)據(jù)信息:數(shù)據(jù)元素的名稱、同義詞、性質(zhì)、取值范圍、提供者、使用者、控制權(quán)限、保密要求、使用頻率、數(shù)據(jù)量、數(shù)據(jù)之間聯(lián)系的語義說明、各個(gè)部門對數(shù)據(jù)的要求及數(shù)據(jù)處理要求。
需求分析階段的成果要形成文檔資料,至少包括以下兩項(xiàng):各項(xiàng)業(yè)務(wù)的數(shù)據(jù)流圖DFD及有關(guān)說明;對各類數(shù)據(jù)描述的集合,即數(shù)據(jù)字典(DataDictionary,DD)。
(5)用戶確認(rèn)。DFD圖集和DD的內(nèi)容必須返回給用戶,并用非專業(yè)術(shù)語與用戶交流。11.4.2概念結(jié)構(gòu)設(shè)計(jì)
概念結(jié)構(gòu)是整個(gè)系統(tǒng)的信息結(jié)構(gòu),是現(xiàn)實(shí)世界的真實(shí)反映,它包括實(shí)體與實(shí)體之間的關(guān)系。概念結(jié)構(gòu)是獨(dú)立于各種數(shù)據(jù)模型的,它是各種數(shù)據(jù)模型的基礎(chǔ),易于向關(guān)系、網(wǎng)狀、層次模型轉(zhuǎn)換。
描述概念結(jié)構(gòu)的工具是E-R圖。在概念結(jié)構(gòu)設(shè)計(jì)過程中,使用E-R方法的基本步驟包括:設(shè)計(jì)局部E-R圖;綜合成初步E-R圖;優(yōu)化成基本E-R圖。
1)設(shè)計(jì)局部E-R圖
設(shè)計(jì)局部E-R圖的任務(wù)是根據(jù)需求分析階段產(chǎn)生的各個(gè)部門的數(shù)據(jù)流圖和數(shù)據(jù)字典中的相關(guān)數(shù)據(jù),設(shè)計(jì)出各項(xiàng)應(yīng)用的局部E-R圖。具體要做以下幾件事情:
●確定實(shí)體和屬性。
●確定聯(lián)系類型。依據(jù)需求分析結(jié)果,考查任意兩個(gè)實(shí)體類型之間是否存在聯(lián)系,若有聯(lián)系,要進(jìn)一步確定聯(lián)系的類型(1∶1,1∶m,n∶m)。在確定聯(lián)系時(shí)應(yīng)特別注意兩點(diǎn):一是不要丟掉聯(lián)系的屬性;二是盡量取消冗余的聯(lián)系,即取消可以從其它聯(lián)系導(dǎo)出的聯(lián)系。
●畫出局部E-R圖。
2)綜合成初步E-R圖
●局部E-R圖的合并。為了減小合并工作的復(fù)雜性,先兩兩合并。合并從公共實(shí)體類型開始,最后再加入獨(dú)立的局部結(jié)構(gòu)。
●消除沖突。一般有三種類型的沖突:屬性沖突、命名沖突、結(jié)構(gòu)沖突。具體調(diào)整手段可以考慮以下幾種:?①?對同一個(gè)實(shí)體的屬性取各個(gè)分E-R圖相同實(shí)體屬性的并集;?②?根據(jù)綜合應(yīng)用的需要,把屬性轉(zhuǎn)變?yōu)閷?shí)體,或者把實(shí)體變?yōu)閷傩?;③?shí)體聯(lián)系要根據(jù)應(yīng)用語義進(jìn)行綜合調(diào)整。
3)優(yōu)化成基本E-R圖
●消除冗余屬性。
●消除冗余聯(lián)系。
概念結(jié)構(gòu)設(shè)計(jì)經(jīng)過了局部視圖設(shè)計(jì)和視圖集成兩個(gè)步驟之后,其成果應(yīng)形成文檔資料,主要包括:整個(gè)組織的綜合E-R圖及有關(guān)說明;經(jīng)過修訂、充實(shí)的數(shù)據(jù)字典。11.4.3邏輯結(jié)構(gòu)設(shè)計(jì)
這個(gè)階段的任務(wù)是將概念結(jié)構(gòu)轉(zhuǎn)換成與選用的DBMS所支持的數(shù)據(jù)模型相符合的過程。一般情況下,應(yīng)該是向適合概念模型的數(shù)據(jù)模型轉(zhuǎn)換,然后再挑選合適的軟件DBMS和機(jī)器。但實(shí)際情況往往不是這樣的,當(dāng)概念模型向數(shù)據(jù)模型轉(zhuǎn)換時(shí),一個(gè)實(shí)體型轉(zhuǎn)換為一個(gè)關(guān)系模式,而是實(shí)體的屬性就是關(guān)系的屬性,聯(lián)系轉(zhuǎn)換為一個(gè)關(guān)系模式。
E-R模型向關(guān)系模型的轉(zhuǎn)換:
E-R模型中的主要成分是實(shí)體類型和聯(lián)系類型。對實(shí)體類型,將每個(gè)實(shí)體類型轉(zhuǎn)換成一個(gè)關(guān)系模式,實(shí)體的屬性即為關(guān)系模式的屬性,實(shí)體標(biāo)識(shí)符即為關(guān)系模式的鍵。對聯(lián)系類型,視1∶1、1∶n、m∶n三種不同的情況做不同處理。①對1∶1,可在兩個(gè)實(shí)體類型轉(zhuǎn)換成的兩個(gè)關(guān)系模式中任意一個(gè)關(guān)系模式的屬性中加入另一個(gè)關(guān)系模式的鍵和聯(lián)系類型的屬性。②對1∶n,則在n端實(shí)體類型轉(zhuǎn)換成的關(guān)系模式中加入1端實(shí)體類型轉(zhuǎn)換成的關(guān)系模式的鍵和聯(lián)系類型的屬性。③對m∶n,則將聯(lián)系類型也轉(zhuǎn)換成關(guān)系模式,其屬性為兩端實(shí)體類型的鍵加上聯(lián)系類型的屬性,而鍵為兩端實(shí)體鍵的組合。數(shù)據(jù)庫邏輯設(shè)計(jì)的結(jié)果不是唯一的,還要對數(shù)據(jù)模型進(jìn)行優(yōu)化。優(yōu)化是指適當(dāng)?shù)匦薷?、調(diào)整數(shù)模型的結(jié)構(gòu),提高數(shù)據(jù)庫應(yīng)用系
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026臨沂職業(yè)學(xué)院招聘教師和教輔人員22人考試參考題庫及答案解析
- 消費(fèi)類公司管理制度(3篇)
- 全聚德生日活動(dòng)策劃方案(3篇)
- 2026年浙江興??毓杉瘓F(tuán)有限公司下屬企業(yè)招聘3人參考考試題庫及答案解析
- 陵水打井施工方案(3篇)
- 鋁合金銷售管理制度范本(3篇)
- 內(nèi)江二幼招聘編外教師備考考試試題及答案解析
- 2026上海黃浦區(qū)中意工程創(chuàng)新學(xué)院教務(wù)崗位招聘1人備考考試試題及答案解析
- 動(dòng)量定理在高考中的應(yīng)用
- 2026年寧德師范學(xué)院附屬小學(xué)招聘教師2人備考考試題庫及答案解析
- 南通南通市通州區(qū)圖書館公開招聘勞務(wù)派遣人員筆試歷年備考題庫附帶答案詳解
- 2026年幼兒教師公招考試試題及答案
- 2026中工國際工程股份有限公司社會(huì)招聘筆試備考試題及答案解析
- 物業(yè)總經(jīng)理培訓(xùn)課件
- 短險(xiǎn)銷售技巧培訓(xùn)課件
- 2025年職業(yè)衛(wèi)生健康培訓(xùn)考試試題及答案
- 2026年二十屆四中全會(huì)精神應(yīng)知應(yīng)會(huì)題庫及答案
- 化工品物流樞紐項(xiàng)目運(yùn)營管理方案
- 丈夫家暴協(xié)議書模板
- 皮帶機(jī)制作合同范本
- 糖尿病酮癥酸中毒(DKA)難治性DKA血液凈化模式選擇方案
評論
0/150
提交評論