數(shù)據(jù)庫系統(tǒng)講義(一)_第1頁
數(shù)據(jù)庫系統(tǒng)講義(一)_第2頁
數(shù)據(jù)庫系統(tǒng)講義(一)_第3頁
數(shù)據(jù)庫系統(tǒng)講義(一)_第4頁
數(shù)據(jù)庫系統(tǒng)講義(一)_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

《數(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)的四個(gè)基本概念。

一、數(shù)據(jù)(DATA)

數(shù)據(jù)是數(shù)據(jù)庫中存儲的基本對象。數(shù)據(jù)在大多數(shù)人頭腦中的第一個(gè)反應(yīng)就是數(shù)字。其實(shí)數(shù)字只是

最簡單的一種數(shù)據(jù),是數(shù)據(jù)的一種傳統(tǒng)和狹義的理解。廣義的理解,數(shù)據(jù)的種類很多,文字、圖形、

圖像、聲音、學(xué)生的檔案記錄、貨物的運(yùn)輸情況等,這些都是數(shù)據(jù)。

可以對數(shù)據(jù)做如下定義:描述事物的符號記錄稱為數(shù)據(jù)。描述事物的符號可以是數(shù)字,也可以是

文字、圖形、圖像、聲音、語言等,數(shù)據(jù)有多種表現(xiàn)形式,它們都可以經(jīng)過數(shù)字化后存入計(jì)算機(jī)。

為了了解世界,交流信息,人們需要描述這些事物。在日常生活中直接用自然語言(如漢語)描

述。在計(jì)算機(jī)中,為了存儲和處理這些事物,就要抽出對這些事物感興趣的特征組成一個(gè)記錄來描述。

例如:在學(xué)生檔案中,如果人們最感興趣的是學(xué)生的姓名、性別、年齡、出生年月、籍貫、所在系別、

入學(xué)時(shí)間,那么可以這樣描述:

(李明,男,21,1972,江蘇,計(jì)算機(jī)系,1990)

因此這里的學(xué)生記錄就是數(shù)據(jù)。對于上面這條學(xué)生記錄,了解其含義的人會得到如下信息:李明

是個(gè)大學(xué)生,1972年出生,男,江蘇人,1990年考入計(jì)算機(jī)系;而不了解其語義的人則無法理解其含

義??梢?,數(shù)據(jù)的形式還不能完全表達(dá)其內(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ù)的倉庫。只不過這個(gè)倉庫是在計(jì)算機(jī)存儲設(shè)備上,而且數(shù)據(jù)是按

一定的格式存放的。

人們收集并抽取出一個(gè)應(yīng)用所需要的大量數(shù)據(jù)之后,應(yīng)將其保存起來以供進(jìn)一步加工處理,進(jìn)一

步抽取有用信息。在科學(xué)技術(shù)飛速發(fā)展的今天,人們的視野越來越廣,數(shù)據(jù)量急劇增加。過去人們把

數(shù)據(jù)存放在文件柜里,現(xiàn)在人們借助計(jì)算機(jī)和數(shù)據(jù)庫技術(shù)科學(xué)地保存和管理大量的復(fù)雜的數(shù)據(jù),以便

能方便而充分地利用這些寶貴的信息資源。

所謂數(shù)據(jù)庫是長期儲存在計(jì)算機(jī)內(nèi)、有組織的、可共享的數(shù)據(jù)集合。數(shù)據(jù)庫中的數(shù)據(jù)按一定的數(shù)

據(jù)模型組織、描述和儲存,具有較小的冗余度、較高的數(shù)據(jù)獨(dú)立性和易擴(kuò)展性,并可為各種用戶共享。

三、數(shù)據(jù)庫管理系統(tǒng)(DataBaseManagementSystem,簡稱DBMS)

了解了數(shù)據(jù)和數(shù)據(jù)庫的概念,下一個(gè)問題就是如何科學(xué)地組織和存儲數(shù)據(jù),如何高效地獲取和維

護(hù)數(shù)據(jù)。完成這個(gè)任務(wù)的是一個(gè)系統(tǒng)軟件一一數(shù)據(jù)庫管理系統(tǒng).

數(shù)據(jù)庫管理系統(tǒng)是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件。它的主要功能包括以下幾個(gè)方

面:

1.數(shù)據(jù)定義功能

DBMS提供數(shù)據(jù)定義語言(DataDefinitionLanguage,簡稱DDL),用戶通過它可以方便地定義對數(shù)

據(jù)庫中的數(shù)據(jù)對象進(jìn)行定義。

2.數(shù)據(jù)操縱功能

DBMS還提供數(shù)據(jù)操縱語言(DataManipulationLanguage,簡稱DML),用戶可以使用DML操縱

數(shù)據(jù)實(shí)現(xiàn)對數(shù)據(jù)庫的基本操作,如查詢、插入、刪除和修改等。

3.數(shù)據(jù)庫的運(yùn)行管理

數(shù)據(jù)庫在建立、運(yùn)用和維護(hù)時(shí)由數(shù)據(jù)庫管理系統(tǒng)統(tǒng)一管理、統(tǒng)一控制,以保證數(shù)據(jù)的安全性、完

整性、多用戶對數(shù)據(jù)的并發(fā)使用及發(fā)生故障后的系統(tǒng)恢復(fù)。

4.數(shù)據(jù)庫的建立和維護(hù)功能

它包括數(shù)據(jù)庫初始數(shù)據(jù)的輸入、轉(zhuǎn)換功能,數(shù)據(jù)庫的轉(zhuǎn)儲、恢復(fù)功能,數(shù)據(jù)庫的重組織功能和性

能監(jiān)視、分析功能等。這些功能通常是由一些實(shí)用程序完成的。

數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的一個(gè)重要組成部分。

四、數(shù)據(jù)庫系統(tǒng)(DataBaseSystem,簡稱DBS)

數(shù)據(jù)庫系統(tǒng)是指在計(jì)算機(jī)系統(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)當(dāng)指出的是,數(shù)據(jù)庫的建立、使用和維護(hù)等工

作只靠一個(gè)DBMS遠(yuǎn)遠(yuǎn)不夠,還要有專門的人員來完成,這些人被稱為數(shù)據(jù)庫管理員(DataBase

Administrator,簡稱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ù)進(jìn)行收集、存儲、加工和傳播的一系列活動(dòng)的總和。數(shù)據(jù)管理則是指

對數(shù)據(jù)進(jìn)行分類、組織、編碼、存儲、檢索和維護(hù),它是數(shù)據(jù)處理的中心問題。

人們借助計(jì)算機(jī)進(jìn)行數(shù)據(jù)處理是近三十年的事。研制計(jì)算機(jī)的初衷是利用它進(jìn)行復(fù)雜的科學(xué)計(jì)算。

隨著計(jì)算機(jī)技術(shù)的發(fā)展,其應(yīng)用遠(yuǎn)遠(yuǎn)地超出了這個(gè)范圍。在應(yīng)用需求的推動(dòng)下,在計(jì)算機(jī)硬件、軟件

發(fā)展的基礎(chǔ)上,數(shù)據(jù)管理技術(shù)經(jīng)歷了人工管理、文件系統(tǒng)、數(shù)據(jù)庫系統(tǒng)三個(gè)階段。

1.1.3數(shù)據(jù)庫系統(tǒng)的特點(diǎn)

與人工管理和文件系統(tǒng)相比,數(shù)據(jù)庫系統(tǒng)的特點(diǎn)主要有以下幾個(gè)方面。

一、數(shù)據(jù)結(jié)構(gòu)化

數(shù)據(jù)結(jié)構(gòu)化是數(shù)據(jù)庫與文件系統(tǒng)的根本區(qū)別。

在文件系統(tǒng)中,相互獨(dú)立的文件的記錄內(nèi)部是有結(jié)構(gòu)的。傳統(tǒng)文件的最簡單形式是等長同格式的

記錄集合。

二、數(shù)據(jù)的共享性高,冗余度低,易擴(kuò)充

數(shù)據(jù)庫系統(tǒng)從整體角度看待和描述數(shù)據(jù),數(shù)據(jù)不再面向某個(gè)應(yīng)用而是面向整個(gè)系統(tǒng),因此數(shù)據(jù)可

以被多個(gè)用戶、多個(gè)應(yīng)用共享使用。數(shù)據(jù)共享可以大大減少數(shù)據(jù)冗余,節(jié)約存儲空間。數(shù)據(jù)共享還能

夠避免數(shù)據(jù)之間的不相容性與不一致性。

所謂數(shù)據(jù)的不一致性是指同一數(shù)據(jù)不同拷貝的值不一樣。采用人工管理或文件系統(tǒng)管理時(shí),由于

數(shù)據(jù)被重復(fù)存儲,當(dāng)不同的應(yīng)用使用和修改不同的拷貝時(shí)就很容易造成數(shù)據(jù)的不一致。在數(shù)據(jù)庫中數(shù)

據(jù)共享,減少了由于數(shù)據(jù)冗余(同?數(shù)據(jù)存儲在不同的數(shù)據(jù)文件中的現(xiàn)象)造成的不一致現(xiàn)象。

