




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年絕緣電話軟線行業(yè)深度研究分析報(bào)告
- 2023-2028年中國支鏈氨基酸行業(yè)市場調(diào)查研究及發(fā)展戰(zhàn)略規(guī)劃報(bào)告
- 2025年度企業(yè)間無抵押借款合同范本4篇
- 苗族鼓舞藝術(shù)特征及發(fā)展
- 2025年度智能別墅整體裝修工程合同
- 中國重慶市智慧交通行業(yè)發(fā)展前景預(yù)測及投資戰(zhàn)略研究報(bào)告
- 2025年計(jì)劃生育技術(shù)服務(wù)項(xiàng)目合作計(jì)劃書
- 5 合理消費(fèi)(教學(xué)設(shè)計(jì))2023-2024學(xué)年統(tǒng)編版道德與法治四年級下冊
- 中國雀梅項(xiàng)目投資可行性研究報(bào)告
- 青島太陽能路燈項(xiàng)目可行性研究報(bào)告模板范文
- 廣東省汕頭市潮陽區(qū)2024-2025學(xué)年高二上學(xué)期期末考試英語試題
- 2025年蘇州經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年常考版參考題庫含答案解析
- 2025年湖南工程職業(yè)技術(shù)學(xué)院高職單招數(shù)學(xué)歷年(2016-2024)頻考點(diǎn)試題含答案解析
- 醫(yī)院培訓(xùn)課件:《PET-CT的臨床應(yīng)用》
- (課件)-幼兒園中班社會教案《新年里的開心事》
- 宋代美學(xué)研究
- 行政管理學(xué)知識點(diǎn)全套
- 船舶安全管理培訓(xùn)課件
- 供應(yīng)鏈管理(第2版)課件:常用的供應(yīng)鏈管理方法
- 腰椎手術(shù)的疑難討論
- 李四光《看看我們的地球》原文閱讀
評論
0/150
提交評論