




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
PAGEPAGE1《數(shù)據(jù)庫系統(tǒng)概論講義》第1章緒論 第一節(jié)數(shù)據(jù)庫系統(tǒng)概述1.1.1數(shù)據(jù)、數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)、數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)和數(shù)據(jù)庫系統(tǒng)是與數(shù)據(jù)庫技術(shù)密切相關(guān)的四個基本概念。一、數(shù)據(jù)(DATA)數(shù)據(jù)是數(shù)據(jù)庫中存儲的基本對象。數(shù)據(jù)在大多數(shù)人頭腦中的第一個反應(yīng)就是數(shù)字。其實數(shù)字只是最簡單的一種數(shù)據(jù),是數(shù)據(jù)的一種傳統(tǒng)和狹義的理解。廣義的理解,數(shù)據(jù)的種類很多,文字、圖形、圖像、聲音、學(xué)生的檔案記錄、貨物的運輸情況等,這些都是數(shù)據(jù)??梢詫?shù)據(jù)做如下定義:描述事物的符號記錄稱為數(shù)據(jù)。描述事物的符號可以是數(shù)字,也可以是文字、圖形、圖像、聲音、語言等,數(shù)據(jù)有多種表現(xiàn)形式,它們都可以經(jīng)過數(shù)字化后存入計算機。為了了解世界,交流信息,人們需要描述這些事物。在日常生活中直接用自然語言(如漢語)描述。在計算機中,為了存儲和處理這些事物,就要抽出對這些事物感興趣的特征組成一個記錄來描述。例如:在學(xué)生檔案中,如果人們最感興趣的是學(xué)生的姓名、性別、年齡、出生年月、籍貫、所在系別、入學(xué)時間,那么可以這樣描述:(李明,男,21,1972,江蘇,計算機系,1990)因此這里的學(xué)生記錄就是數(shù)據(jù)。對于上面這條學(xué)生記錄,了解其含義的人會得到如下信息:李明是個大學(xué)生,1972年出生,男,江蘇人,1990年考入計算機系;而不了解其語義的人則無法理解其含義??梢?,數(shù)據(jù)的形式還不能完全表達其內(nèi)容,需要經(jīng)過解釋。所以數(shù)據(jù)和關(guān)于數(shù)據(jù)的解釋是不可分的,數(shù)據(jù)的解釋是指對數(shù)據(jù)含義的說明,數(shù)據(jù)的含義稱為數(shù)據(jù)的語義,數(shù)據(jù)與其語義是不可分的。二、數(shù)據(jù)庫(DataBase,簡稱DB)數(shù)據(jù)庫,顧名思義,是存放數(shù)據(jù)的倉庫。只不過這個倉庫是在計算機存儲設(shè)備上,而且數(shù)據(jù)是按一定的格式存放的。人們收集并抽取出一個應(yīng)用所需要的大量數(shù)據(jù)之后,應(yīng)將其保存起來以供進一步加工處理,進一步抽取有用信息。在科學(xué)技術(shù)飛速發(fā)展的今天,人們的視野越來越廣,數(shù)據(jù)量急劇增加。過去人們把數(shù)據(jù)存放在文件柜里,現(xiàn)在人們借助計算機和數(shù)據(jù)庫技術(shù)科學(xué)地保存和管理大量的復(fù)雜的數(shù)據(jù),以便能方便而充分地利用這些寶貴的信息資源。所謂數(shù)據(jù)庫是長期儲存在計算機內(nèi)、有組織的、可共享的數(shù)據(jù)集合。數(shù)據(jù)庫中的數(shù)據(jù)按一定的數(shù)據(jù)模型組織、描述和儲存,具有較小的冗余度、較高的數(shù)據(jù)獨立性和易擴展性,并可為各種用戶共享。三、數(shù)據(jù)庫管理系統(tǒng)(DataBaseManagementSystem,簡稱DBMS)了解了數(shù)據(jù)和數(shù)據(jù)庫的概念,下一個問題就是如何科學(xué)地組織和存儲數(shù)據(jù),如何高效地獲取和維護數(shù)據(jù)。完成這個任務(wù)的是一個系統(tǒng)軟件——數(shù)據(jù)庫管理系統(tǒng)。數(shù)據(jù)庫管理系統(tǒng)是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件。它的主要功能包括以下幾個方面:1.數(shù)據(jù)定義功能DBMS提供數(shù)據(jù)定義語言(DataDefinitionLanguage,簡稱DDL),用戶通過它可以方便地定義對數(shù)據(jù)庫中的數(shù)據(jù)對象進行定義。2.數(shù)據(jù)操縱功能DBMS還提供數(shù)據(jù)操縱語言(DataManipulationLanguage,簡稱DML),用戶可以使用DML操縱數(shù)據(jù)實現(xiàn)對數(shù)據(jù)庫的基本操作,如查詢、插入、刪除和修改等。3.數(shù)據(jù)庫的運行管理數(shù)據(jù)庫在建立、運用和維護時由數(shù)據(jù)庫管理系統(tǒng)統(tǒng)一管理、統(tǒng)一控制,以保證數(shù)據(jù)的安全性、完整性、多用戶對數(shù)據(jù)的并發(fā)使用及發(fā)生故障后的系統(tǒng)恢復(fù)。4.數(shù)據(jù)庫的建立和維護功能它包括數(shù)據(jù)庫初始數(shù)據(jù)的輸入、轉(zhuǎn)換功能,數(shù)據(jù)庫的轉(zhuǎn)儲、恢復(fù)功能,數(shù)據(jù)庫的重組織功能和性能監(jiān)視、分析功能等。這些功能通常是由一些實用程序完成的。數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的一個重要組成部分。四、數(shù)據(jù)庫系統(tǒng)(DataBaseSystem,簡稱DBS)數(shù)據(jù)庫系統(tǒng)是指在計算機系統(tǒng)中引入數(shù)據(jù)庫后的系統(tǒng)構(gòu)成,一般由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)(及其開發(fā)工具)、應(yīng)用系統(tǒng)、數(shù)據(jù)庫管理員和用戶構(gòu)成。應(yīng)當指出的是,數(shù)據(jù)庫的建立、使用和維護等工作只靠一個DBMS遠遠不夠,還要有專門的人員來完成,這些人被稱為數(shù)據(jù)庫管理員(DataBaseAdministrator,簡稱DBA)。在一般不引起混淆的情況下常常把數(shù)據(jù)庫系統(tǒng)簡稱為數(shù)據(jù)庫。1.1.2數(shù)據(jù)管理技術(shù)的產(chǎn)生和發(fā)展數(shù)據(jù)庫技術(shù)是應(yīng)數(shù)據(jù)管理任務(wù)的需要而產(chǎn)生的。數(shù)據(jù)的處理是指對各種數(shù)據(jù)進行收集、存儲、加工和傳播的一系列活動的總和。數(shù)據(jù)管理則是指對數(shù)據(jù)進行分類、組織、編碼、存儲、檢索和維護,它是數(shù)據(jù)處理的中心問題。人們借助計算機進行數(shù)據(jù)處理是近三十年的事。研制計算機的初衷是利用它進行復(fù)雜的科學(xué)計算。隨著計算機技術(shù)的發(fā)展,其應(yīng)用遠遠地超出了這個范圍。在應(yīng)用需求的推動下,在計算機硬件、軟件發(fā)展的基礎(chǔ)上,數(shù)據(jù)管理技術(shù)經(jīng)歷了人工管理、文件系統(tǒng)、數(shù)據(jù)庫系統(tǒng)三個階段。1.1.3數(shù)據(jù)庫系統(tǒng)的特點與人工管理和文件系統(tǒng)相比,數(shù)據(jù)庫系統(tǒng)的特點主要有以下幾個方面。一、數(shù)據(jù)結(jié)構(gòu)化數(shù)據(jù)結(jié)構(gòu)化是數(shù)據(jù)庫與文件系統(tǒng)的根本區(qū)別。在文件系統(tǒng)中,相互獨立的文件的記錄內(nèi)部是有結(jié)構(gòu)的。傳統(tǒng)文件的最簡單形式是等長同格式的記錄集合。二、數(shù)據(jù)的共享性高,冗余度低,易擴充數(shù)據(jù)庫系統(tǒng)從整體角度看待和描述數(shù)據(jù),數(shù)據(jù)不再面向某個應(yīng)用而是面向整個系統(tǒng),因此數(shù)據(jù)可以被多個用戶、多個應(yīng)用共享使用。數(shù)據(jù)共享可以大大減少數(shù)據(jù)冗余,節(jié)約存儲空間。數(shù)據(jù)共享還能夠避免數(shù)據(jù)之間的不相容性與不一致性。所謂數(shù)據(jù)的不一致性是指同一數(shù)據(jù)不同拷貝的值不一樣。采用人工管理或文件系統(tǒng)管理時,由于數(shù)據(jù)被重復(fù)存儲,當不同的應(yīng)用使用和修改不同的拷貝時就很容易造成數(shù)據(jù)的不一致。在數(shù)據(jù)庫中數(shù)據(jù)共享,減少了由于數(shù)據(jù)冗余(同一數(shù)據(jù)存儲在不同的數(shù)據(jù)文件中的現(xiàn)象)造成的不一致現(xiàn)象。由于數(shù)據(jù)面向整個系統(tǒng),是有結(jié)構(gòu)的數(shù)據(jù),不僅可以被多個應(yīng)用共享使用,而且容易增加新的應(yīng)用,這就使得數(shù)據(jù)庫系統(tǒng)彈性大,易于擴充,可以適應(yīng)各種用戶的要求??梢匀≌w數(shù)據(jù)的各種子集用于不同的應(yīng)用系統(tǒng),當應(yīng)用需求改變或增加時,只要重新選取不同的子集或加上一部分數(shù)據(jù)便可以滿足新的需求。三、數(shù)據(jù)獨立性高數(shù)據(jù)獨立性是數(shù)據(jù)庫領(lǐng)域中一個常用術(shù)語,包括數(shù)據(jù)的物理獨立性和數(shù)據(jù)的邏輯獨立性。物理獨立性是指用戶的應(yīng)用程序與存儲在磁盤上的數(shù)據(jù)庫中數(shù)據(jù)是相互獨立的。也就是說,數(shù)據(jù)在磁盤上的數(shù)據(jù)庫中怎樣存儲是由DBMS管理的,用戶程序不需要了解,應(yīng)用程序要處理的只是數(shù)據(jù)的邏輯結(jié)構(gòu),這樣當數(shù)據(jù)的物理存儲改變了,應(yīng)用程序不用改變。邏輯獨立性是指用戶的應(yīng)用程序與數(shù)據(jù)庫的邏輯結(jié)構(gòu)是相互獨立的,也就是說,數(shù)據(jù)的邏輯結(jié)構(gòu)改變了,用戶程序也可以不變。數(shù)據(jù)獨立性是由DBMS的二級映象功能來保證的,將在下面討論。數(shù)據(jù)與程序的獨立,把數(shù)據(jù)的定義從程序中分離出去,加上數(shù)據(jù)的存取又由DBMS負責(zé),從而簡化了應(yīng)用程序的編制,大大減少了應(yīng)用程序的維護和修改。四、數(shù)據(jù)由DBMS統(tǒng)一管理和控制數(shù)據(jù)庫的共享是并發(fā)的(Concurrency)共享,即多個用戶可以同時存取數(shù)據(jù)庫中的數(shù)據(jù)甚至可以同時存取數(shù)據(jù)庫中同一個數(shù)據(jù)。為此,DBMS還必須提供以下幾方面的數(shù)據(jù)控制功能:(1)數(shù)據(jù)的安全性(Security)保護數(shù)據(jù)的安全性是指保護數(shù)據(jù)以防止不合法的使用造成的數(shù)據(jù)的泄密和破壞。使每個用戶只能按規(guī)定,對某些數(shù)據(jù)以某些方式進行使用和處理。(2)數(shù)據(jù)的完整性(Integrity)檢查數(shù)據(jù)的完整性指數(shù)據(jù)的正確性、有效性和相容性。完整性檢查將數(shù)據(jù)控制在有效的范圍內(nèi),或保證數(shù)據(jù)之間滿足一定的關(guān)系。(3)并發(fā)(Concurrency)控制當多個用戶的并發(fā)進程同時存取、修改數(shù)據(jù)庫時,可能會發(fā)生相互干擾而得到錯誤的結(jié)果或使得數(shù)據(jù)庫的完整性遭到破壞,因此必須對多用戶的并發(fā)操作加以控制和協(xié)調(diào)。(4)數(shù)據(jù)庫恢復(fù)(Recovery)計算機系統(tǒng)的硬件故障、軟件故障、操作員的失誤以及故意的破壞也會影響數(shù)據(jù)庫中數(shù)據(jù)的正確性,甚至造成數(shù)據(jù)庫部分或全部數(shù)據(jù)的丟失。DBMS必須具有將數(shù)據(jù)庫從錯誤狀態(tài)恢復(fù)到某一已知的正確狀態(tài)(亦稱為完整狀態(tài)或一致狀態(tài))的功能,這就是數(shù)據(jù)庫的恢復(fù)功能。綜上所述,數(shù)據(jù)庫是長期存儲在計算機內(nèi)有組織的大量的共享的數(shù)據(jù)集合。它可以供各種用戶共享,具有最小冗余度和較高的數(shù)據(jù)獨立性。DBMS在數(shù)據(jù)庫建立、運用和維護時對數(shù)據(jù)庫進行統(tǒng)一控制,以保證數(shù)據(jù)的完整性、安全性,并在多用戶同時使用數(shù)據(jù)庫時進行并發(fā)控制,在發(fā)生故障后對系統(tǒng)進行恢復(fù)。數(shù)據(jù)庫系統(tǒng)的出現(xiàn)使信息系統(tǒng)從以加工數(shù)據(jù)的程序為中心轉(zhuǎn)向圍繞共享的數(shù)據(jù)庫為中心的新階段。這樣既便于數(shù)據(jù)的集中管理,又有利于應(yīng)用程序的研制和維護,提高了數(shù)據(jù)的利用率和相容性,提高了決策的可靠性。目前,數(shù)據(jù)庫已經(jīng)成為現(xiàn)代信息系統(tǒng)的不可分離的重要組成部分。具有數(shù)百萬甚至數(shù)十億字節(jié)信息的數(shù)據(jù)庫已經(jīng)普遍存在于科學(xué)技術(shù)、工業(yè)、農(nóng)業(yè)、商業(yè)、服務(wù)業(yè)和政府部門的信息系統(tǒng)。20世紀80年代后不僅在大型機上,在多數(shù)微機上也配置了DBMS,使數(shù)據(jù)庫技術(shù)得到更加廣泛的應(yīng)用和普及。數(shù)據(jù)庫技術(shù)是計算機領(lǐng)域中發(fā)展最快的技術(shù)之一。數(shù)據(jù)庫技術(shù)的發(fā)展是沿著數(shù)據(jù)模型的主線展開的。下面討論數(shù)據(jù)模型。第二節(jié)數(shù)據(jù)模型模型,特別是具體模型,人們并不陌生。一張地圖,一組建筑設(shè)計沙盤,一架精致的航模飛機都是具體的模型。一眼望去,就會使人聯(lián)想到真實生活中的事物。模型是現(xiàn)實世界特征的模擬和抽象。數(shù)據(jù)模型(DataModel)也是一種模型,它是現(xiàn)實世界數(shù)據(jù)特征的抽象。數(shù)據(jù)庫是某個企業(yè)、組織或部門所涉及的數(shù)據(jù)的綜合,它不僅要反映數(shù)據(jù)本身的內(nèi)容,而且要反映數(shù)據(jù)之間的聯(lián)系。由于計算機不可能直接處理現(xiàn)實世界中的具體事物,所以人們必須事先把具體事物轉(zhuǎn)換成計算機能夠處理的數(shù)據(jù)。在數(shù)據(jù)庫中用數(shù)據(jù)模型這個工具來抽象、表示和處理現(xiàn)實世界中的數(shù)據(jù)和信息。通俗地講數(shù)據(jù)模型就是現(xiàn)實世界的模擬?,F(xiàn)有的數(shù)據(jù)庫系統(tǒng)均是基于某種數(shù)據(jù)模型的。因此,了解數(shù)據(jù)模型的基本概念是學(xué)習(xí)數(shù)據(jù)庫的基礎(chǔ)。數(shù)據(jù)模型應(yīng)滿足三方面要求:一是能比較真實地模擬現(xiàn)實世界;二是容易為人所理解;三是便于在計算機上實現(xiàn)。一種數(shù)據(jù)模型要很好地滿足這三方面的要求在目前尚很困難。在數(shù)據(jù)庫系統(tǒng)中針對不同的使用對象和應(yīng)用目的,采用不同的數(shù)據(jù)模型。不同的數(shù)據(jù)模型實際上是提供給我們模型化數(shù)據(jù)和信息的不同工具。根據(jù)模型應(yīng)用的不同目的,可以將這些模型劃分為兩類,它們分屬于兩個不同的層次。第一類模型是概念模型,也稱信息模型,它是按用戶的觀點來對數(shù)據(jù)和信息建模,主要用于數(shù)據(jù)庫設(shè)計。另一類模型是數(shù)據(jù)模型,主要包括網(wǎng)狀模型、層次模型、關(guān)系模型等,它是按計算機系統(tǒng)的觀點對數(shù)據(jù)建模,主要用于DBMS的實現(xiàn)。數(shù)據(jù)模型是數(shù)據(jù)庫系統(tǒng)的核心和基礎(chǔ)。各種機器上實現(xiàn)的DBMS軟件都是基于某種數(shù)據(jù)模型的。為了把現(xiàn)實世界中的具體事物抽象、組織為某一DBMS支持的數(shù)據(jù)模型,人們常常首先將現(xiàn)實世界抽象為信息世界,然后將信息世界轉(zhuǎn)換為機器世界。也就是說,首先把現(xiàn)實世界中的客觀對象抽象為某一種信息結(jié)構(gòu),這種信息結(jié)構(gòu)并不依賴于具體的計算機系統(tǒng),不是某一個DBMS支持的數(shù)據(jù)模型,而是概念級的模型;然后再把概念模型轉(zhuǎn)換為計算機上某一DBMS支持的數(shù)據(jù)模型。1.2.1數(shù)據(jù)模型的組成要素一般地講,數(shù)據(jù)模型是嚴格定義的一組概念的集合。這些概念精確地描述了系統(tǒng)的靜態(tài)特性、動態(tài)特性和完整性約束條件。因此,數(shù)據(jù)模型通常由數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和完整性約束三部分組成。一、數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)是所研究的對象類型的集合。這些對象是數(shù)據(jù)庫的組成成分,它們包括兩類,一類是與數(shù)據(jù)類型、內(nèi)容、性質(zhì)有關(guān)的對象,例如網(wǎng)狀模型中的數(shù)據(jù)項、記錄,關(guān)系模型中的域、屬性、關(guān)系等;一類是與數(shù)據(jù)之間聯(lián)系有關(guān)的對象,例如網(wǎng)狀模型中的系型(SetType)。數(shù)據(jù)結(jié)構(gòu)是刻畫一個數(shù)據(jù)模型性質(zhì)最重要的方面。因此,在數(shù)據(jù)庫系統(tǒng)中,人們通常按照其數(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)系模型。數(shù)據(jù)結(jié)構(gòu)是對系統(tǒng)靜態(tài)特性的描述。二、數(shù)據(jù)操作數(shù)據(jù)操作是指對數(shù)據(jù)庫中各種對象(型)的實例(值)允許執(zhí)行的操作的集合,包括操作及有關(guān)的操作規(guī)則。數(shù)據(jù)庫主要有檢索和更新(包括插入、刪除、修改)兩大類操作。數(shù)據(jù)模型必須定義這些操作的確切含義、操作符號、操作規(guī)則(如優(yōu)先級)以及實現(xiàn)操作的語言。數(shù)據(jù)操作是對系統(tǒng)動態(tài)特性的描述。三、數(shù)據(jù)的約束條件數(shù)據(jù)的約束條件是一組完整性規(guī)則的集合。完整性規(guī)則是給定的數(shù)據(jù)模型中數(shù)據(jù)及其聯(lián)系所具有的制約和依存規(guī)則,用以限定符合數(shù)據(jù)模型的數(shù)據(jù)庫狀態(tài)以及狀態(tài)的變化,以保證數(shù)據(jù)的正確、有效、相容。數(shù)據(jù)模型應(yīng)該反映和規(guī)定本數(shù)據(jù)模型必須遵守的基本的通用的完整性約束條件。例如,在關(guān)系模型中,任何關(guān)系必須滿足實體完整性和參照完整性兩個條件。此外,數(shù)據(jù)模型還應(yīng)該提供定義完整性約束條件的機制,以反映具體應(yīng)用所涉及的數(shù)據(jù)必須遵守的特定的語義約束條件。例如,在學(xué)校的數(shù)據(jù)庫中規(guī)定大學(xué)生入學(xué)年齡不得超過30歲,碩士研究生入學(xué)年齡不得超過38歲,學(xué)生累計成績不得有三門以上不及格等。1.2.2概念模型概念模型實際上是現(xiàn)實世界到機器世界的一個中間層次。概念模型用于信息世界的建模,是現(xiàn)實世界到信息世界的第一層抽象,是數(shù)據(jù)庫設(shè)計人員進行數(shù)據(jù)庫設(shè)計的有力工具,也是數(shù)據(jù)庫設(shè)計人員和用戶之間進行交流的語言,因此概念模型一方面應(yīng)該具有較強的語義表達能力,能夠方便、直接地表達應(yīng)用中的各種語義知識,另一方面它還應(yīng)該簡單、清晰、易于用戶理解。一、信息世界中的基本概念信息世界涉及的概念主要有:(1)實體(Entity)客觀存在并可相互區(qū)別的事物稱為實體。實體可以是具體的人、事、物,也可以是抽象的概念或聯(lián)系,例如,一個職工、一個學(xué)生、一個部門、一門課、學(xué)生的一次選課、部門的一次訂貨、老師與系的工作關(guān)系(即某位老師在某系工作)等都是實體。(2)屬性(Attribute)實體所具有的某一特性稱為屬性。一個實體可以由若干個屬性來刻畫。例如學(xué)生實體可以由學(xué)號、姓名、性別、出生年份、系、入學(xué)時間等屬性組成。(94002268,張山,男,1976,計算機系,1994)這些屬性組合起來表征了一個學(xué)生。(3)碼(Key)唯一標識實體的屬性集稱為碼。例如學(xué)號是學(xué)生實體的碼。(4)域(Domain)屬性的取值范圍稱為該屬性的域。例如,學(xué)號的域為8位整數(shù),姓名的域為字符串集合,年齡的域為小于38的整數(shù),性別的域為(男,女)。(5)實體型(EntityType)具有相同屬性的實體必然具有共同的特征和性質(zhì)。用實體名及其屬性名集合來抽象和刻畫同類實體,稱為實體型。例如,學(xué)生(學(xué)號,姓名,性別,出生年份,系,入學(xué)時間)就是一個實體型。(6)實體集(EntitySet)同型實體的集合稱為實體集。例如,全體學(xué)生就是一個實體集。(7)聯(lián)系(Relationship)在現(xiàn)實世界中,事物內(nèi)部以及事物之間是有聯(lián)系的,這些聯(lián)系在信息世界中反映為實體(型)內(nèi)部的聯(lián)系和實體(型)之間的聯(lián)系。實體內(nèi)部的聯(lián)系通常是指組成實體的各屬性之間的聯(lián)系。實體之間的聯(lián)系通常是指不同實體集之間的聯(lián)系。兩個實體型之間的聯(lián)系可以分為三類:①一對一聯(lián)系(1:1)如果對于實體集A中的每一個實體,實體集B中至多有一個(也可以沒有)實體與之聯(lián)系,反之亦然,則稱實體集A與實體集B具有一對一聯(lián)系,記為1:1。例如,學(xué)校里面,一個班級只有一個正班長,而一個班長只在一個班中任職,則班級與班長之間具有一對一聯(lián)系。②一對多聯(lián)系(1:n)如果對于實體集A中的每一個實體,實體集B中有n個實體(n≥0)與之聯(lián)系,反之,對于實體集B中的每一個實體,實體集A中至多只有一個實體與之聯(lián)系,則稱實體集A與實體集B有一對多聯(lián)系,記為1:n。例如,一個班級中有若干名學(xué)生,而每個學(xué)生只在一個班級中學(xué)習(xí),則班級與學(xué)生之間具有一對多聯(lián)系。③多對多聯(lián)系(m:n)如果對于實體集A中的每一個實體,實體集B中有n個實體(n≥0)與之聯(lián)系,反之,對于實體集B中的每一個實體,實體集A中也有m個實體(m≥0)與之聯(lián)系,則稱實體集A與實體集B具有多對多聯(lián)系,記為m:n。二、概念模型的表示方法概念模型是對信息世界建模,所以概念模型應(yīng)該能夠方便、準確地表示出上述信息世界中的常用概念。概念模型的表示方法很多,其中最為著名最為常用的是P.P.S.Chen于1976年提出的實體-聯(lián)系方法(Entity-RelationshipApproach)。該方法用E-R圖來描述現(xiàn)實世界的概念模型,E-R方法也稱為E-R模型。這里介紹E-R圖的要點。E-R圖提供了表示實體型、屬性和聯(lián)系的方法:·實體型:用矩形表示,矩形框內(nèi)寫明實體名?!傩裕河脵E圓形表示,并用無向邊將其與相應(yīng)的實體連接起來?!ぢ?lián)系:用菱形表示,菱形框內(nèi)寫明聯(lián)系名,并用無向邊分別與有關(guān)實體連接起來,同時在無向邊旁標上聯(lián)系的類型(1:1,1:n或m:n)。需要注意的是,如果一個聯(lián)系具有屬性,則這些屬性也要用無向邊與該聯(lián)系連接起來。實體-聯(lián)系方法是抽象和描述現(xiàn)實世界的有力工具。用E-R圖表示的概念模型獨立于具體的DBMS所支持的數(shù)據(jù)模型,它是各種數(shù)據(jù)模型的共同基礎(chǔ),因而比數(shù)據(jù)模型更一般、更抽象、更接近現(xiàn)實世界。1.2.3最常用的數(shù)據(jù)模型目前,數(shù)據(jù)庫領(lǐng)域中最常用的數(shù)據(jù)模型有四種,它們是:·層次模型(HierarchicalModel)·網(wǎng)狀模型(NetworkModel)·關(guān)系模型(RelationalModel)·面向?qū)ο竽P?ObjectOrientedModel)其中層次模型和網(wǎng)狀模型統(tǒng)稱為非關(guān)系模型。非關(guān)系模型的數(shù)據(jù)庫系統(tǒng)在20世紀70年代至80年代初非常流行,在數(shù)據(jù)庫系統(tǒng)產(chǎn)品中占據(jù)了主導(dǎo)地位,現(xiàn)在已逐漸被關(guān)系模型的數(shù)據(jù)庫系統(tǒng)取代,但在美國等一些國家里,由于早期開發(fā)的應(yīng)用系統(tǒng)都是基于層次數(shù)據(jù)庫或網(wǎng)狀數(shù)據(jù)庫系統(tǒng)的,因此目前仍有不少層次數(shù)據(jù)庫或網(wǎng)狀數(shù)據(jù)庫系統(tǒng)在繼續(xù)使用。20世紀80年代以來,面向?qū)ο蟮姆椒ê图夹g(shù)在計算機各個領(lǐng)域,包括程序設(shè)計語言、軟件工程、信息系統(tǒng)設(shè)計、計算機硬件設(shè)計等各方面都產(chǎn)生了深遠的影響,也促進數(shù)據(jù)庫中面向?qū)ο髷?shù)據(jù)模型的研究和發(fā)展。本章簡要介紹層次模型、網(wǎng)狀模型和關(guān)系模型。數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和完整性約束條件這三個方面的內(nèi)容完整地描述了一個數(shù)據(jù)模型,其中數(shù)據(jù)結(jié)構(gòu)是刻畫模型性質(zhì)的最基本的方面。為了使讀者對數(shù)據(jù)模型有一個基本認識,下面著重介紹三種模型的數(shù)據(jù)結(jié)構(gòu)。注意:這里講的數(shù)據(jù)模型都是邏輯上的,也就是說是用戶眼中看到的數(shù)據(jù)范圍。同時它們又都是能用某種語言描述,使計算機系統(tǒng)能夠理解,被數(shù)據(jù)庫管理系統(tǒng)支持的數(shù)據(jù)視圖。這些數(shù)據(jù)模型將以一定的方式存儲于數(shù)據(jù)庫系統(tǒng)中,這是DBMS的功能,是DBMS中的存儲模型。在非關(guān)系模型中,實體用記錄表示,實體的屬性對應(yīng)記錄的數(shù)據(jù)項(或字段)。實體之間的聯(lián)系在非關(guān)系模型中轉(zhuǎn)換成記錄之間的兩兩聯(lián)系。1.2.4層次模型層次模型是數(shù)據(jù)庫系統(tǒng)中最早出現(xiàn)的數(shù)據(jù)模型,層次數(shù)據(jù)庫系統(tǒng)采用層次模型作為數(shù)據(jù)的組織方式。層次數(shù)據(jù)庫系統(tǒng)的典型代表是IBM公司的IMS(InformationManagementSystem)數(shù)據(jù)庫管理系統(tǒng),這是1968年IBM公司推出的第一個大型的商用數(shù)據(jù)庫管理系統(tǒng),曾經(jīng)得到廣泛的使用。層次模型用樹形結(jié)構(gòu)來表示各類實體以及實體間的聯(lián)系?,F(xiàn)實世界中許多實體之間的聯(lián)系本來就呈現(xiàn)出一種很自然的層次關(guān)系,如行政機構(gòu)、家族關(guān)系等。一、層次數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)在數(shù)據(jù)庫中定義滿足下面兩個條件的基本層次聯(lián)系的集合為層次模型。(1)有且只有一個結(jié)點沒有雙親結(jié)點,這個結(jié)點稱為根結(jié)點;(2)根以外的其他結(jié)點有且只有一個雙親結(jié)點。在層次模型中,每個結(jié)點表示一個記錄類型,記錄(類型)之間的聯(lián)系用結(jié)點之間的連線(有向邊)表示,這種聯(lián)系是父子之間的一對多的聯(lián)系。這就使得層次數(shù)據(jù)庫系統(tǒng)只能處理一對多的實體聯(lián)系。每個記錄類型可包含若干個字段,這里,記錄類型描述的是實體,字段描述實體的屬性。各個記錄類型及其字段都必須命名。各個記錄類型、同一記錄類型中各個字段不能同名。每個記錄類型可以定義一個排序字段,也稱為碼字段,如果定義該排序字段的值是唯一的,則它能唯一地標識一個記錄值。一個層次模型在理論上可以包含任意有限個記錄型和字段,但任何實際的系統(tǒng)都會因為存儲容量或?qū)崿F(xiàn)復(fù)雜度而限制層次模型中包含的記錄型個數(shù)和字段的個數(shù)。在層次模型中,同一雙親的子女結(jié)點稱為兄弟結(jié)點(Twin或Sibling),沒有子女結(jié)點的結(jié)點稱為葉結(jié)點。二、多對多聯(lián)系在層次模型中的表示前面已經(jīng)說過,層次數(shù)據(jù)模型只能直接表示一對多(包括一對一)的聯(lián)系,那么另一種常見聯(lián)系-多對多聯(lián)系能否在層次模型中表示呢?答案是肯定的,否則層次模型就無法真正反映現(xiàn)實世界了。但是用層次模型表示多對多聯(lián)系,必須首先將其分解成一對多聯(lián)系。分解方法有兩種:冗余結(jié)點法和虛擬結(jié)點法。下面用一個例子來說明這兩種分解方法。二、層次模型的數(shù)據(jù)操縱與完整性約束層次模型的數(shù)據(jù)操縱主要有查詢、插入、刪除和更新。進行插入、刪除、更新操作時要滿足層次模型的完整性約束條件。進行插入操作時,如果沒有相應(yīng)的雙親結(jié)點值就不能插入子女結(jié)點值。例如在圖1.18的層次數(shù)據(jù)庫中,若新調(diào)入一名教師,但尚未分配到某個教研室,這時就不能將新教員插入到數(shù)據(jù)庫中。進行刪除操作時,如果刪除雙親結(jié)點值,則相應(yīng)的子女結(jié)點值也被同時刪除。例如在圖1.18的層次數(shù)據(jù)庫中,若刪除網(wǎng)絡(luò)教研室,則該教研室所有老師的數(shù)據(jù)將全部丟失。進行更新操作時,應(yīng)更新所有相應(yīng)記錄,以保證數(shù)據(jù)的一致性。例如在圖1.20(b)的層次模型中,如果一個學(xué)生要改姓名,則兩處學(xué)生記錄值的姓名字段都需更新。三、層次數(shù)據(jù)模型的存儲結(jié)構(gòu)層次數(shù)據(jù)庫中不僅要存儲數(shù)據(jù)本身,還要存儲數(shù)據(jù)之間的層次聯(lián)系。層次模型數(shù)據(jù)的存儲常常是和數(shù)據(jù)之間聯(lián)系的存儲結(jié)合在一起的。四、層次模型的優(yōu)缺點層次模型的優(yōu)點主要有:·層次數(shù)據(jù)模型本身比較簡單?!τ趯嶓w間聯(lián)系是固定的,且預(yù)先定義好的應(yīng)用系統(tǒng),采用層次模型來實現(xiàn),其性能優(yōu)于關(guān)系模型,不低于網(wǎng)狀模型。·層次數(shù)據(jù)模型提供了良好的完整性支持。層次模型的缺點主要有:·現(xiàn)實世界中很多聯(lián)系是非層次性的,如多對多聯(lián)系、一個結(jié)點具有多個雙親等,層次模型表示這類聯(lián)系的方法很笨拙,只能通過引入冗余數(shù)據(jù)(易產(chǎn)生不一致性)或創(chuàng)建非自然的數(shù)據(jù)組織(引入虛擬結(jié)點)來解決?!Σ迦牒蛣h除操作的限制比較多。·查詢子女結(jié)點必須通過雙親結(jié)點。·由于結(jié)構(gòu)嚴密,層次命令趨于程序化??梢娪脤哟文P蛯哂幸粚Χ嗟膶哟侮P(guān)系的部門描述非常自然、直觀,容易理解。這是層次數(shù)據(jù)庫的突出優(yōu)點。1.2.5網(wǎng)狀模型在現(xiàn)實世界中事物之間的聯(lián)系更多的是非層次關(guān)系的,用層次模型表示非樹形結(jié)構(gòu)是很不直接的,網(wǎng)狀模型則可以克服這一弊病。網(wǎng)狀數(shù)據(jù)庫系統(tǒng)采用網(wǎng)狀模型作為數(shù)據(jù)的組織方式。網(wǎng)狀數(shù)據(jù)模型的典型代表是DBTG系統(tǒng),亦稱CODASYL系統(tǒng)。這是70年代數(shù)據(jù)系統(tǒng)語言研究會CODASYL(ConferenceOnDataSystemLanguage)下屬的數(shù)據(jù)庫任務(wù)組(DataBaseTaskGroup,簡稱DBTG)提出的一個系統(tǒng)方案。DBTG系統(tǒng)雖然不是實際的軟件系統(tǒng),但是它提出的基本概念、方法和技術(shù)具有普遍意義。它對于網(wǎng)狀數(shù)據(jù)庫系統(tǒng)的研制和發(fā)展起了重大的影響。后來不少的系統(tǒng)都采用DBTG模型或者簡化的DBTG模型。例如,CullinetSoftware公司的IDMS、Univac公司的DMS1100、Honeywell公司的IDS/2、HP公司的IMAGE等。一、網(wǎng)狀數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)在數(shù)據(jù)庫中,把滿足以下兩個條件的基本層次聯(lián)系集合稱為網(wǎng)狀模型:(1)允許一個以上的結(jié)點無雙親;(2)一個結(jié)點可以有多于一個的雙親。網(wǎng)狀模型是一種比層次模型更具普遍性的結(jié)構(gòu),它去掉了層次模型的兩個限制,允許多個結(jié)點沒有雙親結(jié)點,允許結(jié)點有多個雙親結(jié)點,此外它還允許兩個結(jié)點之間有多種聯(lián)系(稱之為復(fù)合聯(lián)系)。因此網(wǎng)狀模型可以更直接地去描述現(xiàn)實世界。而層次模型實際上是網(wǎng)狀模型的一個特例。與層次模型一樣,網(wǎng)狀模型中每個結(jié)點表示一個記錄類型(實體),每個記錄類型可包含若干個字段(實體的屬性),結(jié)點間的連線表示記錄類型(實體)之間一對多的父子聯(lián)系。二、網(wǎng)狀數(shù)據(jù)模型的操縱與完整性約束網(wǎng)狀數(shù)據(jù)模型一般來說沒有層次模型那樣嚴格的完整性約束條件,但具體的網(wǎng)狀數(shù)據(jù)庫系統(tǒng)(如DBTG)對數(shù)據(jù)操縱都加了一些限制,提供了一定的完整性約束。DBTG在模式DDL中提供了定義DBTG數(shù)據(jù)庫完整性的若干概念和語句,主要有:(1)支持記錄碼的概念,碼即唯一標識記錄的數(shù)據(jù)項的集合。例如,學(xué)生記錄(如圖1.25)中學(xué)號是碼,因此數(shù)據(jù)庫中不允許學(xué)生記錄中學(xué)號出現(xiàn)重復(fù)值。(2)保證一個聯(lián)系中雙親記錄和子女記錄之間是一對多的聯(lián)系。(3)可以支持雙親記錄和子女記錄之間某些約束條件。例如,有些子女記錄要求雙親記錄存在才能插入,雙親記錄刪除時也連同刪除。例如圖1.26中SC記錄就應(yīng)該滿足這種約束條件,學(xué)生選課記錄值必須是數(shù)據(jù)庫中存在的某一學(xué)生,某一門課的選修記錄。DBTG提供了“屬籍類別”的概念來描述這類約束條件。三、網(wǎng)狀數(shù)據(jù)模型的存儲結(jié)構(gòu)網(wǎng)狀數(shù)據(jù)模型的存儲結(jié)構(gòu)中關(guān)鍵是如何實現(xiàn)記錄之間的聯(lián)系。常用的方法是鏈接法,包括單向鏈接、雙向鏈接、環(huán)狀鏈接、向首鏈接等,此外還有其他實現(xiàn)方法,如指引元陣列法、二進制陣列法、索引法等依具體系統(tǒng)不同而不同。四、網(wǎng)狀數(shù)據(jù)模型的優(yōu)缺點網(wǎng)狀數(shù)據(jù)模型的優(yōu)點主要有:·能夠更為直接地描述現(xiàn)實世界,如一個結(jié)點可以有多個雙親?!ぞ哂辛己玫男阅?,存取效率較高。網(wǎng)狀數(shù)據(jù)模型的缺點主要有:·結(jié)構(gòu)比較復(fù)雜,而且隨著應(yīng)用環(huán)境的擴大,數(shù)據(jù)庫的結(jié)構(gòu)就變得越來越復(fù)雜,不利于最終用戶掌握?!て銬DL,DML語言復(fù)雜,用戶不容易使用。由于記錄之間聯(lián)系是通過存取路徑實現(xiàn)的,應(yīng)用程序在訪問數(shù)據(jù)時必須選擇適當?shù)拇嫒÷窂?,因此,用戶必須了解系統(tǒng)結(jié)構(gòu)的細節(jié),加重了編寫應(yīng)用程序的負擔。1.2.6關(guān)系模型關(guān)系模型是目前最重要的一種數(shù)據(jù)模型。關(guān)系數(shù)據(jù)庫系統(tǒng)采用關(guān)系模型作為數(shù)據(jù)的組織方式。1970年美國IBM公司SanJose研究室的研究員E.F.Codd首次提出了數(shù)據(jù)庫系統(tǒng)的關(guān)系模型,開創(chuàng)了數(shù)據(jù)庫關(guān)系方法和關(guān)系數(shù)據(jù)理論的研究,為數(shù)據(jù)庫技術(shù)奠定了理論基礎(chǔ)。由于E.F.Codd的杰出工作,他于1981年獲得ACM圖靈獎。20世紀80年代以來,計算機廠商新推出的數(shù)據(jù)庫管理系統(tǒng)幾乎都支持關(guān)系模型,非關(guān)系系統(tǒng)的產(chǎn)品也大都加上了關(guān)系接口。數(shù)據(jù)庫領(lǐng)域當前的研究工作也都是以關(guān)系方法為基礎(chǔ)。因此本書的重點也將放在關(guān)系數(shù)據(jù)庫上,下面四章將詳細講解關(guān)系數(shù)據(jù)庫。一、關(guān)系數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)關(guān)系模型與以往的模型不同,它是建立在嚴格的數(shù)學(xué)概念的基礎(chǔ)上的。這里只簡單勾畫一下關(guān)系模型。在用戶觀點下,關(guān)系模型中數(shù)據(jù)的邏輯結(jié)構(gòu)是一張二維表,它由行和列組成?!りP(guān)系(Relation):一個關(guān)系對應(yīng)通常說的一張表,如圖1.27中的這張學(xué)生登記表;·元組(Tuple):表中的一行即為一個元組;·屬性(Attribute):表中的一列即為一個屬性,給每一個屬性起一個名稱即屬性名。如上表有六列,對應(yīng)六個屬性(學(xué)號,姓名,年齡,性別,系和年級);·主碼(Key):表中的某個屬性組,它可以唯一確定一個元組,如圖1.27中的學(xué)號,可以唯一確定一個學(xué)生,也就成為本關(guān)系的主碼;·域(Domain):屬性的取值范圍,如人的年齡一般在1~150歲之間,大學(xué)生年齡屬性的域是(14~38),性別的域是(男,女),系別的域是一個學(xué)校所有系名的集合;·分量:元組中的一個屬性值;·關(guān)系模式:對關(guān)系的描述,一般表示為:關(guān)系名(屬性1,屬性2,…,屬性n)例如上面的關(guān)系可描述為:學(xué)生(學(xué)號,姓名,年齡,性別,系和年級)在關(guān)系模型中,實體以及實體間的聯(lián)系都是用關(guān)系來表示。例如學(xué)生、課程、學(xué)生與課程之間的多對多聯(lián)系在關(guān)系模型中可以如下表示:學(xué)生(學(xué)號,姓名,年齡,性別,系和年級)課程(課程號,課程名,學(xué)分)選修(學(xué)號,課程號,成績)關(guān)系模型要求關(guān)系必須是規(guī)范化的,即要求關(guān)系必須滿足一定的規(guī)范條件,這些規(guī)范條件中最基本的一條就是,關(guān)系的每一個分量必須是一個不可分的數(shù)據(jù)項,也就是說,不允許表中還有表。二、關(guān)系數(shù)據(jù)模型的操縱與完整性約束關(guān)系數(shù)據(jù)模型的操作主要包括查詢、插入、刪除和更新數(shù)據(jù)。這些操作必須滿足關(guān)系的完整性約束條件。關(guān)系的完整性約束條件包括三大類:實體完整性、參照完整性和用戶定義的完整性。其具體含義將在后面介紹。關(guān)系模型中的數(shù)據(jù)操作是集合操作,操作對象和操作結(jié)果都是關(guān)系,即若干元組的集合,而不像非關(guān)系模型中那樣是單記錄的操作方式。另一方面,關(guān)系模型把存取路徑向用戶隱蔽起來,用戶只要指出“干什么”或“找什么”,不必詳細說明“怎么干”或“怎么找”,從而大大地提高了數(shù)據(jù)的獨立性,提高了用戶生產(chǎn)率。三、關(guān)系數(shù)據(jù)模型的存儲結(jié)構(gòu)在關(guān)系數(shù)據(jù)模型中,實體及實體間的聯(lián)系都用表來表示。在數(shù)據(jù)庫的物理組織中,表以文件形式存儲,有的系統(tǒng)一個表對應(yīng)一個操作系統(tǒng)文件,有的系統(tǒng)自己設(shè)計文件結(jié)構(gòu)。四、關(guān)系數(shù)據(jù)模型的優(yōu)缺點關(guān)系數(shù)據(jù)模型具有下列優(yōu)點:·關(guān)系模型與非關(guān)系模型不同,它是建立在嚴格的數(shù)學(xué)概念的基礎(chǔ)上的?!りP(guān)系模型的概念單一。無論實體還是實體之間的聯(lián)系都用關(guān)系表示。對數(shù)據(jù)的檢索結(jié)果也是關(guān)系(即表)。所以其數(shù)據(jù)結(jié)構(gòu)簡單、清晰,用戶易懂易用?!りP(guān)系模型的存取路徑對用戶透明,從而具有更高的數(shù)據(jù)獨立性、更好的安全保密性,也簡化了程序員的工作和數(shù)據(jù)庫開發(fā)建立的工作。所以關(guān)系數(shù)據(jù)模型誕生以后發(fā)展迅速,深受用戶的喜愛。當然,關(guān)系數(shù)據(jù)模型也有缺點,其中最主要的缺點是,由于存取路徑對用戶透明,查詢效率往往不如非關(guān)系數(shù)據(jù)模型。因此為了提高性能,必須對用戶的查詢請求進行優(yōu)化,增加了開發(fā)數(shù)據(jù)庫管理系統(tǒng)的難度。第三節(jié)數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)考察數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu)可以有多種不同的層次或不同的角度。從數(shù)據(jù)庫管理系統(tǒng)角度看,數(shù)據(jù)庫系統(tǒng)通常采用三級模式結(jié)構(gòu);這是數(shù)據(jù)庫管理系統(tǒng)內(nèi)部的系統(tǒng)結(jié)構(gòu)。從數(shù)據(jù)庫最終用戶角度看,數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu)分為單用戶結(jié)構(gòu)、主從式結(jié)構(gòu)、分布式結(jié)構(gòu)和客戶/服務(wù)器結(jié)構(gòu)。這是數(shù)據(jù)庫系統(tǒng)外部的體系結(jié)構(gòu)。本章介紹數(shù)據(jù)庫系統(tǒng)的模式結(jié)構(gòu)。1.3.1數(shù)據(jù)庫系統(tǒng)模式的概念在數(shù)據(jù)模型中有“型”(Type)和“值”(Value)的概念。型是指對某一類數(shù)據(jù)的結(jié)構(gòu)和屬性的說明,值是型的一個具體賦值。例如:學(xué)生記錄定義為(學(xué)號,姓名,性別,系別,年齡,籍貫)這樣的記錄型,而(900201,李明,男,計算機,22,江蘇)則是該記錄型的一個記錄值。模式(Schema)是數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,它僅僅涉及到型的描述,不涉及到具體的值。模式的一個具體值稱為模式的一個實例(Instance)。同一個模式可以有很多實例。模式是相對穩(wěn)定的,而實例是相對變動的,因為數(shù)據(jù)庫中的數(shù)據(jù)是在不斷更新的。模式反映的是數(shù)據(jù)的結(jié)構(gòu)及其聯(lián)系,而實例反映的是數(shù)據(jù)庫某一時刻的狀態(tài)。雖然實際的數(shù)據(jù)庫管理系統(tǒng)產(chǎn)品種類很多,它們支持不同的數(shù)據(jù)模型,使用不同的數(shù)據(jù)庫語言,建立在不同的操作系統(tǒng)之上,數(shù)據(jù)的存儲結(jié)構(gòu)也各不相同,但它們在體系結(jié)構(gòu)上通常都具有相同的特征,即采用三級模式結(jié)構(gòu)(早期微機上的小型數(shù)據(jù)庫系統(tǒng)除外)并提供兩級映象功能。1.3.2數(shù)據(jù)庫系統(tǒng)的三級模式結(jié)構(gòu)數(shù)據(jù)庫系統(tǒng)的三級模式結(jié)構(gòu)是指數(shù)據(jù)庫系統(tǒng)是由外模式、模式和內(nèi)模式三級構(gòu)成。一、模式(Schema)模式也稱邏輯模式,是數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是所有用戶的公共數(shù)據(jù)視圖。它是數(shù)據(jù)庫系統(tǒng)模式結(jié)構(gòu)的中間層,既不涉及數(shù)據(jù)的物理存儲細節(jié)和硬件環(huán)境,也與具體的應(yīng)用程序,與所使用的應(yīng)用開發(fā)工具及高級程序設(shè)計語言(如C,COBOL,F(xiàn)ORTRAN)無關(guān)。模式實際上是數(shù)據(jù)庫數(shù)據(jù)在邏輯級上的視圖。一個數(shù)據(jù)庫只有一個模式。數(shù)據(jù)庫模式以某一種數(shù)據(jù)模型為基礎(chǔ),統(tǒng)一綜合地考慮了所有用戶的需求,并將這些需求有機地結(jié)合成一個邏輯整體。定義模式時不僅要定義數(shù)據(jù)的邏輯結(jié)構(gòu),例如數(shù)據(jù)記錄由哪些數(shù)據(jù)項構(gòu)成,數(shù)據(jù)項的名字、類型、取值范圍等,而且要定義數(shù)據(jù)之間的聯(lián)系,定義與數(shù)據(jù)有關(guān)的安全性、完整性要求。DBSM提供模式描述語言(模式DDL)來嚴格地定義模式。二、外模式(ExternalSchema)外模式也稱子模式(Subschema)或用戶模式,它是數(shù)據(jù)庫用戶(包括應(yīng)用程序員和最終用戶)能夠看見和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是數(shù)據(jù)庫用戶的數(shù)據(jù)視圖,是與某一應(yīng)用有關(guān)的數(shù)據(jù)的邏輯表示。外模式通常是模式的子集。一個數(shù)據(jù)庫可以有多個外模式。由于它是各個用戶的數(shù)據(jù)視圖,如果不同的用戶在應(yīng)用需求、看待數(shù)據(jù)的方式、對數(shù)據(jù)保密的要求等方面存在差異,則其外模式描述就是不同的。即使對模式中同一數(shù)據(jù),在外模式中的結(jié)構(gòu)、類型、長度、保密級別等都可以不同。另一方面,同一外模式也可以為某一用戶的多個應(yīng)用系統(tǒng)所使用,但一個應(yīng)用程序只能使用一個外模式。外模式是保證數(shù)據(jù)庫安全性的一個有力措施。每個用戶只能看見和訪問所對應(yīng)的外模式中的數(shù)據(jù),數(shù)據(jù)庫中的其余數(shù)據(jù)是不可見的。DBSM提供子模式描述語言(子模式DDL)來嚴格地定義子模式。三、內(nèi)模式(InternalSchema)內(nèi)模式也稱存儲模式(StorageSchema),一個數(shù)據(jù)庫只有一個內(nèi)模式。它是數(shù)據(jù)物理結(jié)構(gòu)和存儲方式的描述,是數(shù)據(jù)在數(shù)據(jù)庫內(nèi)部的表示方式。例如,記錄的存儲方式是順序存儲、按照B樹結(jié)構(gòu)存儲還是按hash方法存儲;索引按照什么方式組織;數(shù)據(jù)是否壓縮存儲,是否加密;數(shù)據(jù)的存儲記錄結(jié)構(gòu)有何規(guī)定等。DBSM提供內(nèi)模式描述語言(內(nèi)模式DDL,或者存儲模式DDL)來嚴格地定義內(nèi)模式。1.3.3數(shù)據(jù)庫的二級映象功能與數(shù)據(jù)獨立性數(shù)據(jù)庫系統(tǒng)的三級模式是對數(shù)據(jù)的三個抽象級別,它把數(shù)據(jù)的具體組織留給DBMS管理,使用戶能邏輯地抽象地處理數(shù)據(jù),而不必關(guān)心數(shù)據(jù)在計算機中的具體表示方式與存儲方式。為了能夠在內(nèi)部實現(xiàn)這三個抽象層次的聯(lián)系和轉(zhuǎn)換,數(shù)據(jù)庫管理系統(tǒng)在這三級模式之間提供了兩層映象:·外模式/模式映象·模式/內(nèi)模式映象正是這兩層映象保證了數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)能夠具有較高的邏輯獨立性和物理獨立性。一、外模式/模式映象模式描述的是數(shù)據(jù)的全局邏輯結(jié)構(gòu),外模式描述的是數(shù)據(jù)的局部邏輯結(jié)構(gòu)。對應(yīng)于同一個模式可以有任意多個外模式。對于每一個外模式,數(shù)據(jù)庫系統(tǒng)都有一個外模式/模式映象,它定義了該外模式與模式之間的對應(yīng)關(guān)系。這些映象定義通常包含在各自外模式的描述中。當模式改變時(例如增加新的關(guān)系、新的屬性、改變屬性的數(shù)據(jù)類型等),由數(shù)據(jù)庫管理員對各個外模式/模式的映象作相應(yīng)改變,可以使外模式保持不變。應(yīng)用程序是依據(jù)數(shù)據(jù)的外模式編寫的,從而應(yīng)用程序不必修改,保證了數(shù)據(jù)與程序的邏輯獨立性,簡稱數(shù)據(jù)的邏輯獨立性。二、模式/內(nèi)模式映象數(shù)據(jù)庫中只有一個模式,也只有一個內(nèi)模式,所以模式/內(nèi)模式映象是唯一的,它定義了數(shù)據(jù)全局邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)之間的對應(yīng)關(guān)系。例如,說明邏輯記錄和字段在內(nèi)部是如何表示的。該映象定義通常包含在模式描述中。當數(shù)據(jù)庫的存儲結(jié)構(gòu)改變了(例如選用了另一種存儲結(jié)構(gòu)),由數(shù)據(jù)庫管理員對模式/內(nèi)模式映象作相應(yīng)改變,可以使模式保持不變,從而應(yīng)用程序也不必改變。保證了數(shù)據(jù)與程序的物理獨立性,簡稱數(shù)據(jù)的物理獨立性。在數(shù)據(jù)庫的三級模式結(jié)構(gòu)中,數(shù)據(jù)庫模式即全局邏輯結(jié)構(gòu)是數(shù)據(jù)庫的中心與關(guān)鍵,它獨立于數(shù)據(jù)庫的其他層次。因此設(shè)計數(shù)據(jù)庫模式結(jié)構(gòu)時應(yīng)首先確定數(shù)據(jù)庫的邏輯模式。數(shù)據(jù)庫的內(nèi)模式依賴于它的全局邏輯結(jié)構(gòu),但獨立于數(shù)據(jù)庫的用戶視圖即外模式,也獨立于具體的存儲設(shè)備。它是將全局邏輯結(jié)構(gòu)中所定義的數(shù)據(jù)結(jié)構(gòu)及其聯(lián)系按照一定的物理存儲策略進行組織,以達到較好的時間與空間效率。數(shù)據(jù)庫的外模式面向具體的應(yīng)用程序,它定義在邏輯模式之上,但獨立于存儲模式和存儲設(shè)備。當應(yīng)用需求發(fā)生較大變化,相應(yīng)外模式不能滿足其視圖要求時,該外模式就得做相應(yīng)改動,所以設(shè)計外模式時應(yīng)充分考慮到應(yīng)用的擴充性。特定的應(yīng)用程序是在外模式描述的數(shù)據(jù)結(jié)構(gòu)上編制的,它依賴于特定的外模式,與數(shù)據(jù)庫的模式和存儲結(jié)構(gòu)獨立。不同的應(yīng)用程序有時可以共用同一個外模式。數(shù)據(jù)庫的二級映象保證了數(shù)據(jù)庫外模式的穩(wěn)定性,從而從底層保證了應(yīng)用程序的穩(wěn)定性,除非應(yīng)用需求本身發(fā)生變化,否則應(yīng)用程序一般不需要修改。數(shù)據(jù)與程序之間的獨立性,使得數(shù)據(jù)的定義和描述可以從應(yīng)用程序中分離出去。另外,由于數(shù)據(jù)的存取由DBMS管理,用戶不必考慮存取路徑等細節(jié),從而簡化了應(yīng)用程序的編制,大大減少了應(yīng)用程序的維護和修改。第四節(jié)數(shù)據(jù)庫系統(tǒng)的組成在本章一開始介紹了數(shù)據(jù)庫系統(tǒng)一般由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)(及其開發(fā)工具)、應(yīng)用系統(tǒng)、數(shù)據(jù)庫管理員和用戶構(gòu)成。下面分別介紹這幾個部分的內(nèi)容。一、硬件平臺及數(shù)據(jù)庫由于數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)量都很大,加之DBMS豐富的功能使得自身的規(guī)模也很大,因此整個數(shù)據(jù)庫系統(tǒng)對硬件資源提出了較高的要求,這些要求是:(1)要有足夠大的內(nèi)存,存放操作系統(tǒng)、DBMS的核心模塊、數(shù)據(jù)緩沖區(qū)和應(yīng)用程序。(2)有足夠的大的磁盤等直接存取設(shè)備存放數(shù)據(jù)庫,有足夠的磁帶(或微機軟盤)作數(shù)據(jù)備份。(3)要求系統(tǒng)有較高的通道能力,以提高數(shù)據(jù)傳送率。二、軟件數(shù)據(jù)庫系統(tǒng)的軟件主要包括:(1)DBMS。DBMS是為數(shù)據(jù)庫的建立、使用和維護配置的軟件。(2)支持DBMS運行的操作系統(tǒng)。(3)具有與數(shù)據(jù)庫接口的高級語言及其編譯系統(tǒng),便于開發(fā)應(yīng)用程序。(4)以DBMS為核心的應(yīng)用開發(fā)工具。應(yīng)用開發(fā)工具是系統(tǒng)為應(yīng)用開發(fā)人員和最終用戶提供的高效率、多功能的應(yīng)用生成器、第四代語言等各種軟件工具。它們?yōu)閿?shù)據(jù)庫系統(tǒng)的開發(fā)和應(yīng)用提供了良好的環(huán)境。(5)為特定應(yīng)用環(huán)境開發(fā)的數(shù)據(jù)庫應(yīng)用系統(tǒng)。三、人員開發(fā)、管理和使用數(shù)據(jù)庫系統(tǒng)的人員主要是:數(shù)據(jù)庫管理員、系統(tǒng)分析員和數(shù)據(jù)庫設(shè)計人員、應(yīng)用程序員和最終用戶。不同的人員涉及不同的數(shù)據(jù)抽象級別,具有不同的數(shù)據(jù)視圖。1.數(shù)據(jù)庫管理員(DataBaseAdministrator,簡稱DBA)在數(shù)據(jù)庫系統(tǒng)環(huán)境下,有兩類共享資源。一類是數(shù)據(jù)庫,另一類是數(shù)據(jù)庫管理系統(tǒng)軟件。因此需要有專門的管理機構(gòu)來監(jiān)督和管理數(shù)據(jù)庫系統(tǒng)。DBA則是這個機構(gòu)的一個(組)人員,負責(zé)全面管理和控制數(shù)據(jù)庫系統(tǒng)。具體職責(zé)包括:(1)決定數(shù)據(jù)庫中的信息內(nèi)容和結(jié)構(gòu)數(shù)據(jù)庫中要存放哪些信息,DBA要參與決策。因此DBA必須參加數(shù)據(jù)庫設(shè)計的全過程,并與用戶、應(yīng)用程序員、系統(tǒng)分析員密切合作共同協(xié)商,搞好數(shù)據(jù)庫設(shè)計。(2)決定數(shù)據(jù)庫的存儲結(jié)構(gòu)和存取策略DBA要綜合各用戶的應(yīng)用要求,和數(shù)據(jù)庫設(shè)計人員共同決定數(shù)據(jù)的存儲結(jié)構(gòu)和存取策略以求獲得較高的存取效率和存儲空間利用率。(3)定義數(shù)據(jù)的安全性要求和完整性約束條件DBA的重要職責(zé)是保證數(shù)據(jù)庫的安全性和完整性。因此,DBA負責(zé)確定各個用戶對數(shù)據(jù)庫的存取權(quán)限、數(shù)據(jù)的保密級別和完整性約束條件。(4)監(jiān)控數(shù)據(jù)庫的使用和運行DBA還有一個重要職責(zé)就是監(jiān)視數(shù)據(jù)庫系統(tǒng)的運行情況,及時處理運行過程中出現(xiàn)的問題。比如系統(tǒng)發(fā)生各種故障時,數(shù)據(jù)庫會因此遭到不同程度的破壞,DBA必須在最短時間內(nèi)將數(shù)據(jù)庫恢復(fù)到正確狀態(tài),并盡可能不影響或少影響計算機系統(tǒng)其他部分的正常運行。為此,DBA要定義和實施適當?shù)暮髠浜突謴?fù)策略。如周期性的轉(zhuǎn)儲數(shù)據(jù)、維護日志文件等等。有關(guān)這方面的內(nèi)容將在下面做進一步討論。(5)數(shù)據(jù)庫的改進和重組重構(gòu)DBA還負責(zé)在系統(tǒng)運行期間監(jiān)視系統(tǒng)的空間利用率、處理效率等性能指標,對運行情況進行記錄、統(tǒng)計分析,依靠工作實踐并根據(jù)實際應(yīng)用環(huán)境,不斷改進數(shù)據(jù)庫設(shè)計。不少數(shù)據(jù)庫產(chǎn)品都提供了對數(shù)據(jù)庫運行狀況進行監(jiān)視和分析的實用程序,DBA可以使用這些實用程序完成這項工作。另外,在數(shù)據(jù)運行過程中,大量數(shù)據(jù)不斷插入、刪除、修改,時間一長,會影響系統(tǒng)的性能。因此,DBA要定期對數(shù)據(jù)庫進行重組織,以提高系統(tǒng)的性能。當用戶的需求增加和改變時,DBA還要對數(shù)據(jù)庫進行較大的改造,包括修改部分設(shè)計,即數(shù)據(jù)庫的重構(gòu)造。2.系統(tǒng)分析員和數(shù)據(jù)庫設(shè)計人員系統(tǒng)分析員負責(zé)應(yīng)用系統(tǒng)的需求分析和規(guī)范說明,要和用戶及DBA相結(jié)合,確定系統(tǒng)的硬件軟件配置,并參與數(shù)據(jù)庫系統(tǒng)的概要設(shè)計。數(shù)據(jù)庫設(shè)計人員負責(zé)數(shù)據(jù)庫中數(shù)據(jù)的確定、數(shù)據(jù)庫各級模式的設(shè)計。數(shù)據(jù)庫設(shè)計人員必須參加用戶需求調(diào)查和系統(tǒng)分析,然后進行數(shù)據(jù)庫設(shè)計。在很多情況下,數(shù)據(jù)庫設(shè)計人員就由數(shù)據(jù)庫管理員擔任。3.應(yīng)用程序員應(yīng)用程序員負責(zé)設(shè)計和編寫應(yīng)用系統(tǒng)的程序模塊,并進行調(diào)試和安裝。4.用戶這里用戶是指最終用戶(EndUser)。最終用戶通過應(yīng)用系統(tǒng)的用戶接口使用數(shù)據(jù)庫。常用的接口方式有瀏覽器、菜單驅(qū)動、表格操作、圖形顯示、報表書寫等。(唐山市警用地理信息系統(tǒng)數(shù)據(jù)庫)最終用戶可以分為如下三類:(1)偶然用戶。這類用戶不經(jīng)常訪問數(shù)據(jù)庫,但每次訪問數(shù)據(jù)庫時往往需要不同的數(shù)據(jù)庫信息,這類用戶一般是企業(yè)或組織機構(gòu)的高中級管理人員。(2)簡單用戶。數(shù)據(jù)庫的多數(shù)最終用戶都是簡單用戶。其主要工作是查詢和更新數(shù)據(jù)庫,一般都是通過應(yīng)用程序員精心設(shè)計并具有友好界面的應(yīng)用程序存取數(shù)據(jù)庫。銀行的職員、鐵路售票、航空公司的機票預(yù)定工作人員、旅館總臺服務(wù)員等都屬于這類用戶。(3)復(fù)雜用戶。復(fù)雜用戶包括工程師、科學(xué)家、經(jīng)濟學(xué)家、科學(xué)技術(shù)工作者等具有較高科學(xué)技術(shù)背景的人員。這類用戶一般都比較熟悉數(shù)據(jù)庫管理系統(tǒng)的各種功能,能夠直接使用數(shù)據(jù)庫語言訪問數(shù)據(jù)庫,甚至能夠基于數(shù)據(jù)庫管理系統(tǒng)的API(ApplicationProgrammingInterface,應(yīng)用程序編程接口)編制自己的應(yīng)用程序。第五節(jié)數(shù)據(jù)庫技術(shù)的研究領(lǐng)域數(shù)據(jù)庫學(xué)科的研究范圍是十分廣泛的,概括地講可包括以下三個領(lǐng)域:一、數(shù)據(jù)庫管理系統(tǒng)軟件的研制DBMS是數(shù)據(jù)庫系統(tǒng)的基礎(chǔ)。DBMS的研制包括研制DBMS本身及以DBMS為核心的一組相互聯(lián)系的軟件系統(tǒng),包括工具軟件和中間件。研制的目標是提高系統(tǒng)的可用性、可靠性、可伸縮性;提高性能和提高用戶的生產(chǎn)率。DBMS核心技術(shù)的研究和實現(xiàn)是三十余年來數(shù)據(jù)庫領(lǐng)域所取得的主要成就。DBMS是一個基礎(chǔ)軟件系統(tǒng),它提供了對數(shù)據(jù)庫中的數(shù)據(jù)進行存儲、檢索和管理的功能。二、數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫設(shè)計的主要任務(wù)是在DBMS的支持下,按照應(yīng)用的要求,為某一部門或組織設(shè)計一個結(jié)構(gòu)合理、使用方便、效率較高的數(shù)據(jù)庫及其應(yīng)用系統(tǒng)。其中主要的研究方向是數(shù)據(jù)庫設(shè)計方法學(xué)和設(shè)計工具,包括數(shù)據(jù)庫設(shè)計方法、設(shè)計工具和設(shè)計理論的研究,數(shù)據(jù)模型和數(shù)據(jù)建模的研究,計算機輔助數(shù)據(jù)庫設(shè)計方法及其軟件系統(tǒng)的研究,數(shù)據(jù)庫設(shè)計規(guī)范和標準的研究等。三、數(shù)據(jù)庫理論數(shù)據(jù)庫理論的研究主要集中于關(guān)系的規(guī)范化理論、關(guān)系數(shù)據(jù)理論等。近年來,隨著人工智能與數(shù)據(jù)庫理論的結(jié)合、并行計算技術(shù)等的發(fā)展,數(shù)據(jù)庫邏輯演繹和知識推理、數(shù)據(jù)庫中的知識發(fā)現(xiàn)(KnowledgeDiscoveryfromDatabase,簡稱KDD)、并行算法等成為新的理論研究方向。計算機領(lǐng)域中其他新興技術(shù)的發(fā)展對數(shù)據(jù)庫技術(shù)產(chǎn)生了重大影響。數(shù)據(jù)庫技術(shù)和其他計算機技術(shù)的互相結(jié)合、互相滲透,使數(shù)據(jù)庫中新的技術(shù)內(nèi)容層出不窮。數(shù)據(jù)庫的許多概念、技術(shù)內(nèi)容、應(yīng)用領(lǐng)域,甚至某些原理都有了重大的發(fā)展和變化。建立和實現(xiàn)了一系列新型數(shù)據(jù)庫系統(tǒng),如分布式數(shù)據(jù)庫系統(tǒng)、并行數(shù)據(jù)庫系統(tǒng)、知識庫系統(tǒng)、多媒體數(shù)據(jù)庫系統(tǒng)等。它們共同構(gòu)成了數(shù)據(jù)庫系統(tǒng)大家族,使數(shù)據(jù)庫技術(shù)不斷地涌現(xiàn)新的研究方向。本書介紹數(shù)據(jù)庫系統(tǒng)的基本概念、基本技術(shù)和基本知識方面是進一步進行上述三個領(lǐng)域研究和開發(fā)的基礎(chǔ)。第六節(jié)小結(jié)本章概述了數(shù)據(jù)庫的基本概念,并通過對數(shù)據(jù)管理進展情況的介紹,闡述了數(shù)據(jù)庫技術(shù)產(chǎn)生和發(fā)展的背景,也說明了數(shù)據(jù)庫系統(tǒng)的優(yōu)點。數(shù)據(jù)模型是數(shù)據(jù)庫系統(tǒng)的核心和基礎(chǔ)。本章介紹了組成數(shù)據(jù)模型的三個要素、概念模型和三種主要的數(shù)據(jù)庫模型。概念模型也稱信息模型,用于信息世界的建模,E-R模型是這類模型的典型代表,E-R方法簡單、清晰,應(yīng)用十分廣泛。數(shù)據(jù)模型的發(fā)展經(jīng)歷了格式化數(shù)據(jù)模型(包括層次模型和網(wǎng)狀模型)、關(guān)系模型,正在走向面向?qū)ο蟮确莻鹘y(tǒng)數(shù)據(jù)模型。由于層次數(shù)據(jù)庫和網(wǎng)狀數(shù)據(jù)庫已逐漸被關(guān)系數(shù)據(jù)庫代替,本書不再用單獨的章節(jié)講解,因此,本章較為詳細地講解了層次模型和網(wǎng)狀模型,而關(guān)系模型只是簡單介紹,后面會詳細講解。數(shù)據(jù)庫系統(tǒng)三級模式和兩層映象的系統(tǒng)結(jié)構(gòu)保證了數(shù)據(jù)庫系統(tǒng)中能夠具有較高的邏輯獨立性和物理獨立性。最后介紹了數(shù)據(jù)庫系統(tǒng)的組成,使學(xué)生了解數(shù)據(jù)庫系統(tǒng)不僅是一個計算機系統(tǒng),而是一個人-機系統(tǒng),人的作用特別是DBA的作用尤為重要。學(xué)習(xí)這一章應(yīng)把注意力放在掌握基本概念和基本知識方面,為進一步學(xué)習(xí)下面章節(jié)打好基礎(chǔ)。本章新概念較多,如果是剛開始學(xué)習(xí)數(shù)據(jù)庫,可在學(xué)習(xí)后面章節(jié)后再回來理解和掌握這些概念。第2章關(guān)系數(shù)據(jù)庫第一節(jié)關(guān)系模型概述關(guān)系數(shù)據(jù)庫系統(tǒng)是支持關(guān)系模型的數(shù)據(jù)庫系統(tǒng)。關(guān)系模型由關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合和關(guān)系完整性約束三部分組成。一、單一的數(shù)據(jù)結(jié)構(gòu)——關(guān)系關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)非常單一。在關(guān)系模型中,現(xiàn)實世界的實體以及實體間的各種聯(lián)系均用關(guān)系來表示。在用戶看來,關(guān)系模型中數(shù)據(jù)的邏輯結(jié)構(gòu)是一張二維表。二、關(guān)系操作關(guān)系模型給出了關(guān)系操作的能力,但不對RDBMS語言給出具體的語法要求。關(guān)系模型中常用的關(guān)系操作包括:選擇(Select)、投影(Project)、連接(Join)、除(Divide)、并(Union)、交(Intersection)、差(Difference)等查詢(Query)操作和增加(Insert)、刪除(Delete)、修改(Update)操作兩大部分。查詢的表達能力是其中最主要的部分。關(guān)系操作的特點是集合操作方式,即操作的對象和結(jié)果都是集合。這種操作方式也稱為一次一集合(set-at-a-time)的方式。相應(yīng)地,非關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操作方式則為一次一記錄(record-at-a-time)的方式。早期的關(guān)系操作能力通常用代數(shù)方式或邏輯方式來表示,分別稱為關(guān)系代數(shù)和關(guān)系演算。關(guān)系代數(shù)是用對關(guān)系的運算來表達查詢要求的方式。關(guān)系演算是用謂詞來表達查詢要求的方式。關(guān)系演算又可按謂詞變元的基本對象是元組變量還是域變量分為元組關(guān)系演算和域關(guān)系演算。關(guān)系代數(shù)、元組關(guān)系演算和域關(guān)系演算三種語言在表達能力上是完全等價的。關(guān)系代數(shù)、元組關(guān)系演算和域關(guān)系演算均是抽象的查詢語言,這些抽象的語言與具體的DBMS中實現(xiàn)的實際語言并不完全一樣。但它們能用作評估實際系統(tǒng)中查詢語言能力的標準或基礎(chǔ)。實際的查詢語言除了提供關(guān)系代數(shù)或關(guān)系演算的功能外,還提供了許多附加功能,例如集函數(shù)、關(guān)系賦值、算術(shù)運算等。關(guān)系語言是一種高度非過程化的語言,用戶不必請求DBA為其建立特殊的存取路徑,存取路徑的選擇由DBMS的優(yōu)化機制來完成,此外,用戶不必求助于循環(huán)結(jié)構(gòu)就可以完成數(shù)據(jù)操作。另外還有一種介于關(guān)系代數(shù)和關(guān)系演算之間的語言SQL(StandardQueryLanguage)。SQL不僅具有豐富的查詢功能,而且具有數(shù)據(jù)定義和數(shù)據(jù)控制功能,是集查詢、DDL、DML和DCL于一體的關(guān)系數(shù)據(jù)語言。它充分體現(xiàn)了關(guān)系數(shù)據(jù)語言的特點和優(yōu)點,是關(guān)系數(shù)據(jù)庫的標準語言。因此,關(guān)系數(shù)據(jù)語言可以分為三類:關(guān)系代數(shù)語言,例如ISBL關(guān)系演算語言,(元組關(guān)系演算語言,例如APLHA,QUEL和域關(guān)系演算語言,例如QBE)具有關(guān)系代數(shù)和關(guān)系演算雙重特點的語言例如SQL這些關(guān)系數(shù)據(jù)語言的共同特點是,語言具有完備的表達能力,是非過程化的集合操作語言,功能強,能夠嵌入高級語言中使用。三、關(guān)系的三類完整性約束關(guān)系模型允許定義三類完整性約束:實體完整性、參照完整性和用戶定義的完整性。其中實體完整性和參照完整性是關(guān)系模型必須滿足的完整性約束條件,應(yīng)該由關(guān)系系統(tǒng)自動支持。用戶定義的完整性是應(yīng)用領(lǐng)域需要遵循的約束條件,體現(xiàn)了具體領(lǐng)域中的語義約束。下面將分別介紹關(guān)系模型的三個方面。其中2.2節(jié)介紹關(guān)系數(shù)據(jù)結(jié)構(gòu),包括關(guān)系的形式化定義及有關(guān)概念;2.3節(jié)介紹關(guān)系的三類完整性;2.4節(jié)介紹關(guān)系代數(shù);2.5節(jié)介紹關(guān)系演算;第三章將專門介紹SQL語言。第二節(jié)關(guān)系數(shù)據(jù)結(jié)構(gòu)及形式化定義在關(guān)系模型中,無論是實體還是實體之間的聯(lián)系均由單一的結(jié)構(gòu)類型即關(guān)系(表)來表示。前面已經(jīng)非形式化地介紹了關(guān)系模型及有關(guān)的基本概念。關(guān)系模型是建立在集合代數(shù)的基礎(chǔ)上的,這里從集合論角度給出關(guān)系數(shù)據(jù)結(jié)構(gòu)的形式化定義。2.2.1關(guān)系1.域(Domain)定義2.1域是一組具有相同數(shù)據(jù)類型的值的集合。例如,自然數(shù)、整數(shù)、實數(shù)、長度小于25字節(jié)的字符串集合、{0,1}、大于等于0且小于等于100的正整數(shù)等,都可以是域。2.笛卡爾積(CartesianProduct)定義2.2給定一組域D1,D2,…,Dn,這些域中可以有相同的。D1,D2,…,Dn的笛卡爾積為:D1×D2×…×Dn={(d1,d2,…,dn)|di?Di,i=1,2,…,n}其中每一個元素(d1,d2,…,dn)叫作一個n元組(n-tuple)或簡稱元組(Tuple)。元素中的每一個值di叫作一個分量(Component)。笛卡爾積可表示為一個二維表。表中的每行對應(yīng)一個元組,表中的每列對應(yīng)一個域。例如給出三個域:D1=導(dǎo)師集合SUPERVISOR=張清玫,劉逸D2=專業(yè)集合SPECIALITY=計算機專業(yè),信息專業(yè)D3=研究生集合POSTGRADUATE=李勇,劉晨,王敏則D1,D2,D3的笛卡爾積為:D1×D2×D3={(張清玫,計算機專業(yè),李勇),(張清玫,計算機專業(yè),劉晨),(張清玫,計算機專業(yè),王敏),(張清玫,信息專業(yè),李勇),(張清玫,信息專業(yè),劉晨),(張清玫,信息專業(yè),王敏),(劉逸,計算機專業(yè),李勇),(劉逸,計算機專業(yè),劉晨),(劉逸,計算機專業(yè),王敏),(劉逸,信息專業(yè),李勇),(劉逸,信息專業(yè),劉晨),(劉逸,信息專業(yè),王敏)}其中(張清玫,計算機專業(yè),李勇)、(張清玫,計算機專業(yè),劉晨)等都是元組。張清玫、計算機專業(yè)、李勇、劉晨等都是分量。該笛卡爾積的基數(shù)為2×2×3=12,也就是說,D1×D2×D3一共有2×2×3=12個元組。這12個元組可列成一張二維表(如表2.1)。3.關(guān)系(Relation)定義2.3D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的關(guān)系,表示為R(D1,D2,…,Dn)這里R表示關(guān)系的名字,n是關(guān)系的目或度(Degree)。關(guān)系中的每個元素是關(guān)系中的元組,通常用t表示。當n=1時,稱該關(guān)系為單元關(guān)系(Unaryrelation)。當n=2時,稱該關(guān)系為二元關(guān)系(Binaryrelation)。關(guān)系是笛卡爾積的有限子集,所以關(guān)系也是一個二維表,表的每行對應(yīng)一個元組,表的每列對應(yīng)一個域。由于域可以相同,為了加以區(qū)分,必須對每列起一個名字,稱為屬性(Attribute)。n目關(guān)系必有n個屬性。若關(guān)系中的某一屬性組的值能唯一地標識一個元組,則稱該屬性組為候選碼(Candidatekey)。若一個關(guān)系有多個候選碼,則選定其中一個為主碼(Primarykey)。主碼的諸屬性稱為主屬性(Primeattribute)。不包含在任何侯選碼中的屬性稱為非碼屬性(Non-keyattribute)。在最簡單的情況下,候選碼只包含一個屬性。在最極端的情況下,關(guān)系模式的所有屬性組是這個關(guān)系模式的候選碼,稱為全碼(All-key)。關(guān)系可以有三種類型:基本關(guān)系(通常又稱為基本表或基表)、查詢表和視圖表?;颈硎菍嶋H存在的表,它是實際存儲數(shù)據(jù)的邏輯表示。查詢表是查詢結(jié)果對應(yīng)的表。視圖表是由基本表或其他視圖表導(dǎo)出的表,是虛表,不對應(yīng)實際存儲的數(shù)據(jù)。按照定義2.2,關(guān)系可以是一個無限集合。由于笛卡爾積不滿足交換律,所以按照數(shù)學(xué)定義,(d1,d2,…,dn)≠(d2,d1,…,dn)。當關(guān)系作為關(guān)系數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)時,需要給予如下的限定和擴充:(1)無限關(guān)系在數(shù)據(jù)庫系統(tǒng)中是無意義的。因此,限定關(guān)系數(shù)據(jù)模型中的關(guān)系必須是有限集合。(2)通過為關(guān)系的每個列附加一個屬性名的方法取消關(guān)系元組的有序性,即(d1,d2,…,di,dj,…,dn)=(d1,d2,…,di,dj,…,dn)(i,j=1,2,…,n)。因此,基本關(guān)系具有以下六條性質(zhì):①列是同質(zhì)的(Homogeneous),即每一列中的分量是同一類型的數(shù)據(jù),來自同一個域。②不同的列可出自同一個域,稱其中的每一列為一個屬性,不同的屬性要給予不同的屬性名。例如在上面的例子中,也可以只給出兩個域:人(PERSON)=張清玫,劉逸,李勇,劉晨,王敏專業(yè)(SPECIALITY)=計算機專業(yè),信息專業(yè)SAP關(guān)系的導(dǎo)師屬性和研究生屬性都從PERSON域中取值。為了避免混淆,必須給這兩個屬性取不同的屬性名,而不能直接使用域名。例如定義導(dǎo)師屬性名為SUPERVISOR-PERSON(或SUPERVISOR),研究生屬性名為POSTGRADUATE-PERSON(或POSTGRADUATE)。③列的順序無所謂,即列的次序可以任意交換。由于列順序是無關(guān)緊要的,因此在許多實際關(guān)系數(shù)據(jù)庫產(chǎn)品中(例如Oracle),增加新屬性時,永遠是插至最后一列。④任意兩個元組不能完全相同。⑤行的順序無所謂,即行的次序可以任意交換。⑥分量必須取原子值,即每一個分量都必須是不可分的數(shù)據(jù)項。注意:在許多實際關(guān)系數(shù)據(jù)庫產(chǎn)品中,基本表并不完全具有這六條性質(zhì),例如,有的數(shù)據(jù)庫產(chǎn)品(如FoxPro)仍然區(qū)分了屬性順序和元組的順序;許多關(guān)系數(shù)據(jù)庫產(chǎn)品中,例如Oracle,F(xiàn)oxPro等,它們都允許關(guān)系表中存在兩個完全相同的元組,除非用戶特別定義了相應(yīng)的約束條件。關(guān)系模型要求關(guān)系必須是規(guī)范化的,即要求關(guān)系模式必須滿足一定的規(guī)范條件。這些規(guī)范條件中最基本的一條就是,關(guān)系的每一個分量必須是一個不可分的數(shù)據(jù)項。規(guī)范化的關(guān)系簡稱為范式(NormalForm)。2.2.2關(guān)系模式在數(shù)據(jù)庫中要區(qū)分型和值。關(guān)系數(shù)據(jù)庫中,關(guān)系模式是型,關(guān)系是值。關(guān)系模式是對關(guān)系的描述,那么一個關(guān)系需要描述哪些方面呢?首先,應(yīng)該知道,關(guān)系實質(zhì)上是一張二維表,表的每一行為一個元組,每一列為一個屬性。一個元組就是該關(guān)系所涉及的屬性集的笛卡爾積的一個元素。關(guān)系是元組的集合,因此關(guān)系模式必須指出這個元組集合的結(jié)構(gòu),即它由哪些屬性構(gòu)成,這些屬性來自哪些域,以及屬性與域之間的映象關(guān)系。其次,一個關(guān)系通常是由賦予它的元組語義來確定的。元組語義實質(zhì)上是一個n目謂詞(n是屬性集中屬性的個數(shù))。凡使該n目謂詞為真的笛卡爾積中的元素(或者說凡符合元組語義的那部分元素)的全體就構(gòu)成了該關(guān)系模式的關(guān)系?,F(xiàn)實世界隨著時間在不斷地變化,因而在不同的時刻,關(guān)系模式的關(guān)系也會有所變化。但是,現(xiàn)實世界的許多已有事實限定了關(guān)系模式所有可能的關(guān)系必須滿足一定的完整性約束條件。這些約束或者通過對屬性取值范圍的限定,例如職工年齡小于65歲(65歲以后必須退休),或者通過屬性值間的相互關(guān)連(主要體現(xiàn)于值的相等與否)反映出來。關(guān)系模式應(yīng)當刻劃出這些完整性約束條件。因此一個關(guān)系模式應(yīng)當是一個5元組。定義2.4關(guān)系的描述稱為關(guān)系模式(RelationSchema)。它可以形式化地表示為:R(U,D,dom,F(xiàn))其中R為關(guān)系名,U為組成該關(guān)系的屬性名集合,D為屬性組U中屬性所來自的域,dom為屬性向域的映象集合,F(xiàn)為屬性間數(shù)據(jù)的依賴關(guān)系集合。屬性間的數(shù)據(jù)依賴將在第五章討論,本章中關(guān)系模式僅涉及關(guān)系名、各屬性名、域名、屬性向域的映像四部分。例如,在上面例子中,由于導(dǎo)師和研究生出自同一個域——人,所以要取不同的屬性名,并在模式中定義屬性向域的映象,即說明它們分別出自哪個域,如:dom(SUPERVISOR-PERSON)=dom(POSTGRADUATE-PERSON)=PERSON關(guān)系模式通??梢院営洖镽(U)或R(A1,A2,…,An)其中R為關(guān)系名,A1,A2,…,An為屬性名。而域名及屬性向域的映象常常直接說明為屬性的類型、長度。關(guān)系是關(guān)系模式在某一時刻的狀態(tài)或內(nèi)容。關(guān)系模式是靜態(tài)的、穩(wěn)定的,而關(guān)系是動態(tài)的、隨時間不斷變化的,因為關(guān)系操作在不斷地更新著數(shù)據(jù)庫中的數(shù)據(jù)。但在實際當中,人們常常把關(guān)系模式和關(guān)系都稱為關(guān)系,這不難從上下文中加以區(qū)別。2.2.3關(guān)系數(shù)據(jù)庫在關(guān)系模型中,實體以及實體間的聯(lián)系都是用關(guān)系來表示的。例如導(dǎo)師實體、研究生實體、導(dǎo)師與研究生之間的一對多聯(lián)系都可以分別用一個關(guān)系來表示。在一個給定的應(yīng)用領(lǐng)域中,所有實體及實體之間聯(lián)系的關(guān)系的集合構(gòu)成一個關(guān)系數(shù)據(jù)庫。關(guān)系數(shù)據(jù)庫也有型和值之分。關(guān)系數(shù)據(jù)庫的型也稱為關(guān)系數(shù)據(jù)庫模式,是對關(guān)系數(shù)據(jù)庫的描述,它包括若干域的定義以及在這些域上定義的若干關(guān)系模式。關(guān)系數(shù)據(jù)庫的值是這些關(guān)系模式在某一時刻對應(yīng)的關(guān)系的集合,通常就稱為關(guān)系數(shù)據(jù)庫。第三節(jié)關(guān)系的完整性關(guān)系模型的完整性規(guī)則是對關(guān)系的某種約束條件。關(guān)系模型中可以有三類完整性約束:實體完整性、參照完整性和用戶定義的完整性。其中實體完整性和參照完整性是關(guān)系模型必須滿足的完整性約束條件,被稱作是關(guān)系的兩個不變性,應(yīng)該由關(guān)系系統(tǒng)自動支持。一、實體完整性(EntityIntegrity)規(guī)則2.1實體完整性規(guī)則若屬性A是基本關(guān)系R的主屬性,則屬性A不能取空值。例如在關(guān)系“SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE)”中,“研究生姓名POSTGRADUATE”屬性為主碼(假設(shè)研究生不會重名),則“研究生姓名”不能取空值。實體完整性規(guī)則規(guī)定基本關(guān)系的所有主屬性都不能取空值,而不僅是主碼整體不能取空值。例如學(xué)生選課關(guān)系“選修(學(xué)號,課程號,成績)”中,“學(xué)號、課程號”為主碼,則“學(xué)號”和“課程號”兩個屬性都不能取空值。對于實體完整性規(guī)則說明如下:(1)實體完整性規(guī)則是針對基本關(guān)系而言的。一個基本表通常對應(yīng)現(xiàn)實世界的一個實體集。例如學(xué)生關(guān)系對應(yīng)于學(xué)生的集合。(2)現(xiàn)實世界中的實體是可區(qū)分的,即它們具有某種唯一性標識。(3)相應(yīng)地,關(guān)系模型中以主碼作為唯一性標識。(4)主碼中的屬性即主屬性不能取空值。所謂空值就是“不知道”或“無意義”的值。如果主屬性取空值,就說明存在某個不可標識的實體,即存在不可區(qū)分的實體,這與第(2)點相矛盾,因此這個規(guī)則稱為實體完整性。二、參照完整性(ReferentialIntegrity)現(xiàn)實世界中的實體之間往往存在某種聯(lián)系,在關(guān)系模型中實體及實體間的聯(lián)系都是用關(guān)系來描述的。這樣就自然存在著關(guān)系與關(guān)系間的引用。參照完整性規(guī)則就是定義外碼與主碼之間的引用規(guī)則。規(guī)則2.2參照完整性規(guī)則若屬性(或?qū)傩越M)F是基本關(guān)系R的外碼,它與基本關(guān)系S的主碼Ks相對應(yīng)(基本關(guān)系R和S不一定是不同的關(guān)系),則對于R中每個元組在F上的值必須為:·或者取空值(F的每個屬性值均為空值);·或者等于S中某個元組的主碼值。例如,對于[例1],學(xué)生關(guān)系中每個元組的“專業(yè)號”屬性只能取下面兩類值:(1)空值,表示尚未給該學(xué)生分配專業(yè);(2)非空值,這時該值必須是專業(yè)關(guān)系中某個元組的“專業(yè)號”值,表示該學(xué)生不可能分配到一個不存在的專業(yè)中。即被參照關(guān)系“專業(yè)”中一定存在一個元組,它的主碼值等于該參照關(guān)系“學(xué)生”中的外碼值。對于[例2],按照參照完整性規(guī)則,“學(xué)號”和“課程號”屬性也可以取兩類值:空值或目標關(guān)系中已經(jīng)存在的值。但由于“學(xué)號”和“課程號”是選修關(guān)系中的主屬性,按照實體完整性規(guī)則,它們均不能取空值。所以選修關(guān)系中的“學(xué)號”和“課程號”屬性實際上只能取相應(yīng)被參照關(guān)系中已經(jīng)存在的主碼值。參照完整性規(guī)則中,R與S可以是同一個關(guān)系。例如對于[例3],按照參照完整性規(guī)則,“班長”屬性值可以取兩類值:(1)空值,表示該學(xué)生所在班級尚未選出班長;(2)非空值,這時該值必須是本關(guān)系中某個元組的學(xué)號值。三、用戶定義的完整性(User-definedIntegrity)任何關(guān)系數(shù)據(jù)庫系統(tǒng)都應(yīng)該支持實體完整性和參照完整性。除此之外,不同的關(guān)系數(shù)據(jù)庫系統(tǒng)根據(jù)其應(yīng)用環(huán)境的不同,往往還需要一些特殊的約束條件,用戶定義的完整性就是針對某一具體關(guān)系數(shù)據(jù)庫的約束條件。它反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語義要求。例如某個屬性必須取唯一值、某個非主屬性也不能取空值、某個屬性的取值范圍在0~100之間等。關(guān)系模型應(yīng)提供定義和檢驗這類完整性的機制,以便用統(tǒng)一的系統(tǒng)的方法處理它們,而不要由應(yīng)用程序承擔這一功能。第四節(jié)關(guān)系代數(shù)關(guān)系代數(shù)是一種抽象的查詢語言,是關(guān)系數(shù)據(jù)操縱語言的一種傳統(tǒng)表達方式,它是用對關(guān)系的運算來表達查詢的。任何一種運算都是將一定的運算符作用于一定的運算對象上,得到預(yù)期的運算結(jié)果。所以運算對象、運算符、運算結(jié)果是運算的三大要素。關(guān)系代數(shù)的運算對象是關(guān)系,運算結(jié)果亦為關(guān)系。關(guān)系代數(shù)用到的運算符包括四類:集合運算符、專門的關(guān)系運算符、算術(shù)比較符和邏輯運算符。關(guān)系代數(shù)的運算按運算符的不同可分為傳統(tǒng)的集合運算和專門的關(guān)系運算兩類。其中傳統(tǒng)的集合運算將關(guān)系看成元組的集合,其運算是從關(guān)系的“水平”方向即行的角度來進行。而專門的關(guān)系運算不僅涉及行而且涉及列。比較運算符和邏輯運算符是用來輔助專門的關(guān)系運算符進行操作的。2.4.1傳統(tǒng)的集合運算傳統(tǒng)的集合運算是二目運算,包括并、差、交、廣義笛卡爾積四種運算。2.4.2專門的關(guān)系運算專門的關(guān)系運算包括選擇、投影、連接、除等。為了敘述上的方便,先引入幾個記號。下面給出這些關(guān)系運算的定義:1.選擇(Selection)選擇又稱為限制(Restriction)。它是在關(guān)系R中選擇滿足給定條件的諸元組。2.投影(Projection)關(guān)系R上的投影是從R中選擇出若干屬性列組成新的關(guān)系。3.連接(Join)連接也稱為θ連接。它是從兩個關(guān)系的笛卡爾積中選取屬性間滿足一定條件的元組。4.除(Division)給定關(guān)系R(X,Y)和S(Y,Z),其中X,Y,Z為屬性組。R中的Y與S中的Y可以有不同的屬性名,但必須出自相同的域集。R與S的除運算得到一個新的關(guān)系P(X),P是R中滿足下列條件的元組在X屬性列上的投影:元組在X上分量值x的象集Yx包含S在Y上投影的集合。本節(jié)介紹了8種關(guān)系代數(shù)運算,其中并、差、笛卡爾積、投影和選擇5種運算為基本的運算。其他3種運算,即交、連接和除,均可以用這5種基本運算來表達。引進它們并不增加語言的能力,但可以簡化表達。關(guān)系代數(shù)中,這些運算經(jīng)有限次復(fù)合后形成的式子稱為關(guān)系代數(shù)表達式。關(guān)系代數(shù)語言中比較典型的例子是查詢語言ISBL(InformationSystemBaseLanguage)。ISBL語言由IBMUnitedKingdom研究中心研制,用于PRTV(PeterleeRelationalTestVehicle)實驗系統(tǒng)。第五節(jié)關(guān)系演算關(guān)系演算是以數(shù)理邏輯中的謂詞演算為基礎(chǔ)的。按謂詞變元的不同,關(guān)系演算可分為元組關(guān)系演算和域關(guān)系演算。本節(jié)先介紹元組關(guān)系演算,然后介紹域關(guān)系演算。在講解時都是先介紹一種具體的語言,再講解抽象的語言。2.5.1元組關(guān)系演算語言ALPHA元組關(guān)系演算以元組變量作為謂詞變元的基本對象。一種典型的元組關(guān)系演算語言是E.F.Codd提出的ALPHA語言。這一語言雖然沒有實際實現(xiàn),但關(guān)系數(shù)據(jù)庫管理系統(tǒng)INGRES所用的QUEL語言是參照ALPHA語言研制的,與ALPHA十分類似。ALPHA語言主要有GET,PUT,HOLD,UPDATE,DELETE,DROP6條語句,語句的基本格式是:操作語句工作空間名(表達式):操作條件
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浮雕墻施工方案
- 接線盒施工方案
- TSHAEPI 010-2024 污水處理廠溫室氣體排放監(jiān)測技術(shù)標準
- 2025年度購房按揭貸款提前還款合同
- 2025年度智能腳手架租賃及數(shù)據(jù)分析服務(wù)合同
- 二零二五年度生態(tài)農(nóng)業(yè)發(fā)展民間房屋抵押貸款合同范本
- 貴州航天醫(yī)院2025年度保安外包服務(wù)及應(yīng)急預(yù)案合同
- 二零二五年度出租車租賃與智能車載系統(tǒng)合作協(xié)議
- 2025年度酒店與企業(yè)年會住宿優(yōu)惠協(xié)議合同
- 二零二五年度創(chuàng)業(yè)投資資金托管管理合同
- 四年級上冊豎式計算100題及答案
- 結(jié)構(gòu)化在崗帶教手冊模板2.0
- 管道支吊架安裝工程標準圖冊直接參考使用
- 建筑施工新進員工三級安全教育培訓(xùn)課件
- 2024年濟南歷下區(qū)九年級中考英語二??荚囋囶}(含答案)
- 2024屆遼寧省沈陽市名校中考四模化學(xué)試題含答案解析
- 2024年4月自考00431教學(xué)設(shè)計試題
- 中石油施工安全
- 7S培訓(xùn)管理教材課件(-28張)
- 社會主義核心價值觀與西方普世價值對比
- 產(chǎn)學(xué)研合作的模式和成效
評論
0/150
提交評論