由于數(shù)據(jù)面向整個(gè)系統(tǒng),是有結(jié)構(gòu)的數(shù)據(jù),不僅可以被多個(gè)應(yīng)用共享使用,而且容易增加新的應(yīng)

用,這就使得數(shù)據(jù)庫系統(tǒng)彈性大,易于擴(kuò)充,可以適應(yīng)各種用戶的要求??梢匀≌w數(shù)據(jù)的各種子集

用于不同的應(yīng)用系統(tǒng),當(dāng)應(yīng)用需求改變或增加時(shí),只要重新選取不同的子集或加上一部分?jǐn)?shù)據(jù)便可以

滿足新的需求。

三、數(shù)據(jù)獨(dú)立性高

數(shù)據(jù)獨(dú)立性是數(shù)據(jù)庫領(lǐng)域中一個(gè)常用術(shù)語,包括數(shù)據(jù)的物理獨(dú)立性和數(shù)據(jù)的邏輯獨(dú)立性。

物理獨(dú)立性是指用戶的應(yīng)用程序與存儲在磁盤上的數(shù)據(jù)庫中數(shù)據(jù)是相互獨(dú)立的。也就是說,數(shù)據(jù)

在磁盤上的數(shù)據(jù)庫中怎樣存儲是由DBMS管理的,用戶程序不需要了解,應(yīng)用程序要處理的只是數(shù)據(jù)

的邏輯結(jié)構(gòu),這樣當(dāng)數(shù)據(jù)的物理存儲改變了,應(yīng)用程序不用改變。

邏輯獨(dú)立性是指用戶的應(yīng)用程序與數(shù)據(jù)庫的邏輯結(jié)構(gòu)是相互獨(dú)立的,也就是說,數(shù)據(jù)的邏輯結(jié)構(gòu)

改變了,用戶程序也可以不變。

數(shù)據(jù)獨(dú)立性是由DBMS的二級映象功能來保證的,將在下面討論。

數(shù)據(jù)與程序的獨(dú)立,把數(shù)據(jù)的定義從程序中分離出去,加上數(shù)據(jù)的存取又由DBMS負(fù)責(zé),從而簡

化了應(yīng)用程序的編制,大大減少了應(yīng)用程序的維護(hù)和修改。

四、數(shù)據(jù)由DBMS統(tǒng)一管理和控制

數(shù)據(jù)庫的共享是并發(fā)的(Concurrency)共享,即多個(gè)用戶可以同時(shí)存取數(shù)據(jù)庫中的數(shù)據(jù)甚至可以

同時(shí)存取數(shù)據(jù)庫中同一個(gè)數(shù)據(jù)。

為此,DBMS還必須提供以下幾方面的數(shù)據(jù)控制功能:

(1)數(shù)據(jù)的安全性(Security)保護(hù)

數(shù)據(jù)的安全性是指保護(hù)數(shù)據(jù)以防止不合法的使用造成的數(shù)據(jù)的泄密和破壞。使每個(gè)用戶只能按規(guī)

定,對某些數(shù)據(jù)以某些方式進(jìn)行使用和處理。

(2)數(shù)據(jù)的完整性(Integrity)檢查

數(shù)據(jù)的完整性指數(shù)據(jù)的正確性、有效性和相容性。完整性檢查將數(shù)據(jù)控制在有效的范圍內(nèi),或保

證數(shù)據(jù)之間滿足一定的關(guān)系。

(3)并發(fā)(Concurrency)控制

當(dāng)多個(gè)用戶的并發(fā)進(jìn)程同時(shí)存取、修改數(shù)據(jù)庫時(shí),可能會發(fā)生相互干擾而得到錯(cuò)誤的結(jié)果或使得

數(shù)據(jù)庫的完整性遭到破壞,因此必須對多用戶的并發(fā)操作加以控制和協(xié)調(diào)。

(4)數(shù)據(jù)庫恢復(fù)(Recovery)

計(jì)算機(jī)系統(tǒng)的硬件故障、軟件故障、操作員的失誤以及故意的破壞也會影響數(shù)據(jù)庫中數(shù)據(jù)的正確

性,甚至造成數(shù)據(jù)庫部分或全部數(shù)據(jù)的丟失。DBMS必須具有將數(shù)據(jù)庫從錯(cuò)誤狀態(tài)恢復(fù)到某一已知的

正確狀態(tài)(亦稱為完整狀態(tài)或一致狀態(tài))的功能,這就是數(shù)據(jù)庫的恢復(fù)功能。

綜上所述,數(shù)據(jù)庫是長期存儲在計(jì)算機(jī)內(nèi)有組織的大量的共享的數(shù)據(jù)集合。它可以供各種用戶共

享,具有最小冗余度和較高的數(shù)據(jù)獨(dú)立性。DBMS在數(shù)據(jù)庫建立、運(yùn)用和維護(hù)時(shí)對數(shù)據(jù)庫進(jìn)行統(tǒng)一控

制,以保證數(shù)據(jù)的完整性、安全性,并在多用戶同時(shí)使用數(shù)據(jù)庫時(shí)進(jìn)行并發(fā)控制,在發(fā)生故障后對系

統(tǒng)進(jìn)行恢復(fù)。

數(shù)據(jù)庫系統(tǒng)的出現(xiàn)使信息系統(tǒng)從以加工數(shù)據(jù)的程序?yàn)橹行霓D(zhuǎn)向圍繞共享的數(shù)據(jù)庫為中心的新階

段。這樣既便于數(shù)據(jù)的集中管理,又有利于應(yīng)用程序的研制和維護(hù),提高了數(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世紀(jì)80

年代后不僅在大型機(jī)上,在多數(shù)微機(jī)上也配置了DBMS,使數(shù)據(jù)庫技術(shù)得到更加廣泛的應(yīng)用和普及。

數(shù)據(jù)庫技術(shù)是計(jì)算機(jī)領(lǐng)域中發(fā)展最快的技術(shù)之一。數(shù)據(jù)庫技術(shù)的發(fā)展是沿著數(shù)據(jù)模型的主線展開

的。下面討論數(shù)據(jù)模型。

第二節(jié)數(shù)據(jù)模型

是具體的模型。一眼望去,就會使人聯(lián)想到真實(shí)生活中的事物。模型是現(xiàn)實(shí)世界特征的模擬和抽象。

數(shù)據(jù)模型(DataModel)也是一種模型,它是現(xiàn)實(shí)世界數(shù)據(jù)特征的抽象。

數(shù)據(jù)庫是某個(gè)企業(yè)、組織或部門所涉及的數(shù)據(jù)的綜合,它不僅要反映數(shù)據(jù)本身的內(nèi)容,而且要反

映數(shù)據(jù)之間的聯(lián)系。由于計(jì)算機(jī)不可能直接處理現(xiàn)實(shí)世界中的具體事物,所以人們必須事先把具體事

物轉(zhuǎn)換成計(jì)算機(jī)能夠處理的數(shù)據(jù)。在數(shù)據(jù)庫中用數(shù)據(jù)模型這個(gè)工具來抽象、表示和處理現(xiàn)實(shí)世界中的

數(shù)據(jù)和信息。通俗地講數(shù)據(jù)模型就是現(xiàn)實(shí)世界的模擬。

現(xiàn)有的數(shù)據(jù)庫系統(tǒng)均是基于某種數(shù)據(jù)模型的。因此,了解數(shù)據(jù)模型的基本概念是學(xué)習(xí)數(shù)據(jù)庫的基

礎(chǔ)。

數(shù)據(jù)模型應(yīng)滿足三方面要求:一是能比較真實(shí)地模擬現(xiàn)實(shí)世界;二是容易為人所理解;三是便于

在計(jì)算機(jī)上實(shí)現(xiàn)。一種數(shù)據(jù)模型要很好地滿足這三方面的要求在目前尚很困難。在數(shù)據(jù)庫系統(tǒng)中針對

不同的使用對象和應(yīng)用目的,采用不同的數(shù)據(jù)模型。

不同的數(shù)據(jù)模型實(shí)際上是提供給我們模型化數(shù)據(jù)和信息的不同工具。根據(jù)模型應(yīng)用的不同目的,

可以將這些模型劃分為兩類,它們分屬于兩個(gè)不同的層次。

第一類模型是截念模第也稱信息模型,它是按用戶的觀點(diǎn)來對數(shù)據(jù)和信息建模,主要用于數(shù)據(jù)

庫設(shè)計(jì)。員一類模型姥數(shù)據(jù)模型,主要包括網(wǎng)狀模型、層次模型、關(guān)系模型等,它是按計(jì)算機(jī)系統(tǒng)的

觀點(diǎn)對數(shù)據(jù)建模,主要用于DBMS的實(shí)現(xiàn)。

數(shù)據(jù)模型是數(shù)據(jù)庫系統(tǒng)的核心和基礎(chǔ)。各種機(jī)器上實(shí)現(xiàn)的DBMS軟件都是基于某種數(shù)據(jù)模型的。

為了把現(xiàn)實(shí)世界中的具體事物抽象、組織為某一DBMS支持的數(shù)據(jù)模型,人們常常首先將現(xiàn)實(shí)世

界抽象為信息世界,然后將信息世界轉(zhuǎn)換為機(jī)器世界。也就是說,首先把現(xiàn)實(shí)世界中的客觀對象抽象

為某一種信息結(jié)構(gòu),這種信息結(jié)構(gòu)并不依賴于具體的計(jì)算機(jī)系統(tǒng),不是某一個(gè)DBMS支持的數(shù)據(jù)模型,

而是概念級的模型;然后再把概念模型轉(zhuǎn)換為計(jì)算機(jī)上某一DBMS支持的數(shù)據(jù)模型。

1.2.1數(shù)據(jù)模型的組成要素

一般地講,數(shù)據(jù)模型是嚴(yán)格定義的一組概念的集合。這些概念精確地描述了系統(tǒng)的靜態(tài)特性、動(dòng)

態(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ù)項(xiàng)、記錄,關(guān)系模型中的域、屬性、關(guān)系

等;一類是與數(shù)據(jù)之間聯(lián)系有關(guān)的對象,例如網(wǎng)狀模型中的系型(SetType)?

數(shù)據(jù)結(jié)構(gòu)是刻畫一個(gè)數(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ù)庫中各種對象(型)的實(shí)例(值)允許執(zhí)行的操作的集合,包括操作及有關(guān)

的操作規(guī)則。數(shù)據(jù)庫主要有檢索和更新(包括插入、刪除、修改)兩大類操作。數(shù)據(jù)模型必須定義這

些操作的確切含義、操作符號、操作規(guī)則(如優(yōu)先級)以及實(shí)現(xiàn)操作的語言。數(shù)據(jù)操作是對系統(tǒng)動(dò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í)體完整性和參照完整性兩個(gè)條件。

此外,數(shù)據(jù)模型還應(yīng)該提供定義完整性約束條件的機(jī)制,以反映具體應(yīng)用所涉及的數(shù)據(jù)必須遵守

的特定的語義約束條件。例如,在學(xué)校的數(shù)據(jù)庫中規(guī)定大學(xué)生入學(xué)年齡不得超過30歲,碩士研究生入

學(xué)年齡不得超過38歲,學(xué)生累計(jì)成績不得有三門以上不及格等。

1.2.2概念模型

概念模型實(shí)際上是現(xiàn)實(shí)世界到機(jī)器世界的一個(gè)中間層次。

概念模型用于信息世界的建模,是現(xiàn)實(shí)世界到信息世界的第一層抽象,是數(shù)據(jù)庫設(shè)計(jì)人員進(jìn)行數(shù)

據(jù)庫設(shè)計(jì)的有力工具,也是數(shù)據(jù)庫設(shè)計(jì)人員和用戶之間進(jìn)行交流的語言,因此概念模型一方面應(yīng)該具

有較強(qiáng)的語義表達(dá)能力,能夠方便、直接地表達(dá)應(yīng)用中的各種語義知識,另一方面它還應(yīng)該簡單、清

晰、易于用戶理解。

一、信息世界中的基本概念

信息世界涉及的概念主要有:

(1)實(shí)體(Entity)

客觀存在并可相互區(qū)別的事物稱為實(shí)體。實(shí)體可以是具體的人、事、物,也可以是抽象的概念或

聯(lián)系,例如,一個(gè)職工、一個(gè)學(xué)生、一個(gè)部門、一門課、學(xué)生的一次選課、部門的一次訂貨、老師與

系的工作關(guān)系(即某位老師在某系工作)等都是實(shí)體。

(2)屬性(Attribute)

實(shí)體所具有的某一特性稱為屬性。一個(gè)實(shí)體可以由若干個(gè)屬性來刻畫。例如學(xué)生實(shí)體可以由學(xué)號、

姓名、性別、出生年份、系、入學(xué)時(shí)間等屬性組成。(94002268,張山,男,1976,計(jì)算機(jī)系,1994)

這些屬性組合起來表征了一個(gè)學(xué)生。

(3)碼(Key)

唯一標(biāo)識實(shí)體的屬性集稱為碼。例如學(xué)號是學(xué)生實(shí)體的碼。

(4)域(Domain)

屬性的取值范圍稱為該屬性的域。例如,學(xué)號的域?yàn)?位整數(shù),姓名的域?yàn)樽址希挲g的

域?yàn)樾∮?8的整數(shù),性別的域?yàn)?男,女)。

(5)實(shí)體型(EntityType)

具有相同屬性的實(shí)體必然具有共同的特征和性質(zhì)。用實(shí)體名及其屬性名集合來抽象和刻畫同類實(shí)

體,稱為實(shí)體型。例如,學(xué)生(學(xué)號,姓名,性別,出生年份,系,入學(xué)時(shí)間)就是一個(gè)實(shí)體型。

(6)實(shí)體集(EntitySet)

同型實(shí)體的集合稱為實(shí)體集。例如,全體學(xué)生就是一個(gè)實(shí)體集。

(7)聯(lián)系(Relationship)

在現(xiàn)實(shí)世界中,事物內(nèi)部以及事物之間是有聯(lián)系的,這些聯(lián)系在信息世界中反映為實(shí)體(型)內(nèi)

部的聯(lián)系和實(shí)體(型)之間的聯(lián)系。實(shí)體內(nèi)部的聯(lián)系通常是指組成實(shí)體的各屬性之間的聯(lián)系。實(shí)體之

間的聯(lián)系通常是指不同實(shí)體集之間的聯(lián)系。

兩個(gè)實(shí)體型之間的聯(lián)系可以分為三類:

①一對一聯(lián)系(1:1)

如果對于實(shí)體集A中的每一個(gè)實(shí)體,實(shí)體集B中至多有一個(gè)(也可以沒有)實(shí)體與之聯(lián)系,反之

亦然,則稱實(shí)體集A與實(shí)體集B具有一對一聯(lián)系,記為1:1。

例如,學(xué)校里面,一個(gè)班級只有一個(gè)正班長,而一個(gè)班長只在一個(gè)班中任職,則班級與班長之間

具有一對一聯(lián)系。

②一對多聯(lián)系(1:n)

如果對于實(shí)體集A中的每一個(gè)實(shí)體,實(shí)體集B中有n個(gè)實(shí)體(n》0)與之聯(lián)系,反之,對于實(shí)體

集B中的每一個(gè)實(shí)體,實(shí)體集A中至多只有一個(gè)實(shí)體與之聯(lián)系,則稱實(shí)體集A與實(shí)體集B有一對多

聯(lián)系,記為1:n?

例如,一個(gè)班級中有若干名學(xué)生,而每個(gè)學(xué)生只在一個(gè)班級中學(xué)習(xí),則班級與學(xué)生之間具有一對

多聯(lián)系。

③多對多聯(lián)系(m:n)

如果對于實(shí)體集A中的每一個(gè)實(shí)體,實(shí)體集B中有n個(gè)實(shí)體(n20)與之聯(lián)系,反之,對于實(shí)體

集B中的每一個(gè)實(shí)體,實(shí)體集A中也有m個(gè)實(shí)體(m20)與之聯(lián)系,則稱實(shí)體集A與實(shí)體集B具有

多對多聯(lián)系,記為m:n。

二、概念模型的表示方法

概念模型是對信息世界建模,所以概念模型應(yīng)該能夠方便、準(zhǔn)確地表示出上述信息世界中的常用

概念。概念模型的表示方法很多,其中最為著名最為常用的是P.P.S.Chen于1976年提出的實(shí)體-聯(lián)系

方法(Entity-RelationshipApproach)?該方法用E-R圖來描述現(xiàn)實(shí)世界的概念模型,E-R方法也稱為

E-R模型。

這里介紹E-R圖的要點(diǎn)。

E-R圖提供了表示實(shí)體型、屬性和聯(lián)系的方法:

?實(shí)體型:用矩形表示,矩形框內(nèi)寫明實(shí)體名。

?屬性:用橢圓形表示,并用無向邊將其與相應(yīng)的實(shí)體連接起來。

?聯(lián)系:用菱形表示,菱形框內(nèi)寫明聯(lián)系名,并用無向邊分別與有關(guān)實(shí)體連接起來,同時(shí)在無向

邊旁標(biāo)上聯(lián)系的類型(1:1,l:n或m:n)。

需要注意的是,如果一個(gè)聯(lián)系具有屬性,則這些屬性也要用無向邊與該聯(lián)系連接起來。

實(shí)體-聯(lián)系方法是抽象和描述現(xiàn)實(shí)世界的有力工具。用E-R圖表示的概念模型獨(dú)立于具體的DBMS

所支持的數(shù)據(jù)模型,它是各種數(shù)據(jù)模型的共同基礎(chǔ),因而比數(shù)據(jù)模型更一般、更抽象、更接近現(xiàn)實(shí)世

界。

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世紀(jì)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世紀(jì)80年代以來,面向?qū)ο蟮姆椒ê图夹g(shù)在計(jì)算機(jī)各個(gè)領(lǐng)域,包括程序設(shè)計(jì)語言、軟件工程、

信息系統(tǒng)設(shè)計(jì)?、計(jì)算機(jī)硬件設(shè)計(jì)等各方面都產(chǎn)生了深遠(yuǎn)的影響,也促進(jìn)數(shù)據(jù)庫中面向?qū)ο髷?shù)據(jù)模型的

研究和發(fā)展。

本章簡要介紹層次模型、網(wǎng)狀模型和關(guān)系模型。

數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和完整性約束條件這三個(gè)方面的內(nèi)容完整地描述了一個(gè)數(shù)據(jù)模型,其中數(shù)據(jù)

結(jié)構(gòu)是刻畫模型性質(zhì)的最基本的方面。為了使讀者對數(shù)據(jù)模型有一個(gè)基本認(rèn)識,下面著重介紹三種模

型的數(shù)據(jù)結(jié)構(gòu)。

注意:這里講的數(shù)據(jù)模型都是邏輯上的,也就是說是用戶眼中看到的數(shù)據(jù)范圍。同時(shí)它們又都是

能用某種語言描述,使計(jì)算機(jī)系統(tǒng)能夠理解,被數(shù)據(jù)庫管理系統(tǒng)支持的數(shù)據(jù)視圖。這些數(shù)據(jù)模型將以

一定的方式存儲于數(shù)據(jù)庫系統(tǒng)中,這是DBMS的功能,是DBMS中的存儲模型。

在非關(guān)系模型中,實(shí)體用記錄表示,實(shí)體的屬性對應(yīng)記錄的數(shù)據(jù)項(xiàng)(或字段)。實(shí)體之間的聯(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公司推出的第一個(gè)大型的商用數(shù)據(jù)庫管理系統(tǒng),曾經(jīng)得到廣泛的使用。

層次模型用樹形結(jié)構(gòu)來表示各類實(shí)體以及實(shí)體間的聯(lián)系?,F(xiàn)實(shí)世界中許多實(shí)體之間的聯(lián)系本來就

呈現(xiàn)出一種很自然的層次關(guān)系,如行政機(jī)構(gòu)、家族關(guān)系等。

一、層次數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)

在數(shù)據(jù)庫中定義滿足下面兩個(gè)條件的基本層次聯(lián)系的集合為層次模型。

(1)有且只有一個(gè)結(jié)點(diǎn)沒有雙親結(jié)點(diǎn),這個(gè)結(jié)點(diǎn)稱為根結(jié)點(diǎn);

(2)根以外的其他結(jié)點(diǎn)有且只有一個(gè)雙親結(jié)點(diǎn)。

在層次模型中,每個(gè)結(jié)點(diǎn)表示一個(gè)記錄類型,記錄(類型)之間的聯(lián)系用結(jié)點(diǎn)之間的連線(有向

邊)表示,這種聯(lián)系是父子之間的一對多的聯(lián)系。這就使得層次數(shù)據(jù)庫系統(tǒng)只能處理一對多的實(shí)體聯(lián)

系。

每個(gè)記錄類型可包含若干個(gè)字段,這里,記錄類型描述的是實(shí)體,字段描述實(shí)體的屬性。各個(gè)記

錄類型及其字段都必須命名。各個(gè)記錄類型、同一記錄類型中各個(gè)字段不能同名。每個(gè)記錄類型可以

定義一個(gè)排序字段,也稱為碼字段,如果定義該排序字段的值是唯一的,則它能唯一地標(biāo)識一個(gè)記錄

值。

一個(gè)層次模型在理論上可以包含任意有限個(gè)記錄型和字段,但任何實(shí)際的系統(tǒng)都會因?yàn)榇鎯θ萘?/p>

或?qū)崿F(xiàn)復(fù)雜度而限制層次模型中包含的記錄型個(gè)數(shù)和字段的個(gè)數(shù)。

在層次模型中,同一雙親的子女結(jié)點(diǎn)稱為兄弟結(jié)點(diǎn)(Twin或Sibling),沒有子女結(jié)點(diǎn)的結(jié)點(diǎn)稱為

葉結(jié)點(diǎn)。

二、多對多聯(lián)系在層次模型中的表示

前面已經(jīng)說過,層次數(shù)據(jù)模型只能直接表示一對多(包括一對一)的聯(lián)系,那么另一種常見聯(lián)系-

多對多聯(lián)系能否在層次模型中表示呢?答案是肯定的,否則層次模型就無法真正反映現(xiàn)實(shí)世界了。但

是用層次模型表示多對多聯(lián)系,必須首先將其分解成一對多聯(lián)系。分解方法有兩種:冗余結(jié)點(diǎn)法和虛

擬結(jié)點(diǎn)法。下面用一個(gè)例子來說明這兩種分解方法。

二、層次模型的數(shù)據(jù)操縱與完整性約束

層次模型的數(shù)據(jù)操縱主要有查詢、插入、刪除和更新。進(jìn)行插入、刪除、更新操作時(shí)要滿足層次

模型的完整性約束條件。

進(jìn)行插入操作時(shí),如果沒有相應(yīng)的雙親結(jié)點(diǎn)值就不能插入子女結(jié)點(diǎn)值。例如在圖1.18的層次數(shù)據(jù)

庫中,若新調(diào)入一名教師,但尚未分配到某個(gè)教研室,這時(shí)就不能將新教員插入到數(shù)據(jù)庫中。

進(jìn)行刪除操作時(shí),如果刪除雙親結(jié)點(diǎn)值,則相應(yīng)的子女結(jié)點(diǎn)值也被同時(shí)刪除。例如在圖1.18的層

次數(shù)據(jù)庫中,若刪除網(wǎng)絡(luò)教研室,則該教研室所有老師的數(shù)據(jù)將全部丟失。

進(jìn)行更新操作時(shí),應(yīng)更新所有相應(yīng)記錄,以保證數(shù)據(jù)的一致性。例如在圖1.20(b)的層次模型中,

如果一個(gè)學(xué)生要改姓名,則兩處學(xué)生記錄值的姓名字段都需更新。

三、層次數(shù)據(jù)模型的存儲結(jié)構(gòu)

層次數(shù)據(jù)庫中不僅要存儲數(shù)據(jù)本身,還要存儲數(shù)據(jù)之間的層次聯(lián)系。層次模型數(shù)據(jù)的存儲常常是

和數(shù)據(jù)之間聯(lián)系的存儲結(jié)合在一起的。

四、層次模型的優(yōu)缺點(diǎn)

層次模型的優(yōu)點(diǎn)主要有:

?層次數(shù)據(jù)模型本身比較簡單。

?對于實(shí)體間聯(lián)系是固定的,且預(yù)先定義好的應(yīng)用系統(tǒng),采用層次模型來實(shí)現(xiàn),其性能優(yōu)于關(guān)系

模型,不低于網(wǎng)狀模型。

?層次數(shù)據(jù)模型提供了良好的完整性支持。

層次模型的缺點(diǎn)主要有:

?現(xiàn)實(shí)世界中很多聯(lián)系是非層次性的,如多對多聯(lián)系、一個(gè)結(jié)點(diǎn)具有多個(gè)雙親等,層次模型表示

這類聯(lián)系的方法很笨拙,只能通過引入冗余數(shù)據(jù)(易產(chǎn)生不一致性)或創(chuàng)建非自然的數(shù)據(jù)組織(引入

虛擬結(jié)點(diǎn))來解決。

?對插入和刪除操作的限制比較多。

?查詢子女結(jié)點(diǎn)必須通過雙親結(jié)點(diǎn)。

?由于結(jié)構(gòu)嚴(yán)密,層次命令趨于程序化。

可見用層次模型對具有一對多的層次關(guān)系的部門描述非常自然、直觀,容易理解。這是層次數(shù)據(jù)

庫的突出優(yōu)點(diǎn)。

1.2.5網(wǎng)狀模型

在現(xiàn)實(shí)世界中事物之間的聯(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(ConferenceOnDataSystem

Language)下屬的數(shù)據(jù)庫任務(wù)組(DataBaseTaskGroup,簡稱DBTG)提出的一個(gè)系統(tǒng)方案。DBTG

系統(tǒng)雖然不是實(shí)際的軟件系統(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ù)庫中,把滿足以下兩個(gè)條件的基本層次聯(lián)系集合稱為網(wǎng)狀模型:

(1)允許一個(gè)以上的結(jié)點(diǎn)無雙親;

(2)一個(gè)結(jié)點(diǎn)可以有多于一個(gè)的雙親。

網(wǎng)狀模型是一種比層次模型更具普遍性的結(jié)構(gòu),它去掉了層次模型的兩個(gè)限制,允許多個(gè)結(jié)點(diǎn)沒

有雙親結(jié)點(diǎn),允許結(jié)點(diǎn)有多個(gè)雙親結(jié)點(diǎn),此外它還允許兩個(gè)結(jié)點(diǎn)之間有多種聯(lián)系(稱之為復(fù)合聯(lián)系)。

因此網(wǎng)狀模型可以更直接地去描述現(xiàn)實(shí)世界。而層次模型實(shí)際上是網(wǎng)狀模型的一個(gè)特例。

與層次模型一樣,網(wǎng)狀模型中每個(gè)結(jié)點(diǎn)表示一個(gè)記錄類型(實(shí)體),每個(gè)記錄類型可包含若干個(gè)字

段(實(shí)體的屬性),結(jié)點(diǎn)間的連線表示記錄類型(實(shí)體)之間一對多的父子聯(lián)系。

二、網(wǎng)狀數(shù)據(jù)模型的操縱與完整性約束

網(wǎng)狀數(shù)據(jù)模型-一般來說沒有層次模型那樣嚴(yán)格的完整性約束條件,但具體的網(wǎng)狀數(shù)據(jù)庫系統(tǒng)(如

DBTG)對數(shù)據(jù)操縱都加了一些限制,提供了一定的完整性約束。

DBTG在模式DDL中提供了定義DBTG數(shù)據(jù)庫完整性的若干概念和語句,主要有:

(1)支持記錄碼的概念,碼即唯一標(biāo)識記錄的數(shù)據(jù)項(xiàng)的集合。例如,學(xué)生記錄(如圖1.25)中學(xué)

號是碼,因此數(shù)據(jù)庫中不允許學(xué)生記錄中學(xué)號出現(xiàn)重復(fù)值。

(2)保證一個(gè)聯(lián)系中雙親記錄和子女記錄之間是一對多的聯(lián)系。

(3)可以支持雙親記錄和子女記錄之間某些約束條件。例如,有些子女記錄要求雙親記錄存在才

能插入,雙親記錄刪除時(shí)也連同刪除。例如圖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)鍵是如何實(shí)現(xiàn)記錄之間的聯(lián)系。常用的方法是鏈接法,包括單向鏈

接、雙向鏈接、環(huán)狀鏈接、向首鏈接等,此外還有其他實(shí)現(xiàn)方法,如指引元陣列法、二進(jìn)制陣列法、

索引法等依具體系統(tǒng)不同而不同。

四、網(wǎng)狀數(shù)據(jù)模型的優(yōu)缺點(diǎn)

網(wǎng)狀數(shù)據(jù)模型的優(yōu)點(diǎn)主要有:

-能夠更為直接地描述現(xiàn)實(shí)世界,如一個(gè)結(jié)點(diǎn)可以有多個(gè)雙親。

?具有良好的性能,存取效率較高。

網(wǎng)狀數(shù)據(jù)模型的缺點(diǎn)主要有:

-結(jié)構(gòu)比較復(fù)雜,而且隨著應(yīng)用環(huán)境的擴(kuò)大,數(shù)據(jù)庫的結(jié)構(gòu)就變得越來越復(fù)雜,不利于最終用戶

掌握。

?其DDL,DML語言復(fù)雜,用戶不容易使用。

由于記錄之間聯(lián)系是通過存取路徑實(shí)現(xiàn)的,應(yīng)用程序在訪問數(shù)據(jù)時(shí)必須選擇適當(dāng)?shù)拇嫒÷窂?,?/p>

此,用戶必須了解系統(tǒng)結(jié)構(gòu)的細(xì)節(jié),加重了編寫應(yīng)用程序的負(fù)擔(dān)。

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圖靈獎(jiǎng)。

20世紀(jì)80年代以來,計(jì)算機(jī)廠商新推出的數(shù)據(jù)庫管理系統(tǒng)幾乎都支持關(guān)系模型,非關(guān)系系統(tǒng)的

產(chǎn)品也大都加上了關(guān)系接口。數(shù)據(jù)庫領(lǐng)域當(dāng)前的研究工作也都是以關(guān)系方法為基礎(chǔ)。因此本書的重點(diǎn)

也將放在關(guān)系數(shù)據(jù)庫上,下面四章將詳細(xì)講解關(guān)系數(shù)據(jù)庫。

一、關(guān)系數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)

關(guān)系模型與以往的模型不同,它是建立在嚴(yán)格的數(shù)學(xué)概念的基礎(chǔ)上的。這里只簡單勾畫一下關(guān)系

模型。在用戶觀點(diǎn)下,關(guān)系模型中數(shù)據(jù)的邏輯結(jié)構(gòu)是一張二維表,它由行和列組成。

?關(guān)系(Relation):一個(gè)關(guān)系對應(yīng)通常說的一張表,如圖1.27中的這張學(xué)生登記表;

?元組(Tuple):表中的一行即為一個(gè)元組;

?屬性(Attribute):表中的一列即為一個(gè)屬性,給每一個(gè)屬性起一?個(gè)名稱即屬性名。如上表有

六列,對應(yīng)六個(gè)屬性(學(xué)號,姓名,年齡,性別,系和年級);

?主碼(Key):表中的某個(gè)屬性組,它可以唯一確定一個(gè)元組,如圖1.27中的學(xué)號,可以唯一

確定一個(gè)學(xué)生,也就成為本關(guān)系的主碼;

?域(Domain):屬性的取值范圍,如人的年齡一般在1~150歲之間,大學(xué)生年齡屬性的域是

(14?38),性別的域是(男,女),系別的域是一個(gè)學(xué)校所有系名的集合;

?分量:元組中的一個(gè)屬性值;

?關(guān)系模式:對關(guān)系的描述,一般表示為:

關(guān)系名(屬性1,屬性2,…,屬性n)

例如上面的關(guān)系可描述為:

學(xué)生(學(xué)號,姓名,年齡,性別,系和年級)

在關(guān)系模型中,實(shí)體以及實(shí)體間的聯(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)系的每一個(gè)分量必須是一個(gè)不可分的數(shù)據(jù)項(xiàng),也就是說,不允許表中還有表。

二、關(guān)系數(shù)據(jù)模型的操縱與完整性約束

關(guān)系數(shù)據(jù)模型的操作主要包括查詢、插入、刪除和更新數(shù)據(jù)。這些操作必須滿足關(guān)系的完整性約

束條件。關(guān)系的完整性約束條件包括三大類:實(shí)體完整性、參照完整性和用戶定義的完整性。其具體

含義將在后面介紹。

關(guān)系模型中的數(shù)據(jù)操作是集合操作,操作對象和操作結(jié)果都是關(guān)系,即若干元組的集合,而不像

非關(guān)系模型中那樣是單記錄的操作方式。另一方面,關(guān)系模型把存取路徑向用戶隱蔽起來,用戶只要

指出“干什么”或“找什么”,不必詳細(xì)說明“怎么干”或“怎么找”,從而大大地提高了數(shù)據(jù)的獨(dú)立

性,提高了用戶生產(chǎn)率。

三、關(guān)系數(shù)據(jù)模型的存儲結(jié)構(gòu)

在關(guān)系數(shù)據(jù)模型中,實(shí)體及實(shí)體間的聯(lián)系都用表來表示。在數(shù)據(jù)庫的物理組織中,表以文件形式

存儲,有的系統(tǒng)一個(gè)表對應(yīng)一個(gè)操作系統(tǒng)文件,有的系統(tǒng)自己設(shè)計(jì)文件結(jié)構(gòu)。

四、關(guān)系數(shù)據(jù)模型的優(yōu)缺點(diǎn)

關(guān)系數(shù)據(jù)模型具有下列優(yōu)點(diǎn):

?關(guān)系模型與非關(guān)系模型不同,它是建立在嚴(yán)格的數(shù)學(xué)概念的基礎(chǔ)上的。

?關(guān)系模型的概念單一。無論實(shí)體還是實(shí)體之間的聯(lián)系都用關(guān)系表示。對數(shù)據(jù)的檢索結(jié)果也是關(guān)

系(即表)。所以其數(shù)據(jù)結(jié)構(gòu)簡單、清晰,用戶易懂易用。

?關(guān)系模型的存取路徑對用戶透明,從而具有更高的數(shù)據(jù)獨(dú)立性、更好的安全保密性,也簡化了

程序員的工作和數(shù)據(jù)庫開發(fā)建立的工作。

所以關(guān)系數(shù)據(jù)模型誕生以后發(fā)展迅速,深受用戶的喜愛。

當(dāng)然,關(guān)系數(shù)據(jù)模型也有缺點(diǎn),其中最主要的缺點(diǎn)是,由于存取路徑對用戶透明,查詢效率往往

不如非關(guān)系數(shù)據(jù)模型。因此為了提高性能,必須對用戶的查詢請求進(jìn)行優(yōu)化,增加了開發(fā)數(shù)據(jù)庫管理

系統(tǒng)的難度。

第三節(jié)數(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)和屬性的說

明,值是型的一個(gè)具體賦值。例如:學(xué)生記錄定義為(學(xué)號,姓名,性別,系別,年齡,籍貫)這樣

的記錄型,而(900201,李明,男,計(jì)算機(jī),22,江蘇)則是該記錄型的一個(gè)記錄值。

模式(Schema)是數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,它僅僅涉及到型的描述,不涉及

到具體的值。模式的一個(gè)具體值稱為模式的一個(gè)實(shí)例(Instance)。同一個(gè)模式可以有很多實(shí)例。模式

是相對穩(wěn)定的,而實(shí)例是相對變動(dòng)的,因?yàn)閿?shù)據(jù)庫中的數(shù)據(jù)是在不斷更新的。模式反映的是數(shù)據(jù)的結(jié)

構(gòu)及其聯(lián)系,而實(shí)例反映的是數(shù)據(jù)庫某一時(shí)刻的狀態(tài)。

雖然實(shí)際的數(shù)據(jù)庫管理系統(tǒng)產(chǎn)品種類很多,它們支持不同的數(shù)據(jù)模型,使用不同的數(shù)據(jù)庫語言,

建立在不同的操作系統(tǒng)之上,數(shù)據(jù)的存儲結(jié)構(gòu)也各不相同,但它們在體系結(jié)構(gòu)上通常都具有相同的特

征,即采用三級模式結(jié)構(gòu)(早期微機(jī)上的小型數(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ù)的物理存儲細(xì)節(jié)和硬件環(huán)境,也與具體的應(yīng)用程序,

與所使用的應(yīng)用開發(fā)工具及高級程序設(shè)計(jì)語言(如C,COBOL,FORTRAN)無關(guān)。

模式實(shí)際上是數(shù)據(jù)庫數(shù)據(jù)在邏輯級上的視圖。一個(gè)數(shù)據(jù)庫只有一個(gè)模式。數(shù)據(jù)庫模式以某一種數(shù)

據(jù)模型為基礎(chǔ),統(tǒng)一綜合地考慮了所有用戶的需求,并將這些需求有機(jī)地結(jié)合成一個(gè)邏輯整體。定義

模式時(shí)不僅要定義數(shù)據(jù)的邏輯結(jié)構(gòu),例如數(shù)據(jù)記錄由哪些數(shù)據(jù)項(xiàng)構(gòu)成,數(shù)據(jù)項(xiàng)的名字、類型、取值范

圍等,而且要定義數(shù)據(jù)之間的聯(lián)系,定義與數(shù)據(jù)有關(guān)的安全性、完整性要求。

DBSM提供模式描述語言(模式DDL)來嚴(yán)格地定義模式。

二、外模式(ExternalSchema)

外模式也稱子模式(Subschema)或用戶模式,它是數(shù)據(jù)庫用戶(包括應(yīng)用程序員和最終用戶)能

夠看見和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是數(shù)據(jù)庫用戶的數(shù)據(jù)視圖,是與某一應(yīng)用有關(guān)的

數(shù)據(jù)的邏輯表示。

外模式通常是模式的子集。一個(gè)數(shù)據(jù)庫可以有多個(gè)外模式。由于它是各個(gè)用戶的數(shù)據(jù)視圖,如果

不同的用戶在應(yīng)用需求、看待數(shù)據(jù)的方式、對數(shù)據(jù)保密的要求等方面存在差異,則其外模式描述就是

不同的。即使對模式中同一數(shù)據(jù),在外模式中的結(jié)構(gòu)、類型、長度、保密級別等都可以不同。另一方

面,同一外模式也可以為某一用戶的多個(gè)應(yīng)用系統(tǒng)所使用,但一個(gè)應(yīng)用程序只能使用一個(gè)外模式。

外模式是保證數(shù)據(jù)庫安全性的一個(gè)有力措施。每個(gè)用戶只能看見和訪問所對應(yīng)的外模式中的數(shù)據(jù),

數(shù)據(jù)庫中的其余數(shù)據(jù)是不可見的。

DBSM提供子模式描述語言(子模式DDL)來嚴(yán)格地定義子模式。

三、內(nèi)模式(InternalSchema)

內(nèi)模式也稱存儲模式(StorageSchema),一個(gè)數(shù)據(jù)庫只有一個(gè)內(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)來嚴(yán)格地定義內(nèi)模式。

1.3.3數(shù)據(jù)庫的二級映象功能與數(shù)據(jù)獨(dú)立性

數(shù)據(jù)庫系統(tǒng)的三級模式是對數(shù)據(jù)的三個(gè)抽象級別,它把數(shù)據(jù)的具體組織留給DBMS管理,使用戶

能邏輯地抽象地處理數(shù)據(jù),而不必關(guān)心數(shù)據(jù)在計(jì)算機(jī)中的具體表示方式與存儲方式。為了能夠在內(nèi)部

實(shí)現(xiàn)這三個(gè)抽象層次的聯(lián)系和轉(zhuǎn)換,數(shù)據(jù)庫管理系統(tǒng)在這三級模式之間提供了兩層映象:

?外模式/模式映象

?模式/內(nèi)模式映象

正是這兩層映象保證了數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)能夠具有較高的邏輯獨(dú)立性和物理獨(dú)立性。

一、外模式/模式映象

模式描述的是數(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í)(例如增加新的關(guān)系、新的屬性、改變屬性的數(shù)據(jù)類型等),由數(shù)據(jù)庫管理員對各個(gè)

外模式/模式的映象作相應(yīng)改變,可以使外模式保持不變。應(yīng)用程序是依據(jù)數(shù)據(jù)的外模式編寫的,從

而應(yīng)用程序不必修改,保證了數(shù)據(jù)與程序的邏輯獨(dú)立性,簡稱數(shù)據(jù)的邏輯獨(dú)立性。

二、模式/內(nèi)模式映象

數(shù)據(jù)庫中只有一個(gè)模式,也只有一個(gè)內(nèi)模式,所以模式/內(nèi)模式映象是唯一的,它定義了數(shù)據(jù)全

局邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)之間的對應(yīng)關(guān)系。例如,說明邏輯記錄和字段在內(nèi)部是如何表示的。該映象定

義通常包含在模式描述中。當(dāng)數(shù)據(jù)庫的存儲結(jié)構(gòu)改變了(例如選用了另一種存儲結(jié)構(gòu)),由數(shù)據(jù)庫管理

員對模式/內(nèi)模式映象作相應(yīng)改變,可以使模式保持不變,從而應(yīng)用程序也不必改變。保證了數(shù)據(jù)與

程序的物理獨(dú)立性,簡稱數(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ù)庫的邏輯模式。

數(shù)據(jù)庫的內(nèi)模式依賴于它的全局邏輯結(jié)構(gòu),但獨(dú)立于數(shù)據(jù)庫的用戶視圖即外模式,也獨(dú)立于具體

的存儲設(shè)備。它是將全局邏輯結(jié)構(gòu)中所定義的數(shù)據(jù)結(jié)構(gòu)及其聯(lián)系按照一定的物理存儲策略進(jìn)行組織,

以達(dá)到較好的時(shí)間與空間效率。

數(shù)據(jù)庫的外模式面向具體的應(yīng)用程序,它定義在邏輯模式之上,但獨(dú)立于存儲模式和存儲設(shè)備。

當(dāng)應(yīng)用需求發(fā)生較大變化,相應(yīng)外模式不能滿足其視圖要求時(shí),該外模式就得做相應(yīng)改動(dòng),所以設(shè)計(jì)

外模式時(shí)應(yīng)充分考慮到應(yīng)用的擴(kuò)充性。

特定的應(yīng)用程序是在外模式描述的數(shù)據(jù)結(jié)構(gòu)上編制的,它依賴于特定的外模式,與數(shù)據(jù)庫的模式

和存儲結(jié)構(gòu)獨(dú)立。不同的應(yīng)用程序有時(shí)可以共用同一個(gè)外模式。數(shù)據(jù)庫的二級映象保證了數(shù)據(jù)庫外模

式的穩(wěn)定性,從而從底層保證了應(yīng)用程序的穩(wěn)定性,除非應(yīng)用需求本身發(fā)生變化,否則應(yīng)用程序一般

不需要修改。

數(shù)據(jù)與程序之間的獨(dú)立性,使得數(shù)據(jù)的定義和描述可以從應(yīng)用程序中分離出去。另外,由于數(shù)據(jù)

的存取由DBMS管理,用戶不必考慮存取路徑等細(xì)節(jié),從而簡化了應(yīng)用程序的編制,大大減少了應(yīng)用

程序的維護(hù)和修改。

第四節(jié)數(shù)據(jù)庫系統(tǒng)的組成

據(jù)庫管理員和用戶構(gòu)成。下面分別介紹這幾個(gè)部分的內(nèi)容。

一、硬件平臺及數(shù)據(jù)庫

由于數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)量都很大,加之DBMS豐富的功能使得自身的規(guī)模也很大,因此整個(gè)數(shù)據(jù)庫

系統(tǒng)對硬件資源提出了較高的要求,這些要求是:

(1)要有足夠大的內(nèi)存,存放操作系統(tǒng)、DBMS的核心模塊、數(shù)據(jù)緩沖區(qū)和應(yīng)用程序。

(2)有足夠的大的磁盤等直接存取設(shè)備存放數(shù)據(jù)庫,有足夠的磁帶(或微機(jī)軟盤)作數(shù)據(jù)備份。

(3)要求系統(tǒng)有較高的通道能力,以提高數(shù)據(jù)傳送率。

二、軟件

數(shù)據(jù)庫系統(tǒng)的軟件主要包括:

(1)DBMS。DBMS是為數(shù)據(jù)庫的建立、使用和維護(hù)配置的軟件。

(2)支持DBMS運(yùn)行的操作系統(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è)計(jì)人員、應(yīng)

用程序員和最終用戶。不同的人員涉及不同的數(shù)據(jù)抽象級別,具有不同的數(shù)據(jù)視圖。

1.數(shù)據(jù)庫管理員(DataBaseAdministrator,簡稱DBA)

在數(shù)據(jù)庫系統(tǒng)環(huán)境下,有兩類共享資源。一類是數(shù)據(jù)庫,另一類是數(shù)據(jù)庫管理系統(tǒng)軟件.因此需

要有專門的管理機(jī)構(gòu)來監(jiān)督和管理數(shù)據(jù)庫系統(tǒng)。DBA則是這個(gè)機(jī)構(gòu)的一個(gè)(組)人員,負(fù)責(zé)全面管理

和控制數(shù)據(jù)庫系統(tǒng)。具體職責(zé)包括:

(1)決定數(shù)據(jù)庫中的信息內(nèi)容和結(jié)構(gòu)

數(shù)據(jù)庫中要存放哪些信息,DBA要參與決策。因此DBA必須參加數(shù)據(jù)庫設(shè)計(jì)的全過程,并與用

戶、應(yīng)用程序員、系統(tǒng)分析員密切合作共同協(xié)商,搞好數(shù)據(jù)庫設(shè)計(jì)。

(2)決定數(shù)據(jù)庫的存儲結(jié)構(gòu)和存取策略

DBA要綜合各用戶的應(yīng)用要求,和數(shù)據(jù)庫設(shè)計(jì)人員共同決定數(shù)據(jù)的存儲結(jié)構(gòu)和存取策略以求獲得

較高的存取效率和存儲空間利用率。

(3)定義數(shù)據(jù)的安全性要求和完整性約束條件

DBA的重要職責(zé)是保證數(shù)據(jù)庫的安全性和完整性。因此,DBA負(fù)責(zé)確定各個(gè)用戶對數(shù)據(jù)庫的存

取權(quán)限、數(shù)據(jù)的保密級別和完整性約束條件。

(4)監(jiān)控?cái)?shù)據(jù)庫的使用和運(yùn)行

DBA還有一個(gè)重要職責(zé)就是監(jiān)視數(shù)據(jù)庫系統(tǒng)的運(yùn)行情況,及時(shí)處理運(yùn)行過程中出現(xiàn)的問題。比如

系統(tǒng)發(fā)生各種故障時(shí),數(shù)據(jù)庫會因此遭到不同程度的破壞,DBA必須在最短時(shí)間內(nèi)將數(shù)據(jù)庫恢復(fù)到正

確狀態(tài),并盡可能不影響或少影響計(jì)算機(jī)系統(tǒng)其他部分的正常運(yùn)行。為此,DBA要定義和實(shí)施適當(dāng)?shù)?/p>

后備和恢復(fù)策略。如周期性的轉(zhuǎn)儲數(shù)據(jù)、維護(hù)日志文件等等。有關(guān)這方面的內(nèi)容將在下面做進(jìn)一步討

論。

(5)數(shù)據(jù)庫的改進(jìn)和重組重構(gòu)

DBA還負(fù)責(zé)在系統(tǒng)運(yùn)行期間監(jiān)視系統(tǒng)的空間利用率、處理效率等性能指標(biāo),對運(yùn)行情況進(jìn)行記錄、

統(tǒng)計(jì)分析,依靠工作實(shí)踐并根據(jù)實(shí)際應(yīng)用環(huán)境,不斷改進(jìn)數(shù)據(jù)庫設(shè)計(jì)。不少數(shù)據(jù)庫產(chǎn)品都提供了對數(shù)

據(jù)庫運(yùn)行狀況進(jìn)行監(jiān)視和分析的實(shí)用程序,DBA可以使用這些實(shí)用程序完成這項(xiàng)工作。

另外,在數(shù)據(jù)運(yùn)行過程中,大量數(shù)據(jù)不斷插入、刪除、修改,時(shí)間一長,會影響系統(tǒng)的性能。因

此,DBA要定期對數(shù)據(jù)庫進(jìn)行重組織,以提高系統(tǒng)的性能。

當(dāng)用戶的需求增加和改變時(shí),DBA還要對數(shù)據(jù)庫進(jìn)行較大的改造,包括修改部分設(shè)計(jì),即數(shù)據(jù)庫

的重構(gòu)造。

2.系統(tǒng)分析員和數(shù)據(jù)庫設(shè)計(jì)人員

系統(tǒng)分析員負(fù)責(zé)應(yīng)用系統(tǒng)的需求分析和規(guī)范說明,要和用戶及DBA相結(jié)合,確定系統(tǒng)的硬件軟

件配置,并參與數(shù)據(jù)庫系統(tǒng)的概要設(shè)計(jì)。

數(shù)據(jù)庫設(shè)計(jì)人員負(fù)責(zé)數(shù)據(jù)庫中數(shù)據(jù)的確定、數(shù)據(jù)庫各級模式的設(shè)計(jì)。數(shù)據(jù)庫設(shè)計(jì)人員必須參加用

戶需求調(diào)查和系統(tǒng)分析,然后進(jìn)行數(shù)據(jù)庫設(shè)計(jì)。在很多情況下,數(shù)據(jù)庫設(shè)計(jì)人員就由數(shù)據(jù)庫管理員擔(dān)

任。

3.應(yīng)用程序員

應(yīng)用程序員負(fù)責(zé)設(shè)計(jì)和編寫應(yīng)用系統(tǒng)的程序模塊,并進(jìn)行調(diào)試和安裝。

4.用戶

這里用戶是指最終用戶(EndUser)。最終用戶通過應(yīng)用系統(tǒng)的用戶接口使用數(shù)據(jù)庫。常用的接口

方式有瀏覽器、菜單驅(qū)動(dòng)、表格操作、圖形顯示、報(bào)表書寫等一唐山市警用地理信息系統(tǒng)數(shù)據(jù)庫)

最終用戶可以分為如下三類:

(1)偶然用戶。這類用戶不經(jīng)常訪問數(shù)據(jù)庫,但每次訪問數(shù)據(jù)庫時(shí)往往需要不同的數(shù)據(jù)庫信息,

這類用戶一般是企業(yè)或組織機(jī)構(gòu)的高中級管理人員。

(2)簡單用戶。數(shù)據(jù)庫的多數(shù)最終用戶都是簡單用戶。其主要工作是查詢和更新數(shù)據(jù)庫,一般都

是通過應(yīng)用程序員精心設(shè)計(jì)并具有友好界面的應(yīng)用程序存取數(shù)據(jù)庫。銀行的職員、鐵路售票、航空公

司的機(jī)票預(yù)定工作人員、旅館總臺服務(wù)員等都屬于這類用戶。

(3)復(fù)雜用戶。復(fù)雜用戶包括工程師、科學(xué)家、經(jīng)濟(jì)學(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ù)庫管理系統(tǒng)軟件的研制

DBMS是數(shù)據(jù)庫系統(tǒng)的基礎(chǔ)。DBMS的研制包括研制DBMS本身及以DBMS為核心的?組相互

聯(lián)系的軟件系統(tǒng),包括工具軟件和中間件。研制的目標(biāo)是提高系統(tǒng)的可用性、可靠性、可伸縮性;提

高性能和提高用戶的生產(chǎn)率。

DBMS核心技術(shù)的研究和實(shí)現(xiàn)是三十余年來數(shù)據(jù)庫領(lǐng)域所取得的主要成就。DBMS是一個(gè)基礎(chǔ)軟

件系統(tǒng),它提供了對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行存儲、檢索和管理的功能。

二、數(shù)據(jù)庫設(shè)計(jì)

數(shù)據(jù)庫設(shè)計(jì)的主要任務(wù)是在DBMS的支持下,按照應(yīng)用的要求,為某一部門或組織設(shè)計(jì)一個(gè)結(jié)構(gòu)

合理、使用方便、效率較高的數(shù)據(jù)庫及其應(yīng)用系統(tǒng)。其中主要的研究方向是數(shù)據(jù)庫設(shè)計(jì)方法學(xué)和設(shè)計(jì)

工具,包括數(shù)據(jù)庫設(shè)計(jì)方法、設(shè)計(jì)工具和設(shè)計(jì)理論的研究,數(shù)據(jù)模型和數(shù)據(jù)建模的研究,計(jì)算機(jī)輔助

數(shù)據(jù)庫設(shè)計(jì)方法及其軟件系統(tǒng)的研究,數(shù)據(jù)庫設(shè)計(jì)規(guī)范和標(biāo)準(zhǔn)的研究等。

三、數(shù)據(jù)庫理論

數(shù)據(jù)庫理論的研究主要集中于關(guān)系的規(guī)范化理論、關(guān)系數(shù)據(jù)理論等。近年來,隨著人工智能與數(shù)

據(jù)庫理論的結(jié)合、并行計(jì)算技術(shù)等的發(fā)展,數(shù)據(jù)庫邏輯演繹和知識推理、數(shù)據(jù)庫中的知識發(fā)現(xiàn)

(KnowledgeDiscoveryfromDatabase,簡稱KDD)、并行算法等成為新的理論研究方向。

計(jì)算機(jī)領(lǐng)域中其他新興技術(shù)的發(fā)展對數(shù)據(jù)庫技術(shù)產(chǎn)生了重大影響。數(shù)據(jù)庫技術(shù)和其他計(jì)算機(jī)技術(shù)

的互相結(jié)合、互相滲透,使數(shù)據(jù)庫中新的技術(shù)內(nèi)容層出不窮。數(shù)據(jù)庫的許多概念、技術(shù)內(nèi)容、應(yīng)用領(lǐng)

域,甚至某些原理都有了重大的發(fā)展和變化。建立和實(shí)現(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ù)和基本知識方面是進(jìn)一步進(jìn)行上述三個(gè)領(lǐng)域研究和開

發(fā)的基礎(chǔ)。

第六節(jié)小結(jié)

展的背景,也說明了數(shù)據(jù)庫系統(tǒng)的優(yōu)點(diǎn)。

數(shù)據(jù)模型是數(shù)據(jù)庫系統(tǒng)的核心和基礎(chǔ)。本章介紹了組成數(shù)據(jù)模型的三個(gè)要素、概念模型和三種主

要的數(shù)據(jù)庫模型。

概念模型也稱信息模型,用于信息世界的建模,E-R模型是這類模型的典型代表,E-R方法簡單、

清晰,應(yīng)用十分廣泛。

數(shù)據(jù)模型的發(fā)展經(jīng)歷了格式化數(shù)據(jù)模型(包括層次模型和網(wǎng)狀模型)、關(guān)系模型,正在走向面向?qū)?/p>

象等非傳統(tǒng)數(shù)據(jù)模型。由于層次數(shù)據(jù)庫和網(wǎng)狀數(shù)據(jù)庫已逐漸被關(guān)系數(shù)據(jù)庫代替,本書不再用單獨(dú)的章

節(jié)講解,因此,本章較為詳細(xì)地講解了層次模型和網(wǎng)狀模型,而關(guān)系模型只是簡單介紹,后面會詳細(xì)

講解。

數(shù)據(jù)庫系統(tǒng)三級模式和兩層映象的系統(tǒng)結(jié)構(gòu)保證了數(shù)據(jù)庫系統(tǒng)中能夠具有較高的邏輯獨(dú)立性和物

理獨(dú)立性。

最后介紹了數(shù)據(jù)庫系統(tǒng)的組成,使學(xué)生了解數(shù)據(jù)庫系統(tǒng)不僅是一個(gè)計(jì)算機(jī)系統(tǒng),而是一個(gè)人-機(jī)系

統(tǒng),人的作用特別是DBA的作用尤為重要。

學(xué)習(xí)這一章應(yīng)把注意力放在掌握基本概念和基本知識方面,為進(jìn)一步學(xué)習(xí)下面章節(jié)打好基礎(chǔ)。本

章新概念較多,如果是剛開始學(xué)習(xí)數(shù)據(jù)庫,可在學(xué)習(xí)后面章節(jié)后再回來理解和掌握這些概念。

第2章關(guān)系數(shù)據(jù)庫

第一節(jié)關(guān)系模型概述

關(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)實(shí)世界的實(shí)體以及實(shí)體間的各種聯(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)操作兩大部分。查詢的表達(dá)能力是其中最主要的部分。

關(guān)系操作的特點(diǎ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)系的運(yùn)算來表達(dá)查詢要求的方式。關(guān)系演算是用謂詞來表達(dá)查詢要求的方式。關(guān)系演算又

可按謂詞變元的基本對象是元組變量還是域變量分為元組關(guān)系演算和域關(guān)系演算。關(guān)系代數(shù)、元組關(guān)

系演算和域關(guān)系演算三種語言在表達(dá)能力上是完全等價(jià)的。

關(guān)系代數(shù)、元組關(guān)系演算和域關(guān)系演算均是抽象的查詢語言,這些抽象的語言與具體的DBMS中

實(shí)現(xiàn)的實(shí)際語言并不完全一樣。但它們能用作評估實(shí)際系統(tǒng)中查詢語言能力的標(biāo)準(zhǔn)或基礎(chǔ)。實(shí)際的查

詢語言除了提供關(guān)系代數(shù)或關(guān)系演算的功能外,還提供了許多附加功能,例如集函數(shù)、關(guān)系賦值、算

術(shù)運(yùn)算等。

關(guān)系語言是一種高度非過程化的語言,用戶不必請求DBA為其建立特殊的存取路徑,存取路徑

的選擇由DBMS的優(yōu)化機(jī)制來完成,此外,用戶不必求助于循環(huán)結(jié)構(gòu)就可以完成數(shù)據(jù)操作。

另外還有一種介于關(guān)系代數(shù)和關(guān)系演算之間的語言SQL(StandardQueryLanguage)oSQL不僅具

有豐富的查詢功能,而且具有數(shù)據(jù)定義和數(shù)據(jù)控制功能,是集查詢、DDL、DML和DCL于一體的關(guān)

系數(shù)據(jù)語言。它充分體現(xiàn)了關(guān)系數(shù)據(jù)語言的特點(diǎn)和優(yōu)點(diǎn),是關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言。

因此,關(guān)系數(shù)據(jù)語言可以分為三類:

關(guān)系代數(shù)語言,例如ISBL

關(guān)系演算語言,(元組關(guān)系演算語言,例如APLHA,QUEL和域關(guān)系演算語言,例如QBE)

具有關(guān)系代數(shù)和關(guān)系演算雙重特點(diǎn)的語言例如SQL

這些關(guān)系數(shù)據(jù)語言的共同特點(diǎn)是,語言具有完備的表達(dá)能力,是非過程化的集合操作語言,功能

強(qiáng),能夠嵌入高級語言中使用。

三、關(guān)系的三類完整性約束

關(guān)系模型允許定義三類完整性約束:實(shí)體完整性、參照完整性和用戶定義的完整性。其中實(shí)體完

整性和參照完整性是關(guān)系模型必須滿足的完整性約束條件,應(yīng)該由關(guān)系系統(tǒng)自動(dòng)支持。用戶定義的完

整性是應(yīng)用領(lǐng)域需要遵循的約束條件,體現(xiàn)了具體領(lǐng)域中的語義約束。

下面將分別介紹關(guān)系模型的三個(gè)方面。其中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)及形式化定義

還是實(shí)體之間的聯(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í)數(shù)、長度小于25字節(jié)的字符串集合、{0,1}、大于等于。且小于等于

100的正整數(shù)等,都可以是域。

2.笛卡爾積(CartesianProduct)

定義2.2給定一組域DI,D2,…,Dn,這些域中可以有相同的。DI,D2,…,Dn的笛卡爾積

為:

D1XD2X…XDn={(dl,d2,…,dn)Idi?Di,i=l,2,…,n}

其中每一個(gè)元素(dl,d2,???,dn)叫作一個(gè)n元組(n-tuple)或簡稱元組(Tuple)?

元素中的每一個(gè)值di叫作一個(gè)分量(Component)。

笛卡爾積可表示為一個(gè)二維表。表中的每行對應(yīng)一個(gè)元組,表中的每列對應(yīng)一個(gè)域。例如給出三

個(gè)域:

SUPERVISORS?#^,劉逸

口2=專業(yè)集合SPECIALITY=計(jì)算機(jī)專業(yè),信息專業(yè)

D3=研究生集合POSTGRADUATE=李勇,劉晨,王敏

則Dl,D2,D3的笛卡爾積為:

DIXD2XD3={(張清玫,計(jì)算機(jī)專業(yè),李勇),(張清玫,計(jì)算機(jī)專業(yè),劉晨),

(張清玫,計(jì)算機(jī)專業(yè),王敏),(張清玫,信息專業(yè),李勇),

(張清玫,信息專業(yè),劉晨),(張清玫,信息專業(yè),王敏),

(劉逸,計(jì)算機(jī)專業(yè),李勇),(劉逸,計(jì)算機(jī)專業(yè),劉晨),

(劉逸,計(jì)算機(jī)專業(yè),王敏),(劉逸,信息專業(yè),李勇),

(劉逸,信息專業(yè),劉晨),(劉逸,信息專業(yè),王敏)}

其中(張清玫,計(jì)算機(jī)專業(yè),李勇)、(張清玫,計(jì)算機(jī)專業(yè),劉晨)等都是元組。張清玫、計(jì)算機(jī)專

業(yè)、李勇、劉晨等都是分量。

該笛卡爾積的基數(shù)為2X2X3=12,也就是說,D1XD2XD3一共有2X2X3=12個(gè)元組。這12

個(gè)元組可列成一張二維表(如表2.1)。

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論