數(shù)據(jù)庫系統(tǒng)概論
綜合能力考核表詳細(xì)內(nèi)容
數(shù)據(jù)庫系統(tǒng)概論
本章目的在于使讀者對數(shù)據(jù)庫系統(tǒng)的基本知識能有一個(gè)較為全面的了解,為今后的學(xué)習(xí)和工作打下基礎(chǔ)。本章重點(diǎn)介紹了有關(guān)數(shù)據(jù)庫結(jié)構(gòu)和數(shù)據(jù)庫系統(tǒng)組織的基本知識和基本概念,以及常見的三種類型的數(shù)據(jù)庫系統(tǒng)的特點(diǎn)。重點(diǎn)介紹關(guān)系數(shù)據(jù)庫的有關(guān)知識。
1.1 數(shù)據(jù)管理技術(shù)發(fā)展史
隨著生產(chǎn)力的不斷發(fā)展,社會的不斷進(jìn)步,人類對信息的依賴程度也在不斷地增加。數(shù)據(jù)作為表達(dá)信息的一種量化符號,正在成為人們處理信息時(shí)重要的操作對象。所謂數(shù)據(jù)處理就是對數(shù)據(jù)的收集、整理、存儲、分類、排序、檢索、維護(hù)、加工、統(tǒng)計(jì)和傳輸?shù)纫幌盗泄ぷ魅窟^程的概述。數(shù)據(jù)處理的目的就是使我們能夠從浩瀚的信息數(shù)據(jù)海洋中,提取出有用的數(shù)據(jù)信息,作為我們工作、生活等各方面的決策依據(jù)。數(shù)據(jù)管理則是指對數(shù)據(jù)的組織、編碼、分類、存儲、檢索和維護(hù),它是數(shù)據(jù)處理的一個(gè)重要內(nèi)容中心。數(shù)據(jù)處理工作由來以久,早在1880年美國進(jìn)行人口普查統(tǒng)計(jì)時(shí),就已采用穿孔卡片來存儲人口普查數(shù)據(jù),并采用機(jī)械設(shè)備來完成對這些普查數(shù)據(jù)所進(jìn)行的處理工作。電子計(jì)算機(jī)的出現(xiàn)以及其后其硬件、軟件的迅速發(fā)展,加之?dāng)?shù)據(jù)庫理論和技術(shù)的發(fā)展,為數(shù)據(jù)管理進(jìn)入一個(gè)革命性階段提供有力的支持。根據(jù)數(shù)據(jù)和應(yīng)用程序相互依賴關(guān)系、數(shù)據(jù)共享以及數(shù)據(jù)的操作方式,數(shù)據(jù)管理的發(fā)展可以分為三個(gè)具有代表性的階段,即人工管理階段、文件管理階段和數(shù)據(jù)庫管理階段。
【1】人工管理階段
這一階段發(fā)生于六十年代以前,由于當(dāng)時(shí)計(jì)算機(jī)硬件和軟件發(fā)展才剛剛起步,數(shù)據(jù)管理中全部工作,都必須要由應(yīng)用程序員自己設(shè)計(jì)程序完成去完成。由于需要與計(jì)算機(jī)硬件以及各外部存儲設(shè)備和輸入輸出設(shè)備直接打交道,程序員們常常需要編制大量重復(fù)的數(shù)據(jù)管理基本程序。數(shù)據(jù)的邏輯組織與它的物理組織基本上是相同的,因此當(dāng)數(shù)據(jù)的邏輯組織、物理組織或存儲設(shè)備發(fā)生變化時(shí),進(jìn)行數(shù)據(jù)管理工作的許多應(yīng)用程序就必須要進(jìn)行重新編制。這樣就給數(shù)據(jù)管理的維護(hù)工作帶來許多困難。并且由于一組數(shù)據(jù)常常只對應(yīng)于一種應(yīng)用程序,因此很難實(shí)現(xiàn)多個(gè)不同應(yīng)用程序間的數(shù)據(jù)資源共享。存在著大量重復(fù)數(shù)據(jù),信息資源浪費(fèi)嚴(yán)重。
【2】文件管理階段
這一階段發(fā)生于六十年代,由于當(dāng)時(shí)計(jì)算機(jī)硬件的發(fā)展,以及系統(tǒng)軟件尤其是文件系統(tǒng)的出現(xiàn)和發(fā)展,人們開始利用文件系統(tǒng)來幫助完成數(shù)據(jù)管理工作,具體講就是:數(shù)據(jù)以多種組織結(jié)構(gòu)(如順序文件組織、索引文件文件組織和直接存取文件組織等)的文件形式保存在外部存儲設(shè)備上,用戶通過文件系統(tǒng)而無需直接與外部設(shè)備打交道,以此來完成數(shù)據(jù)的修改、插入、刪除、檢索等管理操作;使用這種管理方式,不僅減輕進(jìn)行數(shù)據(jù)管理的應(yīng)用程序工作量,更重要地是,當(dāng)數(shù)據(jù)的物理組織或存儲設(shè)備發(fā)生變化時(shí),數(shù)據(jù)的邏輯組織可以不受任何影響,從而保證了基于數(shù)據(jù)邏輯組織所編制的應(yīng)用程序也可以不受硬件設(shè)備變化的影響。這樣就使得程序和數(shù)據(jù)之間具有了一定的相互獨(dú)立性。
但由于數(shù)據(jù)文件的邏輯結(jié)構(gòu)完全是根據(jù)應(yīng)用程序的具體要求而設(shè)計(jì),它的管理與維護(hù)完全是由應(yīng)用程序本身來完成,因此數(shù)據(jù)文件的邏輯結(jié)構(gòu)與應(yīng)用程序密切相關(guān),當(dāng)數(shù)據(jù)的邏輯結(jié)構(gòu)需要修改時(shí),應(yīng)用程序也就不可避免地需要進(jìn)行修改;同樣當(dāng)應(yīng)用程序需要進(jìn)行變動(dòng)時(shí),常常又會要求數(shù)據(jù)的邏輯結(jié)構(gòu)進(jìn)行相應(yīng)的變動(dòng)。在這種情況下,數(shù)據(jù)管理中的維護(hù)工作量也是較大的。更主要的是由于采用文件的形式來進(jìn)行數(shù)據(jù)管理工作,常常需要將一個(gè)完整的、相互關(guān)聯(lián)的數(shù)據(jù)集合,人為地分割成若干相互獨(dú)立的文件,以便通過基于文件系統(tǒng)的編程來實(shí)現(xiàn)來對它們的管理操作。這樣做同樣會導(dǎo)致數(shù)據(jù)的過多冗余和增加數(shù)據(jù)維護(hù)工作的復(fù)雜性。例如人事部門、教務(wù)部門和醫(yī)務(wù)部門對學(xué)生數(shù)據(jù)信息的管理,這三個(gè)部門中有許多數(shù)據(jù)是相同的,如姓名、年齡、性別等,由于是各部門均是根據(jù)自己的要求,建立各自的數(shù)據(jù)文件和應(yīng)用程序,這樣不僅造成了大量的相同數(shù)據(jù)重復(fù)存儲,而且在修改時(shí),常常需要同時(shí)修改三個(gè)文件中的數(shù)據(jù)項(xiàng),如修改學(xué)生年齡,此外若需要增加一個(gè)描述學(xué)生的數(shù)據(jù)項(xiàng),如通訊地址,那么所有的應(yīng)用程序就必須都要進(jìn)行相應(yīng)的修改。除此之外,采用文件系統(tǒng)來幫助進(jìn)行數(shù)據(jù)管理工作,在數(shù)據(jù)的安全和保密等方面,也難以采取有效的措施加以控制。
【3】數(shù)據(jù)庫管理階段
1在不斷改進(jìn)和完善文件系統(tǒng)的過程中,從六十年代后期開始,人們逐步研究和發(fā)展了以數(shù)據(jù)的統(tǒng)一管理和數(shù)據(jù)共享為主要特征的數(shù)據(jù)庫系統(tǒng)。即在數(shù)據(jù)在統(tǒng)一控制之下,為盡可能多的應(yīng)用和用戶服務(wù),數(shù)據(jù)庫中的數(shù)據(jù)組織結(jié)構(gòu)與數(shù)據(jù)庫的應(yīng)用程序相互間有較大的相對獨(dú)立性等。與以往前數(shù)據(jù)管理方法和技術(shù)相比,利用數(shù)據(jù)庫系統(tǒng)來進(jìn)行數(shù)據(jù)管理工作具有以下三個(gè)顯著特點(diǎn):
(1)從整體角度組織數(shù)據(jù)
數(shù)據(jù)庫系統(tǒng)與文件系統(tǒng)的最大差別就在于前者在描述數(shù)據(jù)時(shí),不僅僅是對數(shù)據(jù)本身進(jìn)行描述,而且對數(shù)據(jù)之間的相互聯(lián)系也進(jìn)行了描述。因此在組織數(shù)據(jù)時(shí)是從一個(gè)相對較高的整體角度進(jìn)行的,而不是僅僅局限于個(gè)別的數(shù)據(jù)管理應(yīng)用場合。如前面提到的人事部門、教務(wù)部門和醫(yī)務(wù)部門對學(xué)生數(shù)據(jù)的管理工作,在利用數(shù)據(jù)庫系統(tǒng)來進(jìn)行管理時(shí),若從整體考慮,其數(shù)據(jù)的組織結(jié)構(gòu)如圖1.1所示。
圖1.1 學(xué)生信息數(shù)據(jù)組織結(jié)構(gòu)
采用這種數(shù)據(jù)組織不僅可以有效地解決了文件系統(tǒng)的數(shù)據(jù)組織中所存在的數(shù)據(jù)冗余以及數(shù)據(jù)一致性維護(hù)的問題。更主要的是它可以使人們從更高的全局角度出發(fā),合理地組織數(shù)據(jù),從而有利于更大范圍內(nèi)的數(shù)據(jù)資源的共享,提高信息的使用效率。
(2)數(shù)據(jù)可為多個(gè)應(yīng)用服務(wù)
正因?yàn)閿?shù)據(jù)庫中的數(shù)據(jù)是從整體角度進(jìn)行組織的,因此,數(shù)據(jù)庫中所存儲的數(shù)據(jù)往往就不僅局限于只為一二個(gè)應(yīng)用提供服務(wù),而是在更大范圍內(nèi)為僅可能多的應(yīng)用提供服務(wù),如圖1.1所示的一個(gè)數(shù)據(jù)庫中所存儲的數(shù)據(jù),就至少可以為三個(gè)部門的應(yīng)用提供服務(wù)。而實(shí)際上如圖1.1所示的數(shù)據(jù)組織結(jié)構(gòu)僅僅只是一個(gè)學(xué)校數(shù)據(jù)管理數(shù)據(jù)庫中的一小部分。與此同時(shí)由于數(shù)據(jù)庫系統(tǒng)是以多級(層)組織模式對數(shù)據(jù)進(jìn)行組織的,各級(層)模式之間的映射是由數(shù)據(jù)庫系統(tǒng)自己完成的,這就使得數(shù)據(jù)與程序之間可以具有較高的物理和邏輯相對獨(dú)立性。正是這一點(diǎn),給數(shù)據(jù)庫中的數(shù)據(jù)為多個(gè)應(yīng)用提供服務(wù)奠定了基礎(chǔ)。事實(shí)上數(shù)據(jù)庫的規(guī)模越大,所能夠提供的應(yīng)用服務(wù)就可以越多,也就越能體現(xiàn)出數(shù)據(jù)庫在數(shù)據(jù)管理中的優(yōu)勢。當(dāng)然這只是相對而言,隨著數(shù)據(jù)庫中數(shù)據(jù)規(guī)模的擴(kuò)大,數(shù)據(jù)庫應(yīng)用系統(tǒng)的制作和維護(hù)的工作也在迅速增加。
(3)有一個(gè)數(shù)據(jù)庫系統(tǒng)的管理軟件
任何數(shù)據(jù)庫系統(tǒng)都包含一個(gè)管理軟件,即數(shù)據(jù)庫系統(tǒng)的管理軟件,通常又稱為數(shù)據(jù)庫管理系統(tǒng),它負(fù)責(zé)統(tǒng)一管理數(shù)據(jù)庫系統(tǒng)中所有數(shù)據(jù)資源,是數(shù)據(jù)庫系統(tǒng)與用戶應(yīng)用之間的接口,通過它,用戶可以不必要了解過多的計(jì)算機(jī)硬件、軟件和數(shù)據(jù)庫本身許多專業(yè)知識,更不用去了解數(shù)據(jù)庫系統(tǒng)是如何完成數(shù)據(jù)管理工作的具體細(xì)節(jié),如文件如何打開、關(guān)閉、讀、寫等等,就可以通過編寫一些較為簡單數(shù)據(jù)庫應(yīng)用程序,很方便地完成在較高級別邏輯組織基礎(chǔ)上的數(shù)據(jù)管理工作。除此之外,數(shù)據(jù)庫管理系統(tǒng)還負(fù)責(zé)完成在對數(shù)據(jù)庫進(jìn)行并發(fā)訪問時(shí),保證數(shù)據(jù)一致性的并發(fā)控制工作;保證數(shù)據(jù)安全性的訪問控制工作;以及在數(shù)據(jù)庫系統(tǒng)出現(xiàn)故障時(shí),提供保證數(shù)據(jù)一致性和完整性的恢復(fù)機(jī)制等諸多數(shù)據(jù)庫系統(tǒng)本身的各種管理控制工作。因此這里也可以看出,數(shù)據(jù)庫管理系統(tǒng)功能的強(qiáng)弱及其各項(xiàng)性能指標(biāo)的好壞,是衡量數(shù)據(jù)庫系統(tǒng)質(zhì)量的一個(gè)極其重要的因素。
利用數(shù)據(jù)庫系統(tǒng)進(jìn)行數(shù)據(jù)管理工作,不僅可以保證數(shù)據(jù)的物理組織結(jié)構(gòu)和存儲設(shè)備與數(shù)據(jù)庫應(yīng)用程序之間保持相互獨(dú)立性;同時(shí)也可以保證數(shù)據(jù)的邏輯組織結(jié)構(gòu)與數(shù)據(jù)庫應(yīng)用程序之間保持最大可能的相互獨(dú)立性,即當(dāng)數(shù)據(jù)的邏輯組織結(jié)構(gòu)發(fā)生變化時(shí),數(shù)據(jù)庫應(yīng)用程序的變動(dòng)被限制在最小的范圍內(nèi)。由此可大大地減少數(shù)據(jù)庫應(yīng)用程序的開發(fā)與維護(hù)的工作量。
在數(shù)據(jù)庫管理階段,根據(jù)數(shù)據(jù)庫系統(tǒng)本身所支持的數(shù)據(jù)模型的特點(diǎn)及所采用的相應(yīng)數(shù)據(jù)庫系統(tǒng)技術(shù),可以認(rèn)為數(shù)據(jù)庫管理到目前為止已發(fā)展經(jīng)歷了三代,即層次網(wǎng)狀模型代、關(guān)系模型代和面向?qū)ο竽P痛?
(1)層次網(wǎng)狀模型代:流行于六十至七十年代,在這一代中的數(shù)據(jù)庫系統(tǒng)所支持的數(shù)據(jù)模型均是層次模型或網(wǎng)狀模型。世界上第一個(gè)數(shù)據(jù)庫系統(tǒng)是于1964年由美國通用電氣公司開發(fā)成功的IDS(Integrated Data Store),它就是基于網(wǎng)狀模型的數(shù)據(jù)庫系統(tǒng)。IBM公司于六十年代末推出了第一個(gè)商品化的層次數(shù)據(jù)庫系統(tǒng)IMS(Information Management Sytem),它們的出現(xiàn)與應(yīng)用為數(shù)據(jù)庫技術(shù)的發(fā)展奠定了基礎(chǔ)。
(2)關(guān)系模型代:流行于七十至八十年代,在這一代中的數(shù)據(jù)庫系統(tǒng)所支持的數(shù)據(jù)的數(shù)據(jù)模型均是關(guān)系模型。以關(guān)系(表)形式組織數(shù)據(jù)。1970年Codd提出了關(guān)系數(shù)據(jù)模型,由于其具有嚴(yán)格的數(shù)學(xué)基礎(chǔ),抽象級別較高,且簡單清晰,便于理解應(yīng)用。到了七十年代末,出現(xiàn)了不少關(guān)系數(shù)據(jù)庫系統(tǒng),其中具有代表性應(yīng)首推IBM公司推出的SQL/DS和DB2兩個(gè)商品化關(guān)系數(shù)據(jù)庫系統(tǒng)。進(jìn)行八十年代以后,關(guān)系數(shù)據(jù)庫系統(tǒng)已成為數(shù)據(jù)庫系統(tǒng)發(fā)展的主流,幾乎所有新推出的數(shù)據(jù)庫系統(tǒng)產(chǎn)品都是關(guān)系型的,它們中不僅有用于大型機(jī)和小型機(jī)數(shù)據(jù)庫產(chǎn)品,而且有可用于微機(jī)的數(shù)據(jù)庫產(chǎn)品。市場上開始出現(xiàn)關(guān)系數(shù)據(jù)庫的系列產(chǎn)品,這其中發(fā)行量較大且在我國用得較多的有Oracle、Sybase、Sysbase、Informix、FoxPro等。隨著微機(jī)和計(jì)算機(jī)網(wǎng)絡(luò)的廣泛普及和應(yīng)用,分布式數(shù)據(jù)庫系統(tǒng)在八十年代后期,開始得到很大發(fā)展。其理論和技術(shù)日趨成熟。目前幾乎所有分布式數(shù)據(jù)庫系統(tǒng)均是關(guān)系型的,而且?guī)缀跛兄饕P(guān)系數(shù)據(jù)庫系統(tǒng)均已被擴(kuò)充為分布式數(shù)據(jù)庫系統(tǒng)。
(3)面向?qū)ο蟠?開始九十年代,在這一代中的數(shù)據(jù)庫系統(tǒng)支持面向?qū)ο蟮臄?shù)據(jù)模型。它是數(shù)據(jù)庫技術(shù)與面向?qū)ο蟪绦蛟O(shè)計(jì)方法相結(jié)合的產(chǎn)物。作為新一代數(shù)據(jù)庫系統(tǒng),現(xiàn)在已有了一些商品化系統(tǒng)。但其具體應(yīng)用尚不多。
1.2 數(shù)據(jù)庫系統(tǒng)
本節(jié)主要介紹有關(guān)數(shù)據(jù)庫結(jié)構(gòu)和數(shù)據(jù)庫系統(tǒng)組織的一些基本知識和概念,使讀者對數(shù)據(jù)庫系統(tǒng)的內(nèi)涵有一個(gè)較為清楚的認(rèn)識。
1.2.1 數(shù)據(jù)庫系統(tǒng)概念
由于數(shù)據(jù)庫系統(tǒng)是一個(gè)由許多基本概念、技術(shù)方法和其應(yīng)用對象所組成的復(fù)雜的有機(jī)整體。很難用一兩句話將其描述清楚。但為了使讀者對它有一個(gè)總體的了解,首先這里我們試著給出一個(gè)關(guān)于數(shù)據(jù)庫系統(tǒng)的定義,即數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)庫是一個(gè)已被規(guī)格化和結(jié)構(gòu)化且相互關(guān)聯(lián)的數(shù)據(jù)集合,這些數(shù)據(jù)中不存在有害的或無意義的冗余;數(shù)據(jù)的組織與存儲結(jié)構(gòu)與使用這些數(shù)據(jù)的程序相互獨(dú)立;數(shù)據(jù)庫中的數(shù)據(jù)可同時(shí)為多個(gè)應(yīng)用服務(wù);數(shù)據(jù)庫中的數(shù)據(jù)定義、輸入、修改和檢索等所有操作均是按一種公用的且可控的方式進(jìn)行。根據(jù)這一數(shù)據(jù)庫定義以及實(shí)際應(yīng)用的具體數(shù)據(jù)庫系統(tǒng)的情況,我們可以認(rèn)為一個(gè)數(shù)據(jù)庫系統(tǒng)實(shí)際上是由三部分內(nèi)容組成,它們是數(shù)據(jù)庫、多種應(yīng)用和數(shù)據(jù)庫管理系統(tǒng)。這三部分之間的相互關(guān)系如圖1.2所示。
(1)數(shù)據(jù)庫:相互關(guān)聯(lián)的且具有最小冗余的數(shù)據(jù)在其中按照一定物理組織結(jié)構(gòu)存放,并且從用戶和數(shù)據(jù)庫管理系統(tǒng)角度來看,這些數(shù)據(jù)又是按一定邏輯結(jié)構(gòu)組織的。這種物理組織結(jié)構(gòu)和邏輯組織結(jié)構(gòu)在最大程度上與用戶所編制的應(yīng)用程序相互獨(dú)立。
(2)多種應(yīng)用:數(shù)據(jù)庫中的數(shù)據(jù),在數(shù)據(jù)庫管理系統(tǒng)的控制與管理之下,可以同時(shí)為多種不同內(nèi)容的應(yīng)用提供服務(wù),即可以為多個(gè)不同目的用戶服務(wù),各用戶所操作使用的數(shù)據(jù)可以是相互交叉的。用戶的操作方式既可以按以數(shù)據(jù)輸入/輸出和數(shù)據(jù)維護(hù)為主的數(shù)據(jù)流量較大的批處理方式進(jìn)行;也可以按以查詢?yōu)橹鞯臄?shù)據(jù)流量較小的聯(lián)機(jī)處理方式進(jìn)行,必要時(shí)還可以通過編程來完成對數(shù)據(jù)庫中數(shù)據(jù)的各種操作。
(3)數(shù)據(jù)庫管理系統(tǒng):它一方面負(fù)責(zé)對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行管理和維護(hù);一方面為用戶操作數(shù)據(jù)庫中的數(shù)據(jù)提供一種公用的操作方法,接收用戶的操作命令,幫助完成有關(guān)的對數(shù)據(jù)庫的操作并保障數(shù)據(jù)庫的安全。
根據(jù)對數(shù)據(jù)庫的定義以及數(shù)據(jù)庫系統(tǒng)基本組成及作用的描述,我們認(rèn)為一個(gè)的數(shù)據(jù)庫系統(tǒng)應(yīng)該具有的以下五個(gè)基本特點(diǎn):
【1】由于數(shù)據(jù)庫系統(tǒng)是從整體角度考慮數(shù)據(jù)的組織,因此它必須有能力描述能夠反映客觀事物及其相互聯(lián)系的復(fù)雜數(shù)據(jù)模型,使用它能夠?qū)?shù)據(jù)本身及相互間的各種關(guān)系進(jìn)行充分描述,這也是人們?yōu)槭裁匆捎脭?shù)據(jù)庫系統(tǒng)來進(jìn)行數(shù)據(jù)管理的主要原因之一。目前數(shù)據(jù)庫系統(tǒng)共提供了四種數(shù)據(jù)模型,它們是層次數(shù)據(jù)模型、網(wǎng)狀數(shù)據(jù)模型、關(guān)系數(shù)據(jù)模型和對象數(shù)據(jù)模型,一種類型數(shù)據(jù)庫系統(tǒng)通常只提供上述其中一種數(shù)據(jù)模型描述方法,即只支持其中一種數(shù)據(jù)模型的數(shù)據(jù)邏輯組織結(jié)構(gòu)。
圖1.2 數(shù)據(jù)庫系統(tǒng)組成
【2】數(shù)據(jù)庫中數(shù)據(jù)的獨(dú)立性。為了說明這一點(diǎn),首先我們介紹兩個(gè)概念,(1)數(shù)據(jù)在物理存儲設(shè)備上的組織結(jié)構(gòu)被稱為數(shù)據(jù)的物理組織;(2)數(shù)據(jù)在用戶或應(yīng)用程序面前所表現(xiàn)出的組織結(jié)構(gòu)被稱為數(shù)據(jù)的邏輯組織;一種數(shù)據(jù)的邏輯組織,可以采用不同的物理組織來實(shí)現(xiàn),物理組織的好壞影響著系統(tǒng)的性能和效率。在運(yùn)行階段中,由于性能的要求或存儲設(shè)備的改變,從而引起數(shù)據(jù)物理組織的改變,這種改變稱為數(shù)據(jù)的再組織。用戶在編制應(yīng)用程序時(shí),則是根據(jù)數(shù)據(jù)的邏輯組織對數(shù)據(jù)進(jìn)行操作的。因此數(shù)據(jù)物理組織的變化,不會影響數(shù)據(jù)的邏輯組織,因而也就不會影響已有的應(yīng)用程序,這種情況就被稱為數(shù)據(jù)的物理獨(dú)立性;而數(shù)據(jù)的邏輯獨(dú)立性是指當(dāng)數(shù)據(jù)的邏輯組織發(fā)生變化時(shí),如數(shù)據(jù)模型中增加了新的記錄類型,某一記錄類型中增加了新的數(shù)據(jù)項(xiàng)等,原有應(yīng)用程序的執(zhí)行不受影響或影響最小。數(shù)據(jù)的獨(dú)立性,包括物理和邏輯的獨(dú)立性,都是由數(shù)據(jù)庫管理系統(tǒng)進(jìn)行維護(hù)的。
【3】數(shù)據(jù)共享,由于數(shù)據(jù)庫是從整體的角度對數(shù)據(jù)進(jìn)行組織的,并在保證數(shù)據(jù)一致性的情形之下,使數(shù)據(jù)庫中的數(shù)據(jù)為盡可能多的用戶提供應(yīng)用服務(wù)。這些用戶所使用的數(shù)據(jù)可以是交叉的,即數(shù)據(jù)可以共享。如果數(shù)據(jù)不能共享,數(shù)據(jù)庫中則必然會出現(xiàn)大量的冗余數(shù)據(jù),這樣不僅造成存儲空間的浪費(fèi),更主要的是由此可能帶來數(shù)據(jù)不一致的隱患。
【4】數(shù)據(jù)庫系統(tǒng)的安全可靠與完整,一個(gè)數(shù)據(jù)庫系統(tǒng)的可靠性體現(xiàn)在它的軟件系統(tǒng)運(yùn)行故障率很小以及在數(shù)據(jù)庫系統(tǒng)由于各種意外而出現(xiàn)故障時(shí),數(shù)據(jù)庫中的數(shù)據(jù)的損失最??;安全性是指數(shù)據(jù)庫系統(tǒng)對其所存儲的數(shù)據(jù)的保護(hù)能力,能夠有效地防止數(shù)據(jù)有意無意地泄露或篡改,控制數(shù)據(jù)的授權(quán)訪問等。而數(shù)據(jù)庫系統(tǒng)的完整性則是指在多用戶操作數(shù)據(jù)情況下,數(shù)據(jù)能夠保持一致性。這些特性可以從以下幾個(gè)方面進(jìn)行說明:
〈1〉安全性控制
安全性控制主要指的是數(shù)據(jù)庫的保密性。并不是每個(gè)用戶都能夠存取數(shù)據(jù)庫中所有數(shù)據(jù)的,負(fù)責(zé)人和全體工作人員允許掌握的數(shù)據(jù)范圍顯然是有區(qū)別的,數(shù)據(jù)庫系統(tǒng)把各用戶存取數(shù)據(jù)的權(quán)利分成若干等級,如教學(xué)人員作為一個(gè)用戶可以登錄學(xué)生的成績,而學(xué)生作為一個(gè)用戶則僅可以查閱成績而無法對它進(jìn)行修改或刪除。通過對各個(gè)用戶授于不同的使用權(quán)限,以確保數(shù)據(jù)庫免遭損害和被非法使用,通常是通過采用口令密碼以及數(shù)據(jù)庫中數(shù)據(jù)訪問授權(quán)等方法對使用者操作數(shù)據(jù)的合法權(quán)進(jìn)行檢驗(yàn),以實(shí)現(xiàn)對數(shù)據(jù)庫中數(shù)據(jù)安全性的保護(hù)控制。
〈2〉完整性控制
所謂完整性包括數(shù)據(jù)的正確性、有效性和相容性。正確的數(shù)據(jù)不一定是有效的。如若用兩位阿拉伯?dāng)?shù)字來表示月份,在輸入14來代表月份時(shí)顯然是無效的。數(shù)據(jù)庫系統(tǒng)應(yīng)提供盡可能多的檢驗(yàn)措施,以確保數(shù)據(jù)庫中的數(shù)據(jù)滿足用戶所要求的各種約束要求。
〈3〉并發(fā)控制
在多用戶操作使用數(shù)據(jù)庫系統(tǒng)的情況下,不同用戶并行地操作數(shù)據(jù)庫就可能引起對數(shù)據(jù)庫的干擾,從而使得數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生不一致的問題。如當(dāng)甲用戶從數(shù)據(jù)庫中預(yù)定了僅剩的一張機(jī)票之后,若在數(shù)據(jù)庫尚來不及將剩余的機(jī)票數(shù)改為零時(shí),乙用戶又請求訂票時(shí)怎么辦?顯然對這種并發(fā)的操作要采取某種控制措施,最常用的方法是封鎖技術(shù),以排除和避免這種錯(cuò)誤的發(fā)生,保證數(shù)據(jù)庫中數(shù)據(jù)的操作能夠正確完成執(zhí)行。
〈4〉故障的發(fā)現(xiàn)與恢復(fù)
由于數(shù)據(jù)庫系統(tǒng)在運(yùn)行過程中很難保證不產(chǎn)生故障、出現(xiàn)意義或受到破壞,而且往往這些情況的發(fā)生的時(shí)間都是隨機(jī)的,如斷電、用戶誤操作等,而重建一個(gè)數(shù)據(jù)庫往往要花費(fèi)很大的精力和代價(jià),有時(shí)甚至是不可能的,因此數(shù)據(jù)庫系統(tǒng)應(yīng)提供應(yīng)急保護(hù)設(shè)施,一旦系統(tǒng)的軟硬件發(fā)生故障或用戶誤操作導(dǎo)致系統(tǒng)異常時(shí),系統(tǒng)應(yīng)能夠以盡量小的代價(jià),盡快地恢復(fù)數(shù)據(jù)庫的內(nèi)容和系統(tǒng)的正常運(yùn)行。
【5】良好的人機(jī)接口與性能,任何數(shù)據(jù)庫系統(tǒng)最終都是要和用戶打交道,系統(tǒng)所具有的各種功能最終都需要由用戶來進(jìn)行操作使用。簡單易學(xué)、操作簡便和用戶界面友好是任何一個(gè)數(shù)據(jù)庫系統(tǒng)所必須的。此外系統(tǒng)的響應(yīng)速度,單位時(shí)間內(nèi)數(shù)據(jù)的吞吐量也是衡量數(shù)據(jù)庫性能重要指標(biāo)。
1.2.2 數(shù)據(jù)庫結(jié)構(gòu)
在上一小節(jié),我們介紹了數(shù)據(jù)庫系統(tǒng)所涉及的三個(gè)基本成分以及數(shù)據(jù)庫系統(tǒng)所應(yīng)具有的五個(gè)特點(diǎn),在這一小節(jié)中,我們將略為詳盡地介紹數(shù)據(jù)庫系統(tǒng)的主要組成之一,數(shù)據(jù)庫的有關(guān)知識。在數(shù)據(jù)庫技術(shù)中,為了提高數(shù)據(jù)庫中數(shù)據(jù)的邏輯獨(dú)立性和物理獨(dú)立性,采用了分級(層)方法,將數(shù)據(jù)庫中數(shù)據(jù)的組織結(jié)構(gòu)劃分成多個(gè)級(層)。根據(jù)美國國家標(biāo)準(zhǔn)協(xié)會(ANSI)所提出的報(bào)告,數(shù)據(jù)庫的數(shù)據(jù)組織結(jié)構(gòu)可以分為三個(gè)相互關(guān)聯(lián)的層次,它們分別是概念層數(shù)據(jù)模式、用戶層數(shù)據(jù)模式和物理層數(shù)據(jù)模式。
【1】概念層數(shù)據(jù)模式,又稱為模式,它是對數(shù)據(jù)庫中數(shù)據(jù)整體邏輯結(jié)構(gòu)的描述,它是對數(shù)據(jù)庫中所有數(shù)據(jù)項(xiàng)、記錄類型以及各記錄類型之間的相互關(guān)系的描述。這里需要說明的是,這種描述僅僅是一種邏輯組織結(jié)構(gòu)的描述,是面向用戶需要而提出的。而非是真正的數(shù)據(jù)存儲組織結(jié)構(gòu)。提供這一層次的數(shù)據(jù)模式描述,主要是為了數(shù)據(jù)庫應(yīng)用系統(tǒng)的設(shè)計(jì)者,在對與應(yīng)用有關(guān)的所有用戶的需求進(jìn)行統(tǒng)一綜合考慮之后提出的,它能夠從總體上,將這些需求所涉及到的數(shù)據(jù)及其它們間的相互聯(lián)系,有機(jī)地結(jié)合成為一個(gè)邏輯整體。概念層數(shù)據(jù)模式的設(shè)計(jì)是數(shù)據(jù)庫設(shè)計(jì)的最基本也是最重要的任務(wù)。
【2】用戶層數(shù)據(jù)模式,又稱為外模式或子模式,它是對以用戶為對象使用數(shù)據(jù)庫所涉及到的所有數(shù)據(jù)局部邏輯結(jié)構(gòu)的描述。它是模式一個(gè)子集或者是一個(gè)映射,一個(gè)數(shù)據(jù)庫只有一個(gè)模式,但通常都對應(yīng)著多個(gè)子模式。子模式所包含的數(shù)據(jù)之間容許有重疊,也容許多個(gè)用戶共用同一個(gè)子模式。提供這一層次的數(shù)據(jù)模式描述,有以下優(yōu)點(diǎn):
〈1〉用戶只要按照描述自己所使用數(shù)據(jù)的子模式編寫應(yīng)用程序或輸入操作命令,就可以完成滿足自己要求的數(shù)據(jù)庫操縱工作。而無需了解整體數(shù)據(jù)模式或數(shù)據(jù)的存儲組織結(jié)構(gòu),從而是用戶接口變得簡單。
〈2〉保證了數(shù)據(jù)獨(dú)立性。由于用戶的數(shù)據(jù)庫應(yīng)用編程僅僅是依據(jù)子模式的數(shù)據(jù)邏輯結(jié)構(gòu)的描述,而子模式一般都是模式的一個(gè)真子集,因此若因需要而對模式所描述的數(shù)據(jù)邏輯結(jié)構(gòu)進(jìn)行部分修改或擴(kuò)充時(shí),如增加新的數(shù)據(jù)項(xiàng)或者增加新的記錄類型等,只要不影響子模式從模式中的原有的映射關(guān)系,那么用戶依據(jù)子模式所開發(fā)的應(yīng)用程序,則就不受模式變動(dòng)的任何影響。所以提供模式與子模式這兩層數(shù)據(jù)邏輯結(jié)構(gòu)的描述,就可以較好地保證數(shù)據(jù)的邏輯獨(dú)立性。
〈3〉數(shù)據(jù)能夠被較好地共享。由于同一模式可以產(chǎn)生許多不同的子模式,這些子模式所描述的數(shù)據(jù)可以來源于模式所描述的全局?jǐn)?shù)據(jù)邏輯結(jié)構(gòu)中各種數(shù)據(jù)項(xiàng)或記錄類型,因此這樣做,這樣就可以很方便地實(shí)現(xiàn)數(shù)據(jù)的共享,也就大大減少了數(shù)據(jù)可能存在的冗余,從而有利于保證數(shù)據(jù)的一致性、完整性和正確性。
〈4〉有利于保證數(shù)據(jù)的安全和保密。由于用戶是通過其相應(yīng)的應(yīng)用程序?qū)?shù)據(jù)庫中數(shù)據(jù)進(jìn)行操作,因此他只能操作其子模式所描述范圍內(nèi)的數(shù)據(jù),而無法接觸到其它用戶及其子模式所描述的數(shù)據(jù),由此就可以保證數(shù)據(jù)庫中的數(shù)據(jù)具有較好的安全性。
【3】物理層數(shù)據(jù)模式,又稱為內(nèi)模式或物理模式。它是對數(shù)據(jù)庫中所有數(shù)據(jù)在物理設(shè)備上實(shí)際存儲的組織結(jié)構(gòu)的描述。數(shù)據(jù)庫數(shù)據(jù)根據(jù)這一層數(shù)據(jù)模式的描述,被存放到若干按各種組織方式建立起來的物理文件中,對這些物理文件的所有存取訪問的控制都是由數(shù)據(jù)庫管理系統(tǒng)統(tǒng)一控制的。管理系統(tǒng)負(fù)責(zé)完成從概念層數(shù)據(jù)模式到物理層數(shù)據(jù)模式之間的數(shù)據(jù)映射,這樣由于所有的數(shù)據(jù)庫應(yīng)用程序或服務(wù)所涉及到數(shù)據(jù)又都是根據(jù)模式的數(shù)據(jù)描述得到的,因此當(dāng)數(shù)據(jù)庫數(shù)據(jù)的物理組織結(jié)構(gòu)發(fā)生變化時(shí),概念層數(shù)據(jù)模式描述通常無需修改,同樣也就保證了與模式相關(guān)聯(lián)的子模式和用戶應(yīng)用程序也無需修改,從而使得數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)也具有的物理獨(dú)立性。
圖1.3 數(shù)據(jù)庫結(jié)構(gòu)各模式間關(guān)系
由于一個(gè)數(shù)據(jù)庫是采用上述的三個(gè)層結(jié)構(gòu)方式對其中的數(shù)據(jù)組織進(jìn)行描述的,從而較好地保證了數(shù)據(jù)的邏輯獨(dú)立性和物理獨(dú)立性,方便了用戶對數(shù)據(jù)庫中數(shù)據(jù)的操作使用,減少了數(shù)據(jù)冗余。這三層模式之間的相互關(guān)系如圖1.3所示。由于數(shù)據(jù)庫中數(shù)據(jù),實(shí)際上是按照物理層數(shù)據(jù)模式進(jìn)行存儲的,而概念層數(shù)據(jù)模式和用戶層數(shù)據(jù)模式都只是對物理層數(shù)據(jù)模式描述的數(shù)據(jù)的一種逐級(層)地邏輯抽象,用戶在對數(shù)據(jù)庫進(jìn)行操作時(shí),都必須通過數(shù)據(jù)庫管理系統(tǒng),來完成從用戶層數(shù)據(jù)模式到概念層數(shù)據(jù)模式之間、概念層數(shù)據(jù)模式到物理層數(shù)據(jù)模式之間這兩種映射,當(dāng)然這兩種映射是由管理系統(tǒng)自動(dòng)完成的,對用戶是透明的。
目前實(shí)際應(yīng)用的中高檔數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)組織結(jié)構(gòu)基本上是按照上述三層模式標(biāo)準(zhǔn),來描述數(shù)據(jù)組織的。也有一些中低檔數(shù)據(jù)庫系統(tǒng),為了方便一般用戶的操作使用,對上述三層模式標(biāo)準(zhǔn)進(jìn)行了一些簡化,它們往往采用一層或二層模式來描述數(shù)據(jù)組織結(jié)構(gòu),通常都略去了物理層的數(shù)據(jù)模式描述。
1.2.3 數(shù)據(jù)庫系統(tǒng)
數(shù)據(jù)庫系統(tǒng)的核心是數(shù)據(jù)庫管理系統(tǒng)(DataBase Management System,簡稱DBMS),在它的控制和幫助下,用戶可以建立、使用、修改和維護(hù)數(shù)據(jù)庫中數(shù)據(jù)。數(shù)據(jù)庫管理系統(tǒng)是建立在操作系統(tǒng)之上的應(yīng)用軟件平臺。它一般具有以下三個(gè)主要功能:
(1)提供操作數(shù)據(jù)庫的用戶高級接口。具體講就是(A)提供數(shù)據(jù)描述語言,供用戶對整個(gè)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行各種邏輯和物理組織結(jié)構(gòu)描述,而這些組織結(jié)構(gòu)的具體實(shí)現(xiàn)細(xì)節(jié),則由DBMS完成,用戶不必關(guān)心。(B)提供數(shù)據(jù)操縱語言,供用戶對數(shù)據(jù)庫中數(shù)據(jù)按照其定義邏輯組織結(jié)構(gòu)進(jìn)行各種操作,如插入、刪除、修改和查詢等,這些操作的的具體實(shí)現(xiàn)細(xì)節(jié),則也由DBMS完成,用戶不必關(guān)心。(C)同時(shí)還可能提供其它工具,如用戶界面生成工具、報(bào)表生成工具等,幫助用戶更加容易地對數(shù)據(jù)庫的操縱進(jìn)行編程。
(2)管理數(shù)據(jù)庫。它主要包括以下功能:(A)控制整個(gè)數(shù)據(jù)庫系統(tǒng)的運(yùn)行;(B)控制用戶對數(shù)據(jù)庫的并發(fā)性操作;(C)執(zhí)行對數(shù)據(jù)庫中數(shù)據(jù)的安全、保密、有效性和完整性檢驗(yàn);(D)實(shí)施對數(shù)據(jù)庫中數(shù)據(jù)的檢索、插入、刪除、修改等操作。(E)維護(hù)數(shù)據(jù)庫數(shù)據(jù)組織結(jié)構(gòu)的完整和一致。
(3)維護(hù)數(shù)據(jù)庫,主要包括:(A)初始化時(shí)數(shù)據(jù)庫數(shù)據(jù)的裝入;(B)運(yùn)行時(shí)記錄下與用戶、操作、系統(tǒng)狀態(tài)和結(jié)果等信息的工作日志;(C)監(jiān)視數(shù)據(jù)庫性能;在性能變壞時(shí),重新組織數(shù)據(jù)庫;(D)在數(shù)據(jù)庫系統(tǒng)的硬件或軟件發(fā)生故障后,對數(shù)據(jù)庫中受破壞的數(shù)據(jù)進(jìn)行恢復(fù)。
這一小節(jié),將略為詳盡地介紹與數(shù)據(jù)庫管理軟件有關(guān)的一些基本情況。
(一)數(shù)據(jù)庫系統(tǒng)語言
數(shù)據(jù)庫系統(tǒng)語言是用戶與數(shù)據(jù)庫系統(tǒng)進(jìn)行交互操作的主要工具,是連接用戶與數(shù)據(jù)庫系統(tǒng)的橋梁。數(shù)據(jù)庫語言功能的強(qiáng)弱直接影響到用戶使用數(shù)據(jù)庫系統(tǒng)的方便程度。數(shù)據(jù)庫系統(tǒng)語言通常包括數(shù)據(jù)庫數(shù)據(jù)描述語言DDL(Data Description Language)和數(shù)據(jù)庫數(shù)據(jù)操作語言DML(Data Manipulation Language)這兩種語言。數(shù)據(jù)描述語言用于描述數(shù)據(jù)庫中各種模式的定義;而數(shù)據(jù)操作語言則是用于描述對數(shù)據(jù)庫中數(shù)據(jù)所要進(jìn)行的各種操作。這里我們將概述這兩種語言一些基本功能。
【1】數(shù)據(jù)描述語言
數(shù)據(jù)描述語言是建立和使用數(shù)據(jù)庫的重要工具,它是用于描述數(shù)據(jù)庫各層數(shù)據(jù)模式描述的語言。數(shù)據(jù)庫管理系統(tǒng)將對用戶用該語言所描述的各層數(shù)據(jù)模式,進(jìn)行編譯,產(chǎn)生可供數(shù)據(jù)庫系統(tǒng)操作時(shí)所使用的目標(biāo)模式。對應(yīng)著數(shù)據(jù)庫的模式、子模式和內(nèi)模式,數(shù)據(jù)描述語言又可分為模式描述語言、子模式描述語言和內(nèi)模式描述語言。它們各自的功能如下:
(1)模式描述語言,它是用來描述數(shù)據(jù)庫概念層數(shù)據(jù)模式的,即用于描述數(shù)據(jù)庫中所有數(shù)據(jù)以及它們間相互關(guān)系的特性。用模式描述語言寫出的數(shù)據(jù)庫全體數(shù)據(jù)的邏輯組織結(jié)構(gòu)的全部語句的集合,通常就被稱為一個(gè)模式,一個(gè)模式的主要內(nèi)容有:
① 給數(shù)據(jù)庫總體數(shù)據(jù)的邏輯組織結(jié)構(gòu),即模式取名
② 描述模式中每個(gè)記錄類型名稱,以及其中各數(shù)據(jù)項(xiàng)的名稱、數(shù)據(jù)類型(如字符型、數(shù)字型等)和數(shù)據(jù)長度等。
③ 描述模式中各記錄類型之間的相互聯(lián)系,如果存在有相互聯(lián)系的話。
一個(gè)模式僅僅是對數(shù)據(jù)庫概念層邏輯數(shù)據(jù)組織結(jié)構(gòu)的一個(gè)描述,并非是概念層邏輯數(shù)據(jù)本身。與其它程序語言一樣,模式描述語言也有自己的一套清晰而又嚴(yán)格的語句和語法規(guī)則。對應(yīng)不同類型的數(shù)據(jù)庫系統(tǒng),如層次數(shù)據(jù)庫系統(tǒng)和網(wǎng)狀數(shù)據(jù)庫系統(tǒng),它們的模式描述語言也有很大差別,即使是同一類型數(shù)據(jù)庫系統(tǒng),如關(guān)系數(shù)據(jù)庫系統(tǒng),不同軟件商推出的系統(tǒng),其模式描述語言也不盡相同。但有一點(diǎn)是一致的,這就是它們都必須是可對上面所說明的,描述一個(gè)模式所需要包括的三個(gè)基本方面進(jìn)行定義說明。
(2)子模式描述語言,它是用來描述數(shù)據(jù)庫用戶層數(shù)據(jù)模式的,即用于描述用戶所使用的數(shù)據(jù)的邏輯數(shù)據(jù)組織結(jié)構(gòu)的定義。用子模式描述語言寫出的用戶局部數(shù)據(jù)邏輯組織結(jié)構(gòu)的全部語句的集合,通常就被稱為一個(gè)子模式,一個(gè)子模式的主要內(nèi)容有:
① 給用戶使用數(shù)據(jù)庫所涉及到局部數(shù)據(jù)的邏輯組織結(jié)構(gòu),即子模式取名
② 描述子模式中所包含的每個(gè)記錄類型及其中的各數(shù)據(jù)項(xiàng),這些記錄類型的名稱以及各數(shù)據(jù)項(xiàng)的名稱和長度,可以與模式中的定義有所不同,但這里主要是描述子模式中的記錄類型及其數(shù)據(jù)項(xiàng)與模式中記錄類型及其數(shù)據(jù)項(xiàng)之間的對應(yīng)映射關(guān)系,子模式中所描述的記錄及其中的數(shù)據(jù)項(xiàng)必須是已在模式中定義過的。
③ 描述子模式中各記錄類型之間的相互聯(lián)系。這里同樣是描述子模式中的記錄間相互聯(lián)系與模式中記錄間相互聯(lián)系之間的對應(yīng)映射關(guān)系。子模式中所描述的記錄間相互聯(lián)系必須是已在模式中定義過的。
與模式描述語言不同,子模式描述語言有時(shí)與編寫應(yīng)用程序所采用的其它程序設(shè)計(jì)語言相關(guān),因此根據(jù)子模式描述語言所適用的編寫應(yīng)用程序語言,子模式描述語言也可分為COBOL子模式描述語言、FORTRAN子模式描述語言和C子模式描述語言等。
(3)內(nèi)模式描述語言,它是用來描述數(shù)據(jù)庫中數(shù)據(jù)在物理存貯介質(zhì)上的組織結(jié)構(gòu)和存放方式等,它與數(shù)據(jù)庫系統(tǒng)所運(yùn)行的硬件環(huán)境特性相關(guān)。例如,系統(tǒng)建立了哪些物理文件?文件的存貯設(shè)備是什么?文件是以什么樣的組織方式等等,這些都是由內(nèi)模式描述語言來負(fù)責(zé)描述的。
上述內(nèi)容僅僅是關(guān)于數(shù)據(jù)描述語言中一些最基本的部分。通常各軟件商生產(chǎn)出的數(shù)據(jù)庫系統(tǒng),往往都要根據(jù)自己的具體實(shí)現(xiàn)情況,提供出相應(yīng)的一整套數(shù)據(jù)描述語言的規(guī)范,其中也有一些數(shù)據(jù)庫系統(tǒng),對上述的數(shù)據(jù)描述語言的標(biāo)準(zhǔn)進(jìn)行了一些簡化,只給出一種或二種描述語言定義,或干脆將數(shù)據(jù)描述語言與數(shù)據(jù)操作語言歸并到了一起,以方便用戶使用。如FoxPro數(shù)據(jù)庫系統(tǒng),以及目前比較流行的基于SQL的多種數(shù)據(jù)庫系統(tǒng)。
【2】數(shù)據(jù)操作語言
數(shù)據(jù)操縱語言是用戶操縱數(shù)據(jù)庫中數(shù)據(jù)的工具,用戶借助它來實(shí)現(xiàn)從數(shù)據(jù)庫中檢索數(shù)據(jù)、向數(shù)據(jù)庫中添加數(shù)據(jù)、刪除數(shù)據(jù)庫中沒有保留價(jià)值的數(shù)據(jù)或修改某些發(fā)生變化的數(shù)據(jù)等操作。
數(shù)據(jù)操縱語言通常分為兩種類型,即宿主式數(shù)據(jù)操縱語言和自含式數(shù)據(jù)操縱語言。自含式數(shù)據(jù)操縱語言在數(shù)據(jù)庫系統(tǒng)中可獨(dú)立使用,是一種完整的語言,這類語言使用簡單方便,很適合于在終端上使用。這類語言的優(yōu)點(diǎn)是系統(tǒng)運(yùn)行效率較高且使用簡單,缺點(diǎn)是它的應(yīng)用范圍常常受到限制,例如要提取出數(shù)據(jù)庫中的一些數(shù)據(jù)進(jìn)行某種復(fù)雜運(yùn)算處理時(shí),單靠數(shù)據(jù)庫系統(tǒng)所提供的這類數(shù)據(jù)操縱語言有時(shí)就很難做到這一點(diǎn)。自含式數(shù)據(jù)操縱語言通常包含以下基本操作功能:(A)從數(shù)據(jù)庫中選擇滿足一定要求的記錄或聯(lián)系;(B)增加新的記錄或聯(lián)系到數(shù)據(jù)庫中;(C)修改數(shù)據(jù)庫中的記錄或聯(lián)系;(D)刪除數(shù)據(jù)庫中的記錄或聯(lián)系;
另一種是宿主式數(shù)據(jù)操縱語言,它不能單獨(dú)使用,必須嵌入到某種程序設(shè)計(jì)語言(如C,COBOL,F(xiàn)ORTRAN)之中方能進(jìn)行數(shù)據(jù)庫操作,這種數(shù)據(jù)操縱語言語句僅負(fù)責(zé)對數(shù)據(jù)庫中數(shù)據(jù)的操作,其它復(fù)雜的數(shù)據(jù)處理工作均有主語言完成,有時(shí)這樣做會使得用戶的應(yīng)用程序變得相當(dāng)復(fù)雜。由于這樣的程序既包含了主語言語句,也包含了數(shù)據(jù)操縱語言語句,也就使得主語言原來的編譯程序便不能完全編譯應(yīng)用程序了,解決這一問題有兩種辦法:(A)重新設(shè)計(jì)和實(shí)現(xiàn)一個(gè)編譯程序,使之能編譯包括數(shù)據(jù)操縱語言和主語言的所有語句,這種辦法不大現(xiàn)實(shí)經(jīng)濟(jì);(B)不修改主語言編譯程序,而是設(shè)計(jì)一個(gè)預(yù)編程序來對應(yīng)用程序中的數(shù)據(jù)操縱語言進(jìn)行預(yù)編譯,將其首先轉(zhuǎn)換成用主語言寫的程序,然后再用主語言的編譯程序來編譯,以產(chǎn)生最后的目標(biāo)程序。這樣做辦法比較可行,目前已為許多數(shù)據(jù)庫系統(tǒng)所采用。
實(shí)際上許多數(shù)據(jù)庫系統(tǒng)除了提供上述兩種數(shù)據(jù)操作語言之外,還提供了許多編程工具和或編程命令,以便幫助用戶更加容易地編制數(shù)據(jù)庫的應(yīng)用程序,如用戶界面生成工具、報(bào)表生成工具和數(shù)據(jù)庫API接口等。
(二)數(shù)據(jù)庫系統(tǒng)運(yùn)行管理與控制軟件
數(shù)據(jù)庫系統(tǒng)運(yùn)行管理與控制軟件是數(shù)據(jù)庫管理系統(tǒng)軟件的實(shí)際組成,它主要包括語言編譯處理程序、系統(tǒng)運(yùn)行控制程序和數(shù)據(jù)庫日常管理程序以及數(shù)據(jù)庫工具等多種軟件。下面將概述這幾種軟件一些基本功能
(1)語言編譯處理程序。它主要包括:(A)數(shù)據(jù)庫系統(tǒng)中各種數(shù)據(jù)描述語言的編譯處理程序,它們的作用是將各種采用模式描述語言所定義數(shù)據(jù)模式編譯成DBMS所使用的內(nèi)部定義目標(biāo)模式。(B)數(shù)據(jù)庫系統(tǒng)各種數(shù)據(jù)操縱語言的處理程序,它們可將應(yīng)用程序中采用數(shù)據(jù)操縱語言所寫的數(shù)據(jù)操作語句轉(zhuǎn)換成其宿主語言編譯程序所能處理的語句。(C)終端操作命令解釋程序,它主要用于解釋終端操作命令的意義,完成相應(yīng)數(shù)據(jù)庫系統(tǒng)命令的執(zhí)行過程。(D)數(shù)據(jù)庫控制命令解釋程序,它負(fù)責(zé)解釋執(zhí)行每一條數(shù)據(jù)庫控制命令。
(2)系統(tǒng)運(yùn)行控制程序。它主要包括:(A)數(shù)據(jù)庫系統(tǒng)的總控程序,它用于檢查訪問的合法性,以決定一個(gè)訪問是否能使用數(shù)據(jù)庫。(B)并發(fā)控制程序。協(xié)調(diào)多個(gè)應(yīng)用程序?qū)?shù)據(jù)庫的操作,保證數(shù)據(jù)庫中數(shù)據(jù)的一致性。(C)保密控制程序。實(shí)現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)的安全保密控制。(D)數(shù)據(jù)完整性控制程序。核對數(shù)據(jù)庫完整性約束條件,以決定對數(shù)據(jù)庫的操作是否有效。(E)數(shù)據(jù)庫存取訪問程序。實(shí)施對數(shù)據(jù)庫中數(shù)據(jù)的操作,如執(zhí)行檢索、插入、修改、刪除等操作。(F)通訊控制程序。實(shí)現(xiàn)用戶程序與DBMS之間的通訊。
(3)數(shù)據(jù)庫日常管理程序。這主要包括:(A)數(shù)據(jù)裝入程序。實(shí)現(xiàn)將初始數(shù)據(jù)裝入數(shù)據(jù)庫。(B)系統(tǒng)恢復(fù)程序。當(dāng)軟硬件出現(xiàn)故障時(shí),利用恢復(fù)程序?qū)?shù)據(jù)庫恢復(fù)到正確狀態(tài)。(C)工作日志程序。負(fù)責(zé)記載進(jìn)入數(shù)據(jù)庫的所有訪問,其內(nèi)容包括用戶名稱、進(jìn)入系統(tǒng)時(shí)間、進(jìn)行何種操作、數(shù)據(jù)變更情況等等。使每個(gè)用戶每次訪問都留下蹤跡。(D)性能監(jiān)測程序。監(jiān)測操作執(zhí)行時(shí)間與存貯空間占用情況,為數(shù)據(jù)庫的再組織提供依據(jù)。(E)重新組織程序。當(dāng)數(shù)據(jù)庫系統(tǒng)性能變壞時(shí),對數(shù)據(jù)庫重新進(jìn)行物理組織。(F)轉(zhuǎn)貯、編輯、打印程序、用于轉(zhuǎn)貯數(shù)據(jù)庫的部分和全部數(shù)據(jù),或者編輯打印數(shù)據(jù)等。
(4)數(shù)據(jù)庫工具軟件。它主要是為了方便建立數(shù)據(jù)庫系統(tǒng)的具體應(yīng)用,而提供各種工具軟件。其中有數(shù)據(jù)庫系統(tǒng)應(yīng)用程序界面制作工具,報(bào)表制作工具等許多軟件工具。
最后我們簡單介紹一下建立數(shù)據(jù)庫應(yīng)用系統(tǒng)的基本知識。數(shù)據(jù)庫應(yīng)用系統(tǒng)的設(shè)計(jì)方法我們將在第五章詳細(xì)介紹。與其它應(yīng)用軟件開發(fā)與應(yīng)用過程一樣,數(shù)據(jù)庫系統(tǒng)的應(yīng)用,也有一個(gè)生命周期,它主要由以下五個(gè)階段構(gòu)成:
(1)數(shù)據(jù)庫系統(tǒng)的規(guī)劃。它包括系統(tǒng)的應(yīng)用范圍和功能的確認(rèn)、應(yīng)用環(huán)境的分析、DBMS及其支撐環(huán)境的選擇、硬件配置,人員的配備和培訓(xùn),投資估算和效益分析等活動(dòng)。
(2)數(shù)據(jù)庫系統(tǒng)的設(shè)計(jì)。它包括了解應(yīng)用系統(tǒng)的信息和處理需求,設(shè)計(jì)滿足其要求的整體數(shù)據(jù)模型及處理流程,并結(jié)合具體所采用的數(shù)據(jù)庫系統(tǒng)、硬件環(huán)境和系統(tǒng)軟件平臺的特點(diǎn),設(shè)計(jì)出符合具體數(shù)據(jù)庫系統(tǒng)應(yīng)用要求的數(shù)據(jù)模型,及其應(yīng)用軟件的流程圖。選擇合適的商用數(shù)據(jù)庫系統(tǒng),來設(shè)計(jì)、建立、管理和維護(hù)數(shù)據(jù)庫系統(tǒng),使之能夠?yàn)橛脩籼峁┳罴逊?wù)。
(3)數(shù)據(jù)庫系統(tǒng)的建立。首先根據(jù)數(shù)據(jù)庫系統(tǒng)的設(shè)計(jì)結(jié)果,定義數(shù)據(jù)模式,規(guī)定訪問權(quán)限,設(shè)置完整性約束。然后準(zhǔn)備數(shù)據(jù),對其進(jìn)行正確性校驗(yàn)后,將其錄入,與此同時(shí),完成主要應(yīng)用程序的編制工作。
(4)數(shù)據(jù)庫系統(tǒng)的管理。它包括應(yīng)用軟件的編制與修改、數(shù)據(jù)庫的重新組織、數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的備份與恢復(fù)等工作。保證數(shù)據(jù)庫系統(tǒng)的完好,為用戶提供可靠的服務(wù)。
(5)數(shù)據(jù)庫系統(tǒng)的調(diào)整。由于應(yīng)用數(shù)據(jù)庫系統(tǒng)的用戶所在的硬環(huán)境,如單位組織調(diào)整、人員變化等,軟環(huán)境,如人員素質(zhì)、應(yīng)用要求等,發(fā)生變化,在數(shù)據(jù)庫系統(tǒng)運(yùn)行一段時(shí)間后,往往都需要進(jìn)行擴(kuò)充與重構(gòu),即需要對數(shù)據(jù)庫系統(tǒng)的各種數(shù)據(jù)模式的定義和處理流程進(jìn)行適當(dāng)?shù)男薷暮脱a(bǔ)充,使之適應(yīng)新的形勢。
一般與一個(gè)數(shù)據(jù)庫系統(tǒng)的應(yīng)用系統(tǒng)有關(guān)的人員,有以下四類,他們是:(A)系統(tǒng)管理員,他的任務(wù)主要是定義數(shù)據(jù)庫系統(tǒng)的物理存儲模式,分配并管理各用戶操作的權(quán)限,管理日常數(shù)據(jù)庫系統(tǒng)的運(yùn)行工作,以及維護(hù)數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù),保證其完整和安全、(B)系統(tǒng)分析員,他們的任務(wù)主要是,從整體上分析數(shù)據(jù)庫系統(tǒng)應(yīng)用所涉及的客觀信息結(jié)構(gòu)和內(nèi)容,定義相應(yīng)的數(shù)據(jù)庫系統(tǒng)的全局?jǐn)?shù)據(jù)模式;(C)應(yīng)用程序員,他們的任務(wù)主要是分析具體用戶的信息處理需要,定義數(shù)據(jù)庫系統(tǒng)的子模式,編寫具體數(shù)據(jù)庫應(yīng)用程序;(D)用戶,他們具體的數(shù)據(jù)庫應(yīng)用程序和數(shù)據(jù)庫的最終使用者。
(三)數(shù)據(jù)庫系統(tǒng)訪問示例
這里,我們介紹一下普通用戶讀取數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)時(shí),數(shù)據(jù)庫的工作過程(如圖1.4所示),以便使讀者可以從中了解DBMS是如何來進(jìn)行數(shù)據(jù)庫系統(tǒng)的管理工作的。用戶訪問數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的過程實(shí)際上就是用戶與DBMS進(jìn)行交互的過程。其具體步驟如下:
(1)用戶通過應(yīng)用程序指明它使用的子模式名稱,發(fā)出數(shù)據(jù)操作命令,DBMS通過處理用戶的應(yīng)用程序,接收該操作命令。
(2)DBMS按照應(yīng)用程序中的子模式名稱,調(diào)出相應(yīng)的子模式,核對該用戶的訪問權(quán)利、操作合法性等,若檢查通過則繼續(xù)執(zhí)行,否則拒絕執(zhí)行并報(bào)告出錯(cuò)信息。
(3)DBMS按模式確定子模式中操作所涉及的記錄類型,并通過模式到存儲模式的映射,找出這些記錄類型的相應(yīng)存貯模式。
(4)DBMS查閱存貯模式,確定應(yīng)從哪個(gè)物理文件、存貯設(shè)備以及調(diào)用哪個(gè)訪問程序去讀取所需的記錄。
(5)DBMS的訪問程序找到有關(guān)的物理數(shù)據(jù)地址,向操作系統(tǒng)發(fā)出讀操作命令。
(6)操作系統(tǒng)收到DBMS發(fā)來的命令后,啟動(dòng)系統(tǒng)的輸入/輸出程序完成讀操作,把要讀取的數(shù)據(jù)塊送到內(nèi)存中的系統(tǒng)緩沖區(qū)。
(7)DBMS收到操作系統(tǒng)關(guān)于輸入/輸出操作結(jié)束回答后,按模式、子模式的定義,將已讀入到系統(tǒng)緩沖區(qū)的內(nèi)容映射為用戶程序所要的邏輯記錄,并送到用戶的工作區(qū)中。
(8)DBMS向應(yīng)用程序發(fā)送反映操作執(zhí)行結(jié)果的狀態(tài)信息(由狀態(tài)字描述),如“執(zhí)行成功”、“數(shù)據(jù)未找到”等。
(9)記載DBMS系統(tǒng)的工作日志。
(10)應(yīng)用程序檢查狀態(tài)信息,如執(zhí)行成功,則可對程序工作區(qū)中的數(shù)據(jù)作正常處理,否則按出錯(cuò)類型決定程序的后續(xù)處理。
用戶修改一個(gè)記錄的操作步驟也是類似的。首先讀出所需記錄,在程序工作區(qū)中修改好,而后再把修改好的記錄寫回?cái)?shù)據(jù)庫中原記錄的位置上。
圖1.4 數(shù)據(jù)庫的工作過程
1.3 實(shí)體聯(lián)系模型
本節(jié)主要介紹有關(guān)實(shí)體聯(lián)系模型的概念和基本知識,使讀者了解并掌握基本的實(shí)體聯(lián)系模型的使用方法。
1.3.1 模型的組成
我們都知道數(shù)據(jù)是表達(dá)信息的一種重要的量化符號,是信息存在的一種重要形式。而所謂數(shù)據(jù)模型則是數(shù)據(jù)特征的一種抽象。它不是描述個(gè)別的數(shù)據(jù),而是描述數(shù)據(jù)的共性。一般來講,數(shù)據(jù)模型包含兩方面內(nèi)容,它們是:(1)數(shù)據(jù)的靜態(tài)特性,這主要包括數(shù)據(jù)的基本結(jié)構(gòu)、數(shù)據(jù)間的聯(lián)系和數(shù)據(jù)中的相互約束等特性;(2)數(shù)據(jù)的動(dòng)態(tài)特性,這主要包括對數(shù)據(jù)操作的方法。在數(shù)據(jù)庫應(yīng)用系統(tǒng)中,建立反映客觀信息范疇的數(shù)據(jù)模型是數(shù)據(jù)庫應(yīng)用系統(tǒng)設(shè)計(jì)中最為重要的,也最基本的步驟之一,它是連接客觀信息世界和數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)邏輯組織的橋梁。也是計(jì)算機(jī)專業(yè)人員與非計(jì)算機(jī)專業(yè)的用戶之間進(jìn)行交流的共同基礎(chǔ)。這里我們將要介紹的數(shù)據(jù)模型就是實(shí)體聯(lián)系數(shù)據(jù)模型(又稱E-R數(shù)據(jù)模型),它與傳統(tǒng)的數(shù)據(jù)模型有所不同。E-R數(shù)據(jù)模型是面向現(xiàn)實(shí)世界,而不是面向?qū)崿F(xiàn)方法的,它主要是用于描述現(xiàn)實(shí)信息世界中數(shù)據(jù)的靜態(tài)特性。而不涉及數(shù)據(jù)的處理過程。但由于它簡單易學(xué),因而在數(shù)據(jù)庫系統(tǒng)應(yīng)用的設(shè)計(jì)中,得到了廣泛應(yīng)用。
E-R數(shù)據(jù)模型是P.P.Chen在1976年提出的,它為數(shù)據(jù)庫系統(tǒng)應(yīng)用的設(shè)計(jì)人員提供了三個(gè)基本的模型描述成分,它們是實(shí)體、聯(lián)系和屬性。E-R數(shù)據(jù)模型就是利用這三個(gè)成分來描述反映一個(gè)客觀信息世界內(nèi)容的數(shù)據(jù)模型。在數(shù)據(jù)庫應(yīng)用系統(tǒng)設(shè)計(jì)中,通常還需要將這一數(shù)據(jù)模型轉(zhuǎn)換為各數(shù)據(jù)庫管理系統(tǒng)所支持的具體數(shù)據(jù)模型,即層次數(shù)據(jù)模型、網(wǎng)狀數(shù)據(jù)模型和關(guān)系數(shù)據(jù)模型等。由此我們也可以看出E-R數(shù)據(jù)模型是從現(xiàn)實(shí)信息世界到數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)邏輯組織結(jié)構(gòu)設(shè)計(jì)之間的一個(gè)中間階段,只所以是這樣,主要是因?yàn)槿绻苯訉F(xiàn)實(shí)世界的信息,構(gòu)造成某個(gè)DBMS所能接受的數(shù)據(jù)邏輯組織結(jié)構(gòu),其工作往往是十分復(fù)雜而且難度也很大,應(yīng)用設(shè)計(jì)人員不僅要考慮現(xiàn)實(shí)世界各種信息及其內(nèi)在的聯(lián)系,以及各種具體應(yīng)用對數(shù)據(jù)處理的要求,而且還要考慮采用某種特定的數(shù)據(jù)庫系統(tǒng)后,所面臨的各種條件限制,這樣就大大增加了應(yīng)用系統(tǒng)設(shè)計(jì)的復(fù)雜性。
下面我們就介紹一下E-R數(shù)據(jù)模型中的三個(gè)基本要素,即實(shí)體、聯(lián)系和屬性的有關(guān)基本知識。
【1】實(shí)體
數(shù)據(jù)是用來描述現(xiàn)實(shí)世界中各種事物的。而要描述的對象是形形色色的,有具體的,也有抽象的;有物理上存在的,也有是概念性的;如張三、汽車、運(yùn)動(dòng)、興趣、神靈等。這些對象的共同特征是可以相互有區(qū)別,否則就會被認(rèn)為是同一種對象。凡是可以相互區(qū)別開并可以被我們所識別的事、物、概念等對象均可認(rèn)為是實(shí)體。它是具有共同某些特征的一類具體實(shí)體,即可認(rèn)為是一實(shí)體集合,對這一集合中所有實(shí)體共同特征的描述,稱為實(shí)體型。實(shí)體集中的各具體實(shí)體,稱為該實(shí)體型的值或?qū)嶓w值。對于同一實(shí)體集中的不同實(shí)體其特征值不完全相同,并由此可加以區(qū)分。如學(xué)生實(shí)體集,其實(shí)體型可以通過學(xué)號、姓名、年齡等特征加以描述。學(xué)生實(shí)體集中的不同的學(xué)生實(shí)體,通過其不同的學(xué)號又可加以區(qū)分。例如學(xué)號為881001姓名為李平的學(xué)生是一個(gè)具體實(shí)體,顯然不同于學(xué)號為881002姓名為王明的學(xué)生這個(gè)具體實(shí)體。
【2】聯(lián)系
在現(xiàn)實(shí)世界中,任何事物都不是孤立存在的。實(shí)體之間存在著各種相互聯(lián)系,例如教師與學(xué)生之間至少存在一種聯(lián)系,即“教學(xué)”聯(lián)系,商店與商品之間存在一種‘供應(yīng)’聯(lián)系,這些都是不同類型的實(shí)體之間存在的聯(lián)系。還有一種聯(lián)系是存在于同一類型實(shí)體之間的,例如學(xué)生實(shí)體型里,某一學(xué)生是班長,顯然他和其他學(xué)生間也存在著一種“領(lǐng)導(dǎo)”聯(lián)系。在E-R數(shù)據(jù)模型中,通常將不同實(shí)體型之間存在的聯(lián)系歸納成三種不同類型,它們是:(1)一對一的聯(lián)系。其定義是:對于實(shí)體型A中的一個(gè)實(shí)體,在實(shí)體型B中至多有一個(gè)實(shí)體與之對應(yīng),反之對于實(shí)體型B中的一個(gè)實(shí)體,在實(shí)體型A中至多有一個(gè)實(shí)體與之對應(yīng)。這樣的聯(lián)系被稱為是一對一的聯(lián)系。例如兩個(gè)實(shí)體型分別為國家和總統(tǒng),顯然,一個(gè)國家只有一個(gè)總統(tǒng),而一個(gè)總統(tǒng)只能對應(yīng)于一個(gè)國家;又如系和系主任兩個(gè)實(shí)體型,一個(gè)系只能有一名系主任,而一個(gè)系主任只能領(lǐng)導(dǎo)一個(gè)系。這些顯然都是兩種實(shí)體型之間一對一聯(lián)系的情況。通常又將這種聯(lián)系記為1:1的聯(lián)系。(2)一對多的聯(lián)系。其定義是:對于實(shí)體型A中的一個(gè)實(shí)體,實(shí)體型B中可以有若干個(gè)實(shí)體與之對應(yīng);反之,對于實(shí)體B中的一個(gè)實(shí)體,則實(shí)體型A中只能有一個(gè)實(shí)體與之對應(yīng)。這樣的聯(lián)系被稱為是一對多的聯(lián)系,例如兩個(gè)實(shí)體型分別為系和教師,一個(gè)系可以有若干教師,一個(gè)教師只能對應(yīng)一個(gè)系,顯然這是兩種實(shí)體型之間一對多的聯(lián)系。通常將這種聯(lián)系記為1:N的聯(lián)系。1:1的聯(lián)系有時(shí)可看成是1:N的聯(lián)系的一種特殊情況。(3)多對多的聯(lián)系。其定義是:對于實(shí)體型A中的一個(gè)實(shí)體,實(shí)體型B中可以有若干個(gè)實(shí)體于之對應(yīng);反之,對于實(shí)體型B中的一個(gè)實(shí)體,則實(shí)體型A中也有若干個(gè)實(shí)體與之對應(yīng),這樣的聯(lián)系被稱為是多對多的聯(lián)系。例如兩個(gè)實(shí)體型分別為教師和課程,一個(gè)教師可以教若干門課,一門課又可以有若干個(gè)教師講。通常將這種聯(lián)系記為M:N的聯(lián)系。以上介紹的三種類型的聯(lián)系不僅可以用于描述二個(gè)不同類型的實(shí)體,還可以用于描述多個(gè)不同類型的實(shí)體。如在現(xiàn)實(shí)世界中,存在著許多多個(gè)實(shí)體型相互之間都有聯(lián)系的情況。如教師、課程、學(xué)生三個(gè)實(shí)體型之間就存在一種聯(lián)系,一個(gè)教師可以教若干門課,一門課又可以有若干個(gè)教師教授;一個(gè)教師可以教若干學(xué)生,一學(xué)生又可以有若干個(gè)教師教;一門課可以有若干學(xué)生選,一學(xué)生又可以選若干門課。有時(shí)為了方便我們也可以將這三個(gè)實(shí)體型之間聯(lián)系,分解成每兩個(gè)實(shí)體型之間均存在一個(gè)多對多的聯(lián)系。
最后我們再介紹一種較為特殊的聯(lián)系,這就是同一實(shí)體型中的不同的具體實(shí)體之間也可以存在有某聯(lián)系,如職工實(shí)體型,在這一實(shí)體型中的實(shí)體有普遍職工,也有經(jīng)理,經(jīng)理與職工之間有一種領(lǐng)導(dǎo)與被領(lǐng)導(dǎo)的關(guān)系。在E-R數(shù)據(jù)模型中,通常我們將這種特殊的聯(lián)系,稱為ISA聯(lián)系。
【3】屬性
實(shí)體型是對實(shí)體集合中所有實(shí)體共同描述特征的集合,這些實(shí)體所共有的描述特征就稱為實(shí)體的屬性。如學(xué)生實(shí)體型,其共有的描述特征通常有學(xué)號、姓名、年齡、性別等,它們都是學(xué)生實(shí)體型的屬性。這些屬性的一組值就表示了一個(gè)具體的實(shí)體。在一個(gè)具體的實(shí)體型中,其中的每一個(gè)屬性都有其取值范圍,這一范圍稱為屬性的值域。一個(gè)屬性的值域可以是整數(shù)、浮點(diǎn)數(shù)、字符串等。如學(xué)生實(shí)體型中的年齡屬性的值域就是一定區(qū)間中的整數(shù),而姓名屬性的值域就是符合一定要求的字符串等。實(shí)體型中的某個(gè)(些)屬性的取值可以用來唯一區(qū)分實(shí)體型中具體實(shí)體,如學(xué)生實(shí)體型中的學(xué)號屬性的取值就可以用來區(qū)分每一個(gè)學(xué)生。這種屬性又可稱為該實(shí)體型的標(biāo)識碼。
不僅實(shí)體型有屬性,聯(lián)系也可以有屬性,如學(xué)生和課程這兩個(gè)實(shí)體型,“選課”是它們之間的一種聯(lián)系,學(xué)生選修某門課程取得了某個(gè)成績,顯然成績描述是的一個(gè)屬性,但它既不是學(xué)生實(shí)體型中的一個(gè)屬性,也不是課程實(shí)體型中的一個(gè)屬性。而成績屬性的具體取值,既依賴于某個(gè)具體的學(xué)生,又依賴于某個(gè)具體的課程,所以我們將成績屬性定義為是學(xué)生和課程這兩個(gè)實(shí)體型之間選課聯(lián)系的屬性。又如機(jī)器和零件這兩個(gè)實(shí)體型,“構(gòu)造”是它們之間的一種聯(lián)系,數(shù)量這一屬性,即需要多少數(shù)量的零件構(gòu)造某一個(gè)機(jī)器,則是構(gòu)造這一聯(lián)系的屬性。
充分認(rèn)識和理解聯(lián)系可以有屬性這一概念,對于正確地建立或理解E—R數(shù)據(jù)模型,以及建立或理解數(shù)據(jù)庫的數(shù)據(jù)邏輯組織結(jié)構(gòu)都具有十分重要的意義。
實(shí)體、屬性和聯(lián)系三個(gè)基本要素的概念是有明確區(qū)分的,但是對于某個(gè)具體數(shù)據(jù)對象,究竟它應(yīng)該被認(rèn)為是實(shí)體,還是屬性或聯(lián)系,常常需要根據(jù)具體應(yīng)用背景和用戶的觀點(diǎn),方可確定。
1.3.2 模型的表示
前面,我們介紹E-R數(shù)據(jù)模型中的三個(gè)基本的要素,這里我們將介紹使用并描述E-R數(shù)據(jù)模型。使用E-R數(shù)據(jù)模型來分析描述現(xiàn)實(shí)信息世界中的各種信息對象的主要分析步驟如下:(1)首先根據(jù)數(shù)據(jù)庫系統(tǒng)應(yīng)用的整體要求,確定所涉及的現(xiàn)實(shí)信息世界中的所有信息對象的范圍。(2)根據(jù)第一步驟的結(jié)論,確定能夠描述所要求所有信息對象的各實(shí)體及屬性。(3)根據(jù)(1)、(2)二個(gè)步驟的結(jié)論,確定能夠描述所要求所有信息對象的各實(shí)體間的聯(lián)系。(4)根據(jù)(3)步驟的結(jié)論,確定能夠描述所要求所有信息對象的各實(shí)體間的聯(lián)系的屬性。在完成了上述的分析步驟,就可以獲得能夠描述現(xiàn)實(shí)信息世界的E-R數(shù)據(jù)模型。
為了能夠形象地描述出E-R數(shù)據(jù)模型,這里我們介紹一種E-R數(shù)據(jù)模型的表示方法,即用長方型來表示實(shí)體類型,聯(lián)系用菱型框及與實(shí)體型相連的線表示,將聯(lián)系的類型寫在線上或線的附近,在長方形框內(nèi)和菱形框內(nèi)分別寫上實(shí)體型名稱和聯(lián)系名稱,用橢圓表示實(shí)體類型和聯(lián)系的屬性,將其與所描述的相應(yīng)的實(shí)體類型或聯(lián)系用線相連,在橢圓框內(nèi)寫上屬性的名稱。這樣我們就可以得到一個(gè)能夠較好地描繪出實(shí)體、實(shí)體與實(shí)體之間相互聯(lián)系以及有關(guān)實(shí)體和聯(lián)系屬性的結(jié)構(gòu)圖,這個(gè)圖通常就被稱為E-R圖。獲得E-R圖的全部過程通常就被稱為E-R圖方法。
最后為了說明上面我們所介紹的有關(guān)E-R圖的建立和表示方法,這里我們介紹一個(gè)制造工廠數(shù)據(jù)庫應(yīng)用系統(tǒng)中所涉及的部分信息對象所構(gòu)成的E-R圖。如圖1.5所示。
圖1.5 制造工廠信息的E-R圖
在圖1.5中,我們共描述了五個(gè)實(shí)體類型,它們分別是部門、職工、工程、供應(yīng)商和零件實(shí)體型,這些實(shí)體型用長方形加以表示。并描述了這五個(gè)實(shí)體型間的相互聯(lián)系,這些聯(lián)系分別是部門與職工實(shí)體型間一對多的“所屬”聯(lián)系;職工與工程型實(shí)體間多對多的“工作”和一對一“管理”兩種聯(lián)系;工程與零件實(shí)體型間多對多的“所需”聯(lián)系;工程、供應(yīng)商和零件三個(gè)實(shí)體型間相互多對多的“供應(yīng)”聯(lián)系。這些聯(lián)系用菱形加以表示。最后作為示意,我們分別給出了零件實(shí)體型的三個(gè)屬性描述和職工與工程型實(shí)體間“工作”聯(lián)系的屬性描述,這些屬性用橢圓加以表示。
目前實(shí)體關(guān)系數(shù)據(jù)模型及其E-R圖方法已被廣泛地應(yīng)用于數(shù)據(jù)庫應(yīng)用系統(tǒng)的概念設(shè)計(jì)。由于E-R圖直觀易懂,通過它,計(jì)算機(jī)專業(yè)人員與非計(jì)算機(jī)專業(yè)人員可以進(jìn)行直接地交流和合作,同時(shí)使用E-R圖,可以很方便、真實(shí)和合理地描述出一個(gè)具體數(shù)據(jù)庫應(yīng)用系統(tǒng)的信息結(jié)構(gòu),并以此作為進(jìn)一步設(shè)計(jì)數(shù)據(jù)庫應(yīng)用系統(tǒng)的基礎(chǔ)。因此目前實(shí)體關(guān)系數(shù)據(jù)模型及其E-R圖方法還是很受歡迎的。
1.4 數(shù)據(jù)模型與數(shù)據(jù)庫系統(tǒng)
本節(jié)主要介紹常用的三種數(shù)據(jù)庫系統(tǒng)所支持的數(shù)據(jù)模型有關(guān)基本知識,以及與數(shù)據(jù)模型相對應(yīng)的數(shù)據(jù)庫的基本情況。
1.4.1 層次數(shù)據(jù)模型
層次數(shù)據(jù)模型是定義在E-R數(shù)據(jù)模型基礎(chǔ)之上一種數(shù)據(jù)模型,它與層次數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)邏輯組織結(jié)構(gòu)是一致的。其具體定義如下:(1)對E-R數(shù)據(jù)模型中的聯(lián)系類型加以限制,只容許是一對多的聯(lián)系(包括一對一聯(lián)系),在此基礎(chǔ)上,用實(shí)體、屬性和聯(lián)系這三個(gè)基本要素描述客觀信息世界中的信息結(jié)構(gòu)。(2)若將實(shí)體抽象表示為一結(jié)點(diǎn),聯(lián)系抽象表示為一有向線段,忽視屬性,所得到的E-R數(shù)據(jù)模型的抽象拓?fù)鋱D,滿足有向樹的定義,即:M=N-1;其中:M為有向線段總數(shù);N為結(jié)點(diǎn)總數(shù)。該拓?fù)鋱D有以下特點(diǎn):(A)有且僅有一個(gè)結(jié)點(diǎn)無雙親結(jié)點(diǎn),此結(jié)點(diǎn)稱為樹的根。(B)除根結(jié)點(diǎn)外,其它結(jié)點(diǎn)有且僅有一個(gè)雙親結(jié)點(diǎn)。滿足以上兩條約束的E-R數(shù)據(jù)模型,就可稱為是層次數(shù)據(jù)模型,在層次數(shù)據(jù)模型中,用長方形表示實(shí)體型;將長方形分為若干方塊,表示實(shí)體型的各屬性;用有向線段表示各實(shí)體型之間的聯(lián)系。這描述所得到的圖形稱為層次數(shù)據(jù)模型的結(jié)構(gòu)圖。
圖1.6 學(xué)校行政管理機(jī)構(gòu)的E-R圖和層次數(shù)據(jù)模型結(jié)構(gòu)圖
在現(xiàn)實(shí)世界中,有許多層次結(jié)構(gòu)的例子,如在行政管理部門中,部下設(shè)許多局,局下設(shè)許多處,處下設(shè)許多科等。這里我們給出一學(xué)校的行政管理機(jī)構(gòu)的E-R圖和層次數(shù)據(jù)模型結(jié)構(gòu)圖,作為示例,如圖1.6所示。
在如圖1.6所示的例子中,其數(shù)據(jù)模型結(jié)構(gòu)圖如圖1.6的右半部所示,顯然它滿足樹的定義,而其中各實(shí)體型之間的相互聯(lián)系均為一對多的聯(lián)系,所以說這是個(gè)典型的層次數(shù)據(jù)模型結(jié)構(gòu)。
1.4.2 層次數(shù)據(jù)庫系統(tǒng)
層次數(shù)據(jù)庫系統(tǒng)的應(yīng)用流行于七十年代,目前已較少使用,但它在數(shù)據(jù)庫的發(fā)展過程中,扮演過重要的角色。在這一小節(jié),我們將介紹層次數(shù)據(jù)庫的數(shù)據(jù)描述,數(shù)據(jù)操縱的定義和基本過程。重點(diǎn)介紹層次數(shù)據(jù)模型中的實(shí)體、屬性和聯(lián)系在層次數(shù)據(jù)庫中是如何定義和操縱的。這里以IBM公司的IMS層次數(shù)據(jù)庫系統(tǒng)為例,來說明有關(guān)的情況。
【1】層次數(shù)據(jù)庫概念層數(shù)據(jù)邏輯組織結(jié)構(gòu)的設(shè)計(jì)與描述
在將現(xiàn)實(shí)世界的信息結(jié)構(gòu)用E-R數(shù)據(jù)模型(E-R圖)描述出來后,再將所獲得的E-R數(shù)據(jù)模型轉(zhuǎn)換成層次數(shù)據(jù)模型,這時(shí)就可以進(jìn)行層次數(shù)據(jù)庫概念層數(shù)據(jù)邏輯組織結(jié)構(gòu)的設(shè)計(jì)了。在設(shè)計(jì)概念層數(shù)據(jù)邏輯組織結(jié)構(gòu)時(shí),通常將實(shí)體型定義為片斷型,實(shí)體型的屬性定義為片斷型的字?jǐn)?,并通過指定片斷的雙親片斷,定義片斷型之間的聯(lián)系,由此將層次數(shù)據(jù)模型的定義描述轉(zhuǎn)換為層次數(shù)據(jù)庫概念層數(shù)據(jù)邏輯組織結(jié)構(gòu)。并將這一數(shù)據(jù)模型結(jié)構(gòu),稱為是IMS中的物理數(shù)據(jù)庫記錄型。需要說明的是,這里講的物理數(shù)據(jù)庫并不是指存儲在物理設(shè)備上的數(shù)據(jù)庫,即與數(shù)據(jù)庫的物理存儲結(jié)構(gòu)無關(guān)。
圖1.7 學(xué)校行政管理機(jī)構(gòu)的邏輯組織結(jié)構(gòu)
我們以一個(gè)簡單例子來說明有關(guān)情況,如圖1.7所示,這是一學(xué)校行政管理機(jī)構(gòu)的邏輯組織結(jié)構(gòu),若學(xué)校有若干系(DEPT),每個(gè)系有若干班級(CLASS),每個(gè)班有若干學(xué)生(STUDENT),每個(gè)系還有若干教師(TEACHER)。其中:數(shù)據(jù)模型中的片斷型有DEPT、CLASS、STUDENT、TEACHER,各片斷型中的字?jǐn)喾謩e是DEPT(DNO-系編號,DNA-系名,DMA-系主任),CLASS(CNO-班級編號,CSK-專業(yè)),STUDENT(SNO-學(xué)生編號,SNA-姓名,SAG-年齡),TEACHER(TNO-教師編號,TNA-教師姓名,TAG-教師年齡)。整個(gè)數(shù)據(jù)結(jié)構(gòu)命名為DTCS。這里TEACHER和CLASS片斷型稱為是DEPT片斷型的下屬片斷,同樣STUDENR稱為是CLASS的下屬片斷。DEPT又可稱為是TEACHER和CLASS的雙親片斷(在這里它又是根片斷),TEACHER和CLASS又可互稱為兄弟片斷。整個(gè)數(shù)據(jù)模型結(jié)構(gòu)DTCS稱為是一物理數(shù)據(jù)庫記錄型,其每一個(gè)記錄值是由根片斷的一個(gè)值及其所有相應(yīng)的下屬片斷的值所組成。一個(gè)物理數(shù)據(jù)庫有多少個(gè)根片斷值,則它就有多少個(gè)物理數(shù)據(jù)庫記錄。如學(xué)校有20個(gè)系,它的物理數(shù)據(jù)庫就有20個(gè)記錄。每一條記錄包含了某個(gè)系及其該系所有教師、班級和學(xué)生的全部信息。通常一個(gè)IMS數(shù)據(jù)庫是由若干這樣的物理數(shù)據(jù)庫記錄所構(gòu)成。
最后我們給出上述實(shí)例的物理數(shù)據(jù)庫的定義描述。該描述主要包括以下內(nèi)容:(1)命名物理數(shù)據(jù)庫,規(guī)定存儲組織方法和存取方法,指定物理設(shè)備及塊的大小。(2)命名各片斷,指出使用的指針類型及其片斷的雙親片斷。(3)命名各片斷中的字段名、數(shù)據(jù)類型和長度。圖2.5的物理數(shù)據(jù)庫的具體描述內(nèi)容如下:
DBD NAME=DTCS,ACCESS=HDAM
DATASET DD1=DTCSHDAM,DEVICE=3330,BLOCK=1024
SEGM NAME=DEPT,BYTES=20,FREQ=20,PTR=T
FIELD NAME=(DNO,SEQ,U),BYTES=4,START=1,TYPE=C
FIELD NAME=DNA,BYTES=8,START=5,TYPE=C
FIELD NAME=DMA,BYTES=8,START=13,TYPE=C
SEGM NAME=TEACHER,BYTES=14,FREQ=50,PTR=T,PARENT=DEPT
FIELD NAME=(TNO,SEQ,U),BYTES=4,START=1,TYPE=C
FIELD NAME=TNA,BYTES=8,START=5,TYPE=C
FIELD NAME=TAG,BYTES=2,START=13,TYPE=C
SEGM NAME=CLASS,BYTES=14,FREQ=60,PTR=T,PARENT=DEPT
FIELD NAME=(CNO,SEQ,U),BYTES=4,START=1,TYPE=C
FIELD NAME=CSK,BYTES=10,START=5,TYPE=C
SEGM NAME=STUDENT,BYTES=15,FREQ=300,PTR=T,PARENT=DEPT
FIELD NAME=(SNO,SEQ,U),BYTES=5,START=1,TYPE=C
FIELD NAME=SNA,BYTES=8,START=6,TYPE=C
FIELD NAME=SAG,BYTES=2,START=14,TYPE=C
DBDGEN
FINISH
END
現(xiàn)將上述描述中的部分語句的含義說明如下:
①DBD語句:給所要描述的物理數(shù)據(jù)庫取名,規(guī)定其數(shù)據(jù)庫的存取方法,在IMS中有四種存取方法,它們是:(A)層次順序存取方法(HSAM),即將數(shù)據(jù)庫中的所有片斷值,按照其層次數(shù)據(jù)結(jié)構(gòu)從上而下、從左而右的順序存放。(B)層次索引存取方法(HISAM),即將數(shù)據(jù)庫中的所有根片斷值,用指針連接起來或單獨(dú)存放,并建立其索引;其它下屬片斷值,按照其層次數(shù)據(jù)結(jié)構(gòu)從上而下、從左而右的順序存放。(C)層次直接存取方法(HDAM),即將數(shù)據(jù)庫中的所有片斷值,按照其層次數(shù)據(jù)結(jié)構(gòu)從上而下、從左而右的順序用指針連接起來存放。(D)層次索引直接存取方法(HIDAM),即將數(shù)據(jù)庫中的所有片斷值,按照其層次數(shù)據(jù)結(jié)構(gòu)從上而下、從左而右的順序用指針(PTR=H)連接起來存放,或用兄弟、子女指針(PTR=T)連接起來存放,并建立根片斷值的索引。
②DATASET語句:命名數(shù)據(jù)庫所對應(yīng)的數(shù)據(jù)集合,指定物理設(shè)備及其物理存儲塊的大小。
③SEGM語句:定義片斷名、一個(gè)片斷值的長度、片斷值可能的個(gè)數(shù)、采用連接指針的類型和雙親片斷名。
④FIELD語句:定義片斷中的各字段,如字段名、字段數(shù)據(jù)類型、字段長度及排序碼。
⑤DBDGEN語句:指示模式編譯器開始產(chǎn)生數(shù)據(jù)庫模式定義。
⑥FINISH語句:指示模式編譯器結(jié)束產(chǎn)生數(shù)據(jù)庫模式定義,檢驗(yàn)生成結(jié)果。
⑦END語句:指示說明模式描述結(jié)束。
這里需要注意的是片斷描述的順序必須是按照其層次數(shù)據(jù)結(jié)構(gòu)從上而下、從左而右的順序逐個(gè)進(jìn)行。
【2】層次數(shù)據(jù)庫用戶層數(shù)據(jù)邏輯組織結(jié)構(gòu)的設(shè)計(jì)與描述
在IMS數(shù)據(jù)庫系統(tǒng)中,用戶層數(shù)據(jù)邏輯組織結(jié)構(gòu)所定義的子模式,稱為IMS邏輯數(shù)據(jù)庫,它是從物理數(shù)據(jù)庫中派生出來的,數(shù)據(jù)庫的應(yīng)用程序只能使用邏輯數(shù)據(jù)庫。邏輯數(shù)據(jù)庫有兩種類型,一種是邏輯數(shù)據(jù)庫僅僅從一個(gè)物理數(shù)據(jù)庫中的部分片斷所構(gòu)成的數(shù)據(jù)結(jié)構(gòu);另一種是邏輯數(shù)據(jù)庫從一個(gè)以上的物理數(shù)據(jù)庫中的部分片斷所構(gòu)成的數(shù)據(jù)結(jié)構(gòu)。這里我們只介紹第一種情況下的邏輯數(shù)據(jù)庫的定義和描述。設(shè)計(jì)邏輯數(shù)據(jù)庫時(shí),必須遵守以下兩條規(guī)則:(1)一個(gè)邏輯數(shù)據(jù)庫中的根片斷必須是某個(gè)物理數(shù)據(jù)庫中的根片斷。(2)一個(gè)邏輯子女片斷必須有一個(gè)物理雙親片斷和一個(gè)邏輯雙親片斷。即任何物理數(shù)據(jù)庫中
數(shù)據(jù)庫系統(tǒng)概論
本章目的在于使讀者對數(shù)據(jù)庫系統(tǒng)的基本知識能有一個(gè)較為全面的了解,為今后的學(xué)習(xí)和工作打下基礎(chǔ)。本章重點(diǎn)介紹了有關(guān)數(shù)據(jù)庫結(jié)構(gòu)和數(shù)據(jù)庫系統(tǒng)組織的基本知識和基本概念,以及常見的三種類型的數(shù)據(jù)庫系統(tǒng)的特點(diǎn)。重點(diǎn)介紹關(guān)系數(shù)據(jù)庫的有關(guān)知識。
1.1 數(shù)據(jù)管理技術(shù)發(fā)展史
隨著生產(chǎn)力的不斷發(fā)展,社會的不斷進(jìn)步,人類對信息的依賴程度也在不斷地增加。數(shù)據(jù)作為表達(dá)信息的一種量化符號,正在成為人們處理信息時(shí)重要的操作對象。所謂數(shù)據(jù)處理就是對數(shù)據(jù)的收集、整理、存儲、分類、排序、檢索、維護(hù)、加工、統(tǒng)計(jì)和傳輸?shù)纫幌盗泄ぷ魅窟^程的概述。數(shù)據(jù)處理的目的就是使我們能夠從浩瀚的信息數(shù)據(jù)海洋中,提取出有用的數(shù)據(jù)信息,作為我們工作、生活等各方面的決策依據(jù)。數(shù)據(jù)管理則是指對數(shù)據(jù)的組織、編碼、分類、存儲、檢索和維護(hù),它是數(shù)據(jù)處理的一個(gè)重要內(nèi)容中心。數(shù)據(jù)處理工作由來以久,早在1880年美國進(jìn)行人口普查統(tǒng)計(jì)時(shí),就已采用穿孔卡片來存儲人口普查數(shù)據(jù),并采用機(jī)械設(shè)備來完成對這些普查數(shù)據(jù)所進(jìn)行的處理工作。電子計(jì)算機(jī)的出現(xiàn)以及其后其硬件、軟件的迅速發(fā)展,加之?dāng)?shù)據(jù)庫理論和技術(shù)的發(fā)展,為數(shù)據(jù)管理進(jìn)入一個(gè)革命性階段提供有力的支持。根據(jù)數(shù)據(jù)和應(yīng)用程序相互依賴關(guān)系、數(shù)據(jù)共享以及數(shù)據(jù)的操作方式,數(shù)據(jù)管理的發(fā)展可以分為三個(gè)具有代表性的階段,即人工管理階段、文件管理階段和數(shù)據(jù)庫管理階段。
【1】人工管理階段
這一階段發(fā)生于六十年代以前,由于當(dāng)時(shí)計(jì)算機(jī)硬件和軟件發(fā)展才剛剛起步,數(shù)據(jù)管理中全部工作,都必須要由應(yīng)用程序員自己設(shè)計(jì)程序完成去完成。由于需要與計(jì)算機(jī)硬件以及各外部存儲設(shè)備和輸入輸出設(shè)備直接打交道,程序員們常常需要編制大量重復(fù)的數(shù)據(jù)管理基本程序。數(shù)據(jù)的邏輯組織與它的物理組織基本上是相同的,因此當(dāng)數(shù)據(jù)的邏輯組織、物理組織或存儲設(shè)備發(fā)生變化時(shí),進(jìn)行數(shù)據(jù)管理工作的許多應(yīng)用程序就必須要進(jìn)行重新編制。這樣就給數(shù)據(jù)管理的維護(hù)工作帶來許多困難。并且由于一組數(shù)據(jù)常常只對應(yīng)于一種應(yīng)用程序,因此很難實(shí)現(xiàn)多個(gè)不同應(yīng)用程序間的數(shù)據(jù)資源共享。存在著大量重復(fù)數(shù)據(jù),信息資源浪費(fèi)嚴(yán)重。
【2】文件管理階段
這一階段發(fā)生于六十年代,由于當(dāng)時(shí)計(jì)算機(jī)硬件的發(fā)展,以及系統(tǒng)軟件尤其是文件系統(tǒng)的出現(xiàn)和發(fā)展,人們開始利用文件系統(tǒng)來幫助完成數(shù)據(jù)管理工作,具體講就是:數(shù)據(jù)以多種組織結(jié)構(gòu)(如順序文件組織、索引文件文件組織和直接存取文件組織等)的文件形式保存在外部存儲設(shè)備上,用戶通過文件系統(tǒng)而無需直接與外部設(shè)備打交道,以此來完成數(shù)據(jù)的修改、插入、刪除、檢索等管理操作;使用這種管理方式,不僅減輕進(jìn)行數(shù)據(jù)管理的應(yīng)用程序工作量,更重要地是,當(dāng)數(shù)據(jù)的物理組織或存儲設(shè)備發(fā)生變化時(shí),數(shù)據(jù)的邏輯組織可以不受任何影響,從而保證了基于數(shù)據(jù)邏輯組織所編制的應(yīng)用程序也可以不受硬件設(shè)備變化的影響。這樣就使得程序和數(shù)據(jù)之間具有了一定的相互獨(dú)立性。
但由于數(shù)據(jù)文件的邏輯結(jié)構(gòu)完全是根據(jù)應(yīng)用程序的具體要求而設(shè)計(jì),它的管理與維護(hù)完全是由應(yīng)用程序本身來完成,因此數(shù)據(jù)文件的邏輯結(jié)構(gòu)與應(yīng)用程序密切相關(guān),當(dāng)數(shù)據(jù)的邏輯結(jié)構(gòu)需要修改時(shí),應(yīng)用程序也就不可避免地需要進(jìn)行修改;同樣當(dāng)應(yīng)用程序需要進(jìn)行變動(dòng)時(shí),常常又會要求數(shù)據(jù)的邏輯結(jié)構(gòu)進(jìn)行相應(yīng)的變動(dòng)。在這種情況下,數(shù)據(jù)管理中的維護(hù)工作量也是較大的。更主要的是由于采用文件的形式來進(jìn)行數(shù)據(jù)管理工作,常常需要將一個(gè)完整的、相互關(guān)聯(lián)的數(shù)據(jù)集合,人為地分割成若干相互獨(dú)立的文件,以便通過基于文件系統(tǒng)的編程來實(shí)現(xiàn)來對它們的管理操作。這樣做同樣會導(dǎo)致數(shù)據(jù)的過多冗余和增加數(shù)據(jù)維護(hù)工作的復(fù)雜性。例如人事部門、教務(wù)部門和醫(yī)務(wù)部門對學(xué)生數(shù)據(jù)信息的管理,這三個(gè)部門中有許多數(shù)據(jù)是相同的,如姓名、年齡、性別等,由于是各部門均是根據(jù)自己的要求,建立各自的數(shù)據(jù)文件和應(yīng)用程序,這樣不僅造成了大量的相同數(shù)據(jù)重復(fù)存儲,而且在修改時(shí),常常需要同時(shí)修改三個(gè)文件中的數(shù)據(jù)項(xiàng),如修改學(xué)生年齡,此外若需要增加一個(gè)描述學(xué)生的數(shù)據(jù)項(xiàng),如通訊地址,那么所有的應(yīng)用程序就必須都要進(jìn)行相應(yīng)的修改。除此之外,采用文件系統(tǒng)來幫助進(jìn)行數(shù)據(jù)管理工作,在數(shù)據(jù)的安全和保密等方面,也難以采取有效的措施加以控制。
【3】數(shù)據(jù)庫管理階段
1在不斷改進(jìn)和完善文件系統(tǒng)的過程中,從六十年代后期開始,人們逐步研究和發(fā)展了以數(shù)據(jù)的統(tǒng)一管理和數(shù)據(jù)共享為主要特征的數(shù)據(jù)庫系統(tǒng)。即在數(shù)據(jù)在統(tǒng)一控制之下,為盡可能多的應(yīng)用和用戶服務(wù),數(shù)據(jù)庫中的數(shù)據(jù)組織結(jié)構(gòu)與數(shù)據(jù)庫的應(yīng)用程序相互間有較大的相對獨(dú)立性等。與以往前數(shù)據(jù)管理方法和技術(shù)相比,利用數(shù)據(jù)庫系統(tǒng)來進(jìn)行數(shù)據(jù)管理工作具有以下三個(gè)顯著特點(diǎn):
(1)從整體角度組織數(shù)據(jù)
數(shù)據(jù)庫系統(tǒng)與文件系統(tǒng)的最大差別就在于前者在描述數(shù)據(jù)時(shí),不僅僅是對數(shù)據(jù)本身進(jìn)行描述,而且對數(shù)據(jù)之間的相互聯(lián)系也進(jìn)行了描述。因此在組織數(shù)據(jù)時(shí)是從一個(gè)相對較高的整體角度進(jìn)行的,而不是僅僅局限于個(gè)別的數(shù)據(jù)管理應(yīng)用場合。如前面提到的人事部門、教務(wù)部門和醫(yī)務(wù)部門對學(xué)生數(shù)據(jù)的管理工作,在利用數(shù)據(jù)庫系統(tǒng)來進(jìn)行管理時(shí),若從整體考慮,其數(shù)據(jù)的組織結(jié)構(gòu)如圖1.1所示。
圖1.1 學(xué)生信息數(shù)據(jù)組織結(jié)構(gòu)
采用這種數(shù)據(jù)組織不僅可以有效地解決了文件系統(tǒng)的數(shù)據(jù)組織中所存在的數(shù)據(jù)冗余以及數(shù)據(jù)一致性維護(hù)的問題。更主要的是它可以使人們從更高的全局角度出發(fā),合理地組織數(shù)據(jù),從而有利于更大范圍內(nèi)的數(shù)據(jù)資源的共享,提高信息的使用效率。
(2)數(shù)據(jù)可為多個(gè)應(yīng)用服務(wù)
正因?yàn)閿?shù)據(jù)庫中的數(shù)據(jù)是從整體角度進(jìn)行組織的,因此,數(shù)據(jù)庫中所存儲的數(shù)據(jù)往往就不僅局限于只為一二個(gè)應(yīng)用提供服務(wù),而是在更大范圍內(nèi)為僅可能多的應(yīng)用提供服務(wù),如圖1.1所示的一個(gè)數(shù)據(jù)庫中所存儲的數(shù)據(jù),就至少可以為三個(gè)部門的應(yīng)用提供服務(wù)。而實(shí)際上如圖1.1所示的數(shù)據(jù)組織結(jié)構(gòu)僅僅只是一個(gè)學(xué)校數(shù)據(jù)管理數(shù)據(jù)庫中的一小部分。與此同時(shí)由于數(shù)據(jù)庫系統(tǒng)是以多級(層)組織模式對數(shù)據(jù)進(jìn)行組織的,各級(層)模式之間的映射是由數(shù)據(jù)庫系統(tǒng)自己完成的,這就使得數(shù)據(jù)與程序之間可以具有較高的物理和邏輯相對獨(dú)立性。正是這一點(diǎn),給數(shù)據(jù)庫中的數(shù)據(jù)為多個(gè)應(yīng)用提供服務(wù)奠定了基礎(chǔ)。事實(shí)上數(shù)據(jù)庫的規(guī)模越大,所能夠提供的應(yīng)用服務(wù)就可以越多,也就越能體現(xiàn)出數(shù)據(jù)庫在數(shù)據(jù)管理中的優(yōu)勢。當(dāng)然這只是相對而言,隨著數(shù)據(jù)庫中數(shù)據(jù)規(guī)模的擴(kuò)大,數(shù)據(jù)庫應(yīng)用系統(tǒng)的制作和維護(hù)的工作也在迅速增加。
(3)有一個(gè)數(shù)據(jù)庫系統(tǒng)的管理軟件
任何數(shù)據(jù)庫系統(tǒng)都包含一個(gè)管理軟件,即數(shù)據(jù)庫系統(tǒng)的管理軟件,通常又稱為數(shù)據(jù)庫管理系統(tǒng),它負(fù)責(zé)統(tǒng)一管理數(shù)據(jù)庫系統(tǒng)中所有數(shù)據(jù)資源,是數(shù)據(jù)庫系統(tǒng)與用戶應(yīng)用之間的接口,通過它,用戶可以不必要了解過多的計(jì)算機(jī)硬件、軟件和數(shù)據(jù)庫本身許多專業(yè)知識,更不用去了解數(shù)據(jù)庫系統(tǒng)是如何完成數(shù)據(jù)管理工作的具體細(xì)節(jié),如文件如何打開、關(guān)閉、讀、寫等等,就可以通過編寫一些較為簡單數(shù)據(jù)庫應(yīng)用程序,很方便地完成在較高級別邏輯組織基礎(chǔ)上的數(shù)據(jù)管理工作。除此之外,數(shù)據(jù)庫管理系統(tǒng)還負(fù)責(zé)完成在對數(shù)據(jù)庫進(jìn)行并發(fā)訪問時(shí),保證數(shù)據(jù)一致性的并發(fā)控制工作;保證數(shù)據(jù)安全性的訪問控制工作;以及在數(shù)據(jù)庫系統(tǒng)出現(xiàn)故障時(shí),提供保證數(shù)據(jù)一致性和完整性的恢復(fù)機(jī)制等諸多數(shù)據(jù)庫系統(tǒng)本身的各種管理控制工作。因此這里也可以看出,數(shù)據(jù)庫管理系統(tǒng)功能的強(qiáng)弱及其各項(xiàng)性能指標(biāo)的好壞,是衡量數(shù)據(jù)庫系統(tǒng)質(zhì)量的一個(gè)極其重要的因素。
利用數(shù)據(jù)庫系統(tǒng)進(jìn)行數(shù)據(jù)管理工作,不僅可以保證數(shù)據(jù)的物理組織結(jié)構(gòu)和存儲設(shè)備與數(shù)據(jù)庫應(yīng)用程序之間保持相互獨(dú)立性;同時(shí)也可以保證數(shù)據(jù)的邏輯組織結(jié)構(gòu)與數(shù)據(jù)庫應(yīng)用程序之間保持最大可能的相互獨(dú)立性,即當(dāng)數(shù)據(jù)的邏輯組織結(jié)構(gòu)發(fā)生變化時(shí),數(shù)據(jù)庫應(yīng)用程序的變動(dòng)被限制在最小的范圍內(nèi)。由此可大大地減少數(shù)據(jù)庫應(yīng)用程序的開發(fā)與維護(hù)的工作量。
在數(shù)據(jù)庫管理階段,根據(jù)數(shù)據(jù)庫系統(tǒng)本身所支持的數(shù)據(jù)模型的特點(diǎn)及所采用的相應(yīng)數(shù)據(jù)庫系統(tǒng)技術(shù),可以認(rèn)為數(shù)據(jù)庫管理到目前為止已發(fā)展經(jīng)歷了三代,即層次網(wǎng)狀模型代、關(guān)系模型代和面向?qū)ο竽P痛?
(1)層次網(wǎng)狀模型代:流行于六十至七十年代,在這一代中的數(shù)據(jù)庫系統(tǒng)所支持的數(shù)據(jù)模型均是層次模型或網(wǎng)狀模型。世界上第一個(gè)數(shù)據(jù)庫系統(tǒng)是于1964年由美國通用電氣公司開發(fā)成功的IDS(Integrated Data Store),它就是基于網(wǎng)狀模型的數(shù)據(jù)庫系統(tǒng)。IBM公司于六十年代末推出了第一個(gè)商品化的層次數(shù)據(jù)庫系統(tǒng)IMS(Information Management Sytem),它們的出現(xiàn)與應(yīng)用為數(shù)據(jù)庫技術(shù)的發(fā)展奠定了基礎(chǔ)。
(2)關(guān)系模型代:流行于七十至八十年代,在這一代中的數(shù)據(jù)庫系統(tǒng)所支持的數(shù)據(jù)的數(shù)據(jù)模型均是關(guān)系模型。以關(guān)系(表)形式組織數(shù)據(jù)。1970年Codd提出了關(guān)系數(shù)據(jù)模型,由于其具有嚴(yán)格的數(shù)學(xué)基礎(chǔ),抽象級別較高,且簡單清晰,便于理解應(yīng)用。到了七十年代末,出現(xiàn)了不少關(guān)系數(shù)據(jù)庫系統(tǒng),其中具有代表性應(yīng)首推IBM公司推出的SQL/DS和DB2兩個(gè)商品化關(guān)系數(shù)據(jù)庫系統(tǒng)。進(jìn)行八十年代以后,關(guān)系數(shù)據(jù)庫系統(tǒng)已成為數(shù)據(jù)庫系統(tǒng)發(fā)展的主流,幾乎所有新推出的數(shù)據(jù)庫系統(tǒng)產(chǎn)品都是關(guān)系型的,它們中不僅有用于大型機(jī)和小型機(jī)數(shù)據(jù)庫產(chǎn)品,而且有可用于微機(jī)的數(shù)據(jù)庫產(chǎn)品。市場上開始出現(xiàn)關(guān)系數(shù)據(jù)庫的系列產(chǎn)品,這其中發(fā)行量較大且在我國用得較多的有Oracle、Sybase、Sysbase、Informix、FoxPro等。隨著微機(jī)和計(jì)算機(jī)網(wǎng)絡(luò)的廣泛普及和應(yīng)用,分布式數(shù)據(jù)庫系統(tǒng)在八十年代后期,開始得到很大發(fā)展。其理論和技術(shù)日趨成熟。目前幾乎所有分布式數(shù)據(jù)庫系統(tǒng)均是關(guān)系型的,而且?guī)缀跛兄饕P(guān)系數(shù)據(jù)庫系統(tǒng)均已被擴(kuò)充為分布式數(shù)據(jù)庫系統(tǒng)。
(3)面向?qū)ο蟠?開始九十年代,在這一代中的數(shù)據(jù)庫系統(tǒng)支持面向?qū)ο蟮臄?shù)據(jù)模型。它是數(shù)據(jù)庫技術(shù)與面向?qū)ο蟪绦蛟O(shè)計(jì)方法相結(jié)合的產(chǎn)物。作為新一代數(shù)據(jù)庫系統(tǒng),現(xiàn)在已有了一些商品化系統(tǒng)。但其具體應(yīng)用尚不多。
1.2 數(shù)據(jù)庫系統(tǒng)
本節(jié)主要介紹有關(guān)數(shù)據(jù)庫結(jié)構(gòu)和數(shù)據(jù)庫系統(tǒng)組織的一些基本知識和概念,使讀者對數(shù)據(jù)庫系統(tǒng)的內(nèi)涵有一個(gè)較為清楚的認(rèn)識。
1.2.1 數(shù)據(jù)庫系統(tǒng)概念
由于數(shù)據(jù)庫系統(tǒng)是一個(gè)由許多基本概念、技術(shù)方法和其應(yīng)用對象所組成的復(fù)雜的有機(jī)整體。很難用一兩句話將其描述清楚。但為了使讀者對它有一個(gè)總體的了解,首先這里我們試著給出一個(gè)關(guān)于數(shù)據(jù)庫系統(tǒng)的定義,即數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)庫是一個(gè)已被規(guī)格化和結(jié)構(gòu)化且相互關(guān)聯(lián)的數(shù)據(jù)集合,這些數(shù)據(jù)中不存在有害的或無意義的冗余;數(shù)據(jù)的組織與存儲結(jié)構(gòu)與使用這些數(shù)據(jù)的程序相互獨(dú)立;數(shù)據(jù)庫中的數(shù)據(jù)可同時(shí)為多個(gè)應(yīng)用服務(wù);數(shù)據(jù)庫中的數(shù)據(jù)定義、輸入、修改和檢索等所有操作均是按一種公用的且可控的方式進(jìn)行。根據(jù)這一數(shù)據(jù)庫定義以及實(shí)際應(yīng)用的具體數(shù)據(jù)庫系統(tǒng)的情況,我們可以認(rèn)為一個(gè)數(shù)據(jù)庫系統(tǒng)實(shí)際上是由三部分內(nèi)容組成,它們是數(shù)據(jù)庫、多種應(yīng)用和數(shù)據(jù)庫管理系統(tǒng)。這三部分之間的相互關(guān)系如圖1.2所示。
(1)數(shù)據(jù)庫:相互關(guān)聯(lián)的且具有最小冗余的數(shù)據(jù)在其中按照一定物理組織結(jié)構(gòu)存放,并且從用戶和數(shù)據(jù)庫管理系統(tǒng)角度來看,這些數(shù)據(jù)又是按一定邏輯結(jié)構(gòu)組織的。這種物理組織結(jié)構(gòu)和邏輯組織結(jié)構(gòu)在最大程度上與用戶所編制的應(yīng)用程序相互獨(dú)立。
(2)多種應(yīng)用:數(shù)據(jù)庫中的數(shù)據(jù),在數(shù)據(jù)庫管理系統(tǒng)的控制與管理之下,可以同時(shí)為多種不同內(nèi)容的應(yīng)用提供服務(wù),即可以為多個(gè)不同目的用戶服務(wù),各用戶所操作使用的數(shù)據(jù)可以是相互交叉的。用戶的操作方式既可以按以數(shù)據(jù)輸入/輸出和數(shù)據(jù)維護(hù)為主的數(shù)據(jù)流量較大的批處理方式進(jìn)行;也可以按以查詢?yōu)橹鞯臄?shù)據(jù)流量較小的聯(lián)機(jī)處理方式進(jìn)行,必要時(shí)還可以通過編程來完成對數(shù)據(jù)庫中數(shù)據(jù)的各種操作。
(3)數(shù)據(jù)庫管理系統(tǒng):它一方面負(fù)責(zé)對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行管理和維護(hù);一方面為用戶操作數(shù)據(jù)庫中的數(shù)據(jù)提供一種公用的操作方法,接收用戶的操作命令,幫助完成有關(guān)的對數(shù)據(jù)庫的操作并保障數(shù)據(jù)庫的安全。
根據(jù)對數(shù)據(jù)庫的定義以及數(shù)據(jù)庫系統(tǒng)基本組成及作用的描述,我們認(rèn)為一個(gè)的數(shù)據(jù)庫系統(tǒng)應(yīng)該具有的以下五個(gè)基本特點(diǎn):
【1】由于數(shù)據(jù)庫系統(tǒng)是從整體角度考慮數(shù)據(jù)的組織,因此它必須有能力描述能夠反映客觀事物及其相互聯(lián)系的復(fù)雜數(shù)據(jù)模型,使用它能夠?qū)?shù)據(jù)本身及相互間的各種關(guān)系進(jìn)行充分描述,這也是人們?yōu)槭裁匆捎脭?shù)據(jù)庫系統(tǒng)來進(jìn)行數(shù)據(jù)管理的主要原因之一。目前數(shù)據(jù)庫系統(tǒng)共提供了四種數(shù)據(jù)模型,它們是層次數(shù)據(jù)模型、網(wǎng)狀數(shù)據(jù)模型、關(guān)系數(shù)據(jù)模型和對象數(shù)據(jù)模型,一種類型數(shù)據(jù)庫系統(tǒng)通常只提供上述其中一種數(shù)據(jù)模型描述方法,即只支持其中一種數(shù)據(jù)模型的數(shù)據(jù)邏輯組織結(jié)構(gòu)。
圖1.2 數(shù)據(jù)庫系統(tǒng)組成
【2】數(shù)據(jù)庫中數(shù)據(jù)的獨(dú)立性。為了說明這一點(diǎn),首先我們介紹兩個(gè)概念,(1)數(shù)據(jù)在物理存儲設(shè)備上的組織結(jié)構(gòu)被稱為數(shù)據(jù)的物理組織;(2)數(shù)據(jù)在用戶或應(yīng)用程序面前所表現(xiàn)出的組織結(jié)構(gòu)被稱為數(shù)據(jù)的邏輯組織;一種數(shù)據(jù)的邏輯組織,可以采用不同的物理組織來實(shí)現(xiàn),物理組織的好壞影響著系統(tǒng)的性能和效率。在運(yùn)行階段中,由于性能的要求或存儲設(shè)備的改變,從而引起數(shù)據(jù)物理組織的改變,這種改變稱為數(shù)據(jù)的再組織。用戶在編制應(yīng)用程序時(shí),則是根據(jù)數(shù)據(jù)的邏輯組織對數(shù)據(jù)進(jìn)行操作的。因此數(shù)據(jù)物理組織的變化,不會影響數(shù)據(jù)的邏輯組織,因而也就不會影響已有的應(yīng)用程序,這種情況就被稱為數(shù)據(jù)的物理獨(dú)立性;而數(shù)據(jù)的邏輯獨(dú)立性是指當(dāng)數(shù)據(jù)的邏輯組織發(fā)生變化時(shí),如數(shù)據(jù)模型中增加了新的記錄類型,某一記錄類型中增加了新的數(shù)據(jù)項(xiàng)等,原有應(yīng)用程序的執(zhí)行不受影響或影響最小。數(shù)據(jù)的獨(dú)立性,包括物理和邏輯的獨(dú)立性,都是由數(shù)據(jù)庫管理系統(tǒng)進(jìn)行維護(hù)的。
【3】數(shù)據(jù)共享,由于數(shù)據(jù)庫是從整體的角度對數(shù)據(jù)進(jìn)行組織的,并在保證數(shù)據(jù)一致性的情形之下,使數(shù)據(jù)庫中的數(shù)據(jù)為盡可能多的用戶提供應(yīng)用服務(wù)。這些用戶所使用的數(shù)據(jù)可以是交叉的,即數(shù)據(jù)可以共享。如果數(shù)據(jù)不能共享,數(shù)據(jù)庫中則必然會出現(xiàn)大量的冗余數(shù)據(jù),這樣不僅造成存儲空間的浪費(fèi),更主要的是由此可能帶來數(shù)據(jù)不一致的隱患。
【4】數(shù)據(jù)庫系統(tǒng)的安全可靠與完整,一個(gè)數(shù)據(jù)庫系統(tǒng)的可靠性體現(xiàn)在它的軟件系統(tǒng)運(yùn)行故障率很小以及在數(shù)據(jù)庫系統(tǒng)由于各種意外而出現(xiàn)故障時(shí),數(shù)據(jù)庫中的數(shù)據(jù)的損失最??;安全性是指數(shù)據(jù)庫系統(tǒng)對其所存儲的數(shù)據(jù)的保護(hù)能力,能夠有效地防止數(shù)據(jù)有意無意地泄露或篡改,控制數(shù)據(jù)的授權(quán)訪問等。而數(shù)據(jù)庫系統(tǒng)的完整性則是指在多用戶操作數(shù)據(jù)情況下,數(shù)據(jù)能夠保持一致性。這些特性可以從以下幾個(gè)方面進(jìn)行說明:
〈1〉安全性控制
安全性控制主要指的是數(shù)據(jù)庫的保密性。并不是每個(gè)用戶都能夠存取數(shù)據(jù)庫中所有數(shù)據(jù)的,負(fù)責(zé)人和全體工作人員允許掌握的數(shù)據(jù)范圍顯然是有區(qū)別的,數(shù)據(jù)庫系統(tǒng)把各用戶存取數(shù)據(jù)的權(quán)利分成若干等級,如教學(xué)人員作為一個(gè)用戶可以登錄學(xué)生的成績,而學(xué)生作為一個(gè)用戶則僅可以查閱成績而無法對它進(jìn)行修改或刪除。通過對各個(gè)用戶授于不同的使用權(quán)限,以確保數(shù)據(jù)庫免遭損害和被非法使用,通常是通過采用口令密碼以及數(shù)據(jù)庫中數(shù)據(jù)訪問授權(quán)等方法對使用者操作數(shù)據(jù)的合法權(quán)進(jìn)行檢驗(yàn),以實(shí)現(xiàn)對數(shù)據(jù)庫中數(shù)據(jù)安全性的保護(hù)控制。
〈2〉完整性控制
所謂完整性包括數(shù)據(jù)的正確性、有效性和相容性。正確的數(shù)據(jù)不一定是有效的。如若用兩位阿拉伯?dāng)?shù)字來表示月份,在輸入14來代表月份時(shí)顯然是無效的。數(shù)據(jù)庫系統(tǒng)應(yīng)提供盡可能多的檢驗(yàn)措施,以確保數(shù)據(jù)庫中的數(shù)據(jù)滿足用戶所要求的各種約束要求。
〈3〉并發(fā)控制
在多用戶操作使用數(shù)據(jù)庫系統(tǒng)的情況下,不同用戶并行地操作數(shù)據(jù)庫就可能引起對數(shù)據(jù)庫的干擾,從而使得數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生不一致的問題。如當(dāng)甲用戶從數(shù)據(jù)庫中預(yù)定了僅剩的一張機(jī)票之后,若在數(shù)據(jù)庫尚來不及將剩余的機(jī)票數(shù)改為零時(shí),乙用戶又請求訂票時(shí)怎么辦?顯然對這種并發(fā)的操作要采取某種控制措施,最常用的方法是封鎖技術(shù),以排除和避免這種錯(cuò)誤的發(fā)生,保證數(shù)據(jù)庫中數(shù)據(jù)的操作能夠正確完成執(zhí)行。
〈4〉故障的發(fā)現(xiàn)與恢復(fù)
由于數(shù)據(jù)庫系統(tǒng)在運(yùn)行過程中很難保證不產(chǎn)生故障、出現(xiàn)意義或受到破壞,而且往往這些情況的發(fā)生的時(shí)間都是隨機(jī)的,如斷電、用戶誤操作等,而重建一個(gè)數(shù)據(jù)庫往往要花費(fèi)很大的精力和代價(jià),有時(shí)甚至是不可能的,因此數(shù)據(jù)庫系統(tǒng)應(yīng)提供應(yīng)急保護(hù)設(shè)施,一旦系統(tǒng)的軟硬件發(fā)生故障或用戶誤操作導(dǎo)致系統(tǒng)異常時(shí),系統(tǒng)應(yīng)能夠以盡量小的代價(jià),盡快地恢復(fù)數(shù)據(jù)庫的內(nèi)容和系統(tǒng)的正常運(yùn)行。
【5】良好的人機(jī)接口與性能,任何數(shù)據(jù)庫系統(tǒng)最終都是要和用戶打交道,系統(tǒng)所具有的各種功能最終都需要由用戶來進(jìn)行操作使用。簡單易學(xué)、操作簡便和用戶界面友好是任何一個(gè)數(shù)據(jù)庫系統(tǒng)所必須的。此外系統(tǒng)的響應(yīng)速度,單位時(shí)間內(nèi)數(shù)據(jù)的吞吐量也是衡量數(shù)據(jù)庫性能重要指標(biāo)。
1.2.2 數(shù)據(jù)庫結(jié)構(gòu)
在上一小節(jié),我們介紹了數(shù)據(jù)庫系統(tǒng)所涉及的三個(gè)基本成分以及數(shù)據(jù)庫系統(tǒng)所應(yīng)具有的五個(gè)特點(diǎn),在這一小節(jié)中,我們將略為詳盡地介紹數(shù)據(jù)庫系統(tǒng)的主要組成之一,數(shù)據(jù)庫的有關(guān)知識。在數(shù)據(jù)庫技術(shù)中,為了提高數(shù)據(jù)庫中數(shù)據(jù)的邏輯獨(dú)立性和物理獨(dú)立性,采用了分級(層)方法,將數(shù)據(jù)庫中數(shù)據(jù)的組織結(jié)構(gòu)劃分成多個(gè)級(層)。根據(jù)美國國家標(biāo)準(zhǔn)協(xié)會(ANSI)所提出的報(bào)告,數(shù)據(jù)庫的數(shù)據(jù)組織結(jié)構(gòu)可以分為三個(gè)相互關(guān)聯(lián)的層次,它們分別是概念層數(shù)據(jù)模式、用戶層數(shù)據(jù)模式和物理層數(shù)據(jù)模式。
【1】概念層數(shù)據(jù)模式,又稱為模式,它是對數(shù)據(jù)庫中數(shù)據(jù)整體邏輯結(jié)構(gòu)的描述,它是對數(shù)據(jù)庫中所有數(shù)據(jù)項(xiàng)、記錄類型以及各記錄類型之間的相互關(guān)系的描述。這里需要說明的是,這種描述僅僅是一種邏輯組織結(jié)構(gòu)的描述,是面向用戶需要而提出的。而非是真正的數(shù)據(jù)存儲組織結(jié)構(gòu)。提供這一層次的數(shù)據(jù)模式描述,主要是為了數(shù)據(jù)庫應(yīng)用系統(tǒng)的設(shè)計(jì)者,在對與應(yīng)用有關(guān)的所有用戶的需求進(jìn)行統(tǒng)一綜合考慮之后提出的,它能夠從總體上,將這些需求所涉及到的數(shù)據(jù)及其它們間的相互聯(lián)系,有機(jī)地結(jié)合成為一個(gè)邏輯整體。概念層數(shù)據(jù)模式的設(shè)計(jì)是數(shù)據(jù)庫設(shè)計(jì)的最基本也是最重要的任務(wù)。
【2】用戶層數(shù)據(jù)模式,又稱為外模式或子模式,它是對以用戶為對象使用數(shù)據(jù)庫所涉及到的所有數(shù)據(jù)局部邏輯結(jié)構(gòu)的描述。它是模式一個(gè)子集或者是一個(gè)映射,一個(gè)數(shù)據(jù)庫只有一個(gè)模式,但通常都對應(yīng)著多個(gè)子模式。子模式所包含的數(shù)據(jù)之間容許有重疊,也容許多個(gè)用戶共用同一個(gè)子模式。提供這一層次的數(shù)據(jù)模式描述,有以下優(yōu)點(diǎn):
〈1〉用戶只要按照描述自己所使用數(shù)據(jù)的子模式編寫應(yīng)用程序或輸入操作命令,就可以完成滿足自己要求的數(shù)據(jù)庫操縱工作。而無需了解整體數(shù)據(jù)模式或數(shù)據(jù)的存儲組織結(jié)構(gòu),從而是用戶接口變得簡單。
〈2〉保證了數(shù)據(jù)獨(dú)立性。由于用戶的數(shù)據(jù)庫應(yīng)用編程僅僅是依據(jù)子模式的數(shù)據(jù)邏輯結(jié)構(gòu)的描述,而子模式一般都是模式的一個(gè)真子集,因此若因需要而對模式所描述的數(shù)據(jù)邏輯結(jié)構(gòu)進(jìn)行部分修改或擴(kuò)充時(shí),如增加新的數(shù)據(jù)項(xiàng)或者增加新的記錄類型等,只要不影響子模式從模式中的原有的映射關(guān)系,那么用戶依據(jù)子模式所開發(fā)的應(yīng)用程序,則就不受模式變動(dòng)的任何影響。所以提供模式與子模式這兩層數(shù)據(jù)邏輯結(jié)構(gòu)的描述,就可以較好地保證數(shù)據(jù)的邏輯獨(dú)立性。
〈3〉數(shù)據(jù)能夠被較好地共享。由于同一模式可以產(chǎn)生許多不同的子模式,這些子模式所描述的數(shù)據(jù)可以來源于模式所描述的全局?jǐn)?shù)據(jù)邏輯結(jié)構(gòu)中各種數(shù)據(jù)項(xiàng)或記錄類型,因此這樣做,這樣就可以很方便地實(shí)現(xiàn)數(shù)據(jù)的共享,也就大大減少了數(shù)據(jù)可能存在的冗余,從而有利于保證數(shù)據(jù)的一致性、完整性和正確性。
〈4〉有利于保證數(shù)據(jù)的安全和保密。由于用戶是通過其相應(yīng)的應(yīng)用程序?qū)?shù)據(jù)庫中數(shù)據(jù)進(jìn)行操作,因此他只能操作其子模式所描述范圍內(nèi)的數(shù)據(jù),而無法接觸到其它用戶及其子模式所描述的數(shù)據(jù),由此就可以保證數(shù)據(jù)庫中的數(shù)據(jù)具有較好的安全性。
【3】物理層數(shù)據(jù)模式,又稱為內(nèi)模式或物理模式。它是對數(shù)據(jù)庫中所有數(shù)據(jù)在物理設(shè)備上實(shí)際存儲的組織結(jié)構(gòu)的描述。數(shù)據(jù)庫數(shù)據(jù)根據(jù)這一層數(shù)據(jù)模式的描述,被存放到若干按各種組織方式建立起來的物理文件中,對這些物理文件的所有存取訪問的控制都是由數(shù)據(jù)庫管理系統(tǒng)統(tǒng)一控制的。管理系統(tǒng)負(fù)責(zé)完成從概念層數(shù)據(jù)模式到物理層數(shù)據(jù)模式之間的數(shù)據(jù)映射,這樣由于所有的數(shù)據(jù)庫應(yīng)用程序或服務(wù)所涉及到數(shù)據(jù)又都是根據(jù)模式的數(shù)據(jù)描述得到的,因此當(dāng)數(shù)據(jù)庫數(shù)據(jù)的物理組織結(jié)構(gòu)發(fā)生變化時(shí),概念層數(shù)據(jù)模式描述通常無需修改,同樣也就保證了與模式相關(guān)聯(lián)的子模式和用戶應(yīng)用程序也無需修改,從而使得數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)也具有的物理獨(dú)立性。
圖1.3 數(shù)據(jù)庫結(jié)構(gòu)各模式間關(guān)系
由于一個(gè)數(shù)據(jù)庫是采用上述的三個(gè)層結(jié)構(gòu)方式對其中的數(shù)據(jù)組織進(jìn)行描述的,從而較好地保證了數(shù)據(jù)的邏輯獨(dú)立性和物理獨(dú)立性,方便了用戶對數(shù)據(jù)庫中數(shù)據(jù)的操作使用,減少了數(shù)據(jù)冗余。這三層模式之間的相互關(guān)系如圖1.3所示。由于數(shù)據(jù)庫中數(shù)據(jù),實(shí)際上是按照物理層數(shù)據(jù)模式進(jìn)行存儲的,而概念層數(shù)據(jù)模式和用戶層數(shù)據(jù)模式都只是對物理層數(shù)據(jù)模式描述的數(shù)據(jù)的一種逐級(層)地邏輯抽象,用戶在對數(shù)據(jù)庫進(jìn)行操作時(shí),都必須通過數(shù)據(jù)庫管理系統(tǒng),來完成從用戶層數(shù)據(jù)模式到概念層數(shù)據(jù)模式之間、概念層數(shù)據(jù)模式到物理層數(shù)據(jù)模式之間這兩種映射,當(dāng)然這兩種映射是由管理系統(tǒng)自動(dòng)完成的,對用戶是透明的。
目前實(shí)際應(yīng)用的中高檔數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)組織結(jié)構(gòu)基本上是按照上述三層模式標(biāo)準(zhǔn),來描述數(shù)據(jù)組織的。也有一些中低檔數(shù)據(jù)庫系統(tǒng),為了方便一般用戶的操作使用,對上述三層模式標(biāo)準(zhǔn)進(jìn)行了一些簡化,它們往往采用一層或二層模式來描述數(shù)據(jù)組織結(jié)構(gòu),通常都略去了物理層的數(shù)據(jù)模式描述。
1.2.3 數(shù)據(jù)庫系統(tǒng)
數(shù)據(jù)庫系統(tǒng)的核心是數(shù)據(jù)庫管理系統(tǒng)(DataBase Management System,簡稱DBMS),在它的控制和幫助下,用戶可以建立、使用、修改和維護(hù)數(shù)據(jù)庫中數(shù)據(jù)。數(shù)據(jù)庫管理系統(tǒng)是建立在操作系統(tǒng)之上的應(yīng)用軟件平臺。它一般具有以下三個(gè)主要功能:
(1)提供操作數(shù)據(jù)庫的用戶高級接口。具體講就是(A)提供數(shù)據(jù)描述語言,供用戶對整個(gè)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行各種邏輯和物理組織結(jié)構(gòu)描述,而這些組織結(jié)構(gòu)的具體實(shí)現(xiàn)細(xì)節(jié),則由DBMS完成,用戶不必關(guān)心。(B)提供數(shù)據(jù)操縱語言,供用戶對數(shù)據(jù)庫中數(shù)據(jù)按照其定義邏輯組織結(jié)構(gòu)進(jìn)行各種操作,如插入、刪除、修改和查詢等,這些操作的的具體實(shí)現(xiàn)細(xì)節(jié),則也由DBMS完成,用戶不必關(guān)心。(C)同時(shí)還可能提供其它工具,如用戶界面生成工具、報(bào)表生成工具等,幫助用戶更加容易地對數(shù)據(jù)庫的操縱進(jìn)行編程。
(2)管理數(shù)據(jù)庫。它主要包括以下功能:(A)控制整個(gè)數(shù)據(jù)庫系統(tǒng)的運(yùn)行;(B)控制用戶對數(shù)據(jù)庫的并發(fā)性操作;(C)執(zhí)行對數(shù)據(jù)庫中數(shù)據(jù)的安全、保密、有效性和完整性檢驗(yàn);(D)實(shí)施對數(shù)據(jù)庫中數(shù)據(jù)的檢索、插入、刪除、修改等操作。(E)維護(hù)數(shù)據(jù)庫數(shù)據(jù)組織結(jié)構(gòu)的完整和一致。
(3)維護(hù)數(shù)據(jù)庫,主要包括:(A)初始化時(shí)數(shù)據(jù)庫數(shù)據(jù)的裝入;(B)運(yùn)行時(shí)記錄下與用戶、操作、系統(tǒng)狀態(tài)和結(jié)果等信息的工作日志;(C)監(jiān)視數(shù)據(jù)庫性能;在性能變壞時(shí),重新組織數(shù)據(jù)庫;(D)在數(shù)據(jù)庫系統(tǒng)的硬件或軟件發(fā)生故障后,對數(shù)據(jù)庫中受破壞的數(shù)據(jù)進(jìn)行恢復(fù)。
這一小節(jié),將略為詳盡地介紹與數(shù)據(jù)庫管理軟件有關(guān)的一些基本情況。
(一)數(shù)據(jù)庫系統(tǒng)語言
數(shù)據(jù)庫系統(tǒng)語言是用戶與數(shù)據(jù)庫系統(tǒng)進(jìn)行交互操作的主要工具,是連接用戶與數(shù)據(jù)庫系統(tǒng)的橋梁。數(shù)據(jù)庫語言功能的強(qiáng)弱直接影響到用戶使用數(shù)據(jù)庫系統(tǒng)的方便程度。數(shù)據(jù)庫系統(tǒng)語言通常包括數(shù)據(jù)庫數(shù)據(jù)描述語言DDL(Data Description Language)和數(shù)據(jù)庫數(shù)據(jù)操作語言DML(Data Manipulation Language)這兩種語言。數(shù)據(jù)描述語言用于描述數(shù)據(jù)庫中各種模式的定義;而數(shù)據(jù)操作語言則是用于描述對數(shù)據(jù)庫中數(shù)據(jù)所要進(jìn)行的各種操作。這里我們將概述這兩種語言一些基本功能。
【1】數(shù)據(jù)描述語言
數(shù)據(jù)描述語言是建立和使用數(shù)據(jù)庫的重要工具,它是用于描述數(shù)據(jù)庫各層數(shù)據(jù)模式描述的語言。數(shù)據(jù)庫管理系統(tǒng)將對用戶用該語言所描述的各層數(shù)據(jù)模式,進(jìn)行編譯,產(chǎn)生可供數(shù)據(jù)庫系統(tǒng)操作時(shí)所使用的目標(biāo)模式。對應(yīng)著數(shù)據(jù)庫的模式、子模式和內(nèi)模式,數(shù)據(jù)描述語言又可分為模式描述語言、子模式描述語言和內(nèi)模式描述語言。它們各自的功能如下:
(1)模式描述語言,它是用來描述數(shù)據(jù)庫概念層數(shù)據(jù)模式的,即用于描述數(shù)據(jù)庫中所有數(shù)據(jù)以及它們間相互關(guān)系的特性。用模式描述語言寫出的數(shù)據(jù)庫全體數(shù)據(jù)的邏輯組織結(jié)構(gòu)的全部語句的集合,通常就被稱為一個(gè)模式,一個(gè)模式的主要內(nèi)容有:
① 給數(shù)據(jù)庫總體數(shù)據(jù)的邏輯組織結(jié)構(gòu),即模式取名
② 描述模式中每個(gè)記錄類型名稱,以及其中各數(shù)據(jù)項(xiàng)的名稱、數(shù)據(jù)類型(如字符型、數(shù)字型等)和數(shù)據(jù)長度等。
③ 描述模式中各記錄類型之間的相互聯(lián)系,如果存在有相互聯(lián)系的話。
一個(gè)模式僅僅是對數(shù)據(jù)庫概念層邏輯數(shù)據(jù)組織結(jié)構(gòu)的一個(gè)描述,并非是概念層邏輯數(shù)據(jù)本身。與其它程序語言一樣,模式描述語言也有自己的一套清晰而又嚴(yán)格的語句和語法規(guī)則。對應(yīng)不同類型的數(shù)據(jù)庫系統(tǒng),如層次數(shù)據(jù)庫系統(tǒng)和網(wǎng)狀數(shù)據(jù)庫系統(tǒng),它們的模式描述語言也有很大差別,即使是同一類型數(shù)據(jù)庫系統(tǒng),如關(guān)系數(shù)據(jù)庫系統(tǒng),不同軟件商推出的系統(tǒng),其模式描述語言也不盡相同。但有一點(diǎn)是一致的,這就是它們都必須是可對上面所說明的,描述一個(gè)模式所需要包括的三個(gè)基本方面進(jìn)行定義說明。
(2)子模式描述語言,它是用來描述數(shù)據(jù)庫用戶層數(shù)據(jù)模式的,即用于描述用戶所使用的數(shù)據(jù)的邏輯數(shù)據(jù)組織結(jié)構(gòu)的定義。用子模式描述語言寫出的用戶局部數(shù)據(jù)邏輯組織結(jié)構(gòu)的全部語句的集合,通常就被稱為一個(gè)子模式,一個(gè)子模式的主要內(nèi)容有:
① 給用戶使用數(shù)據(jù)庫所涉及到局部數(shù)據(jù)的邏輯組織結(jié)構(gòu),即子模式取名
② 描述子模式中所包含的每個(gè)記錄類型及其中的各數(shù)據(jù)項(xiàng),這些記錄類型的名稱以及各數(shù)據(jù)項(xiàng)的名稱和長度,可以與模式中的定義有所不同,但這里主要是描述子模式中的記錄類型及其數(shù)據(jù)項(xiàng)與模式中記錄類型及其數(shù)據(jù)項(xiàng)之間的對應(yīng)映射關(guān)系,子模式中所描述的記錄及其中的數(shù)據(jù)項(xiàng)必須是已在模式中定義過的。
③ 描述子模式中各記錄類型之間的相互聯(lián)系。這里同樣是描述子模式中的記錄間相互聯(lián)系與模式中記錄間相互聯(lián)系之間的對應(yīng)映射關(guān)系。子模式中所描述的記錄間相互聯(lián)系必須是已在模式中定義過的。
與模式描述語言不同,子模式描述語言有時(shí)與編寫應(yīng)用程序所采用的其它程序設(shè)計(jì)語言相關(guān),因此根據(jù)子模式描述語言所適用的編寫應(yīng)用程序語言,子模式描述語言也可分為COBOL子模式描述語言、FORTRAN子模式描述語言和C子模式描述語言等。
(3)內(nèi)模式描述語言,它是用來描述數(shù)據(jù)庫中數(shù)據(jù)在物理存貯介質(zhì)上的組織結(jié)構(gòu)和存放方式等,它與數(shù)據(jù)庫系統(tǒng)所運(yùn)行的硬件環(huán)境特性相關(guān)。例如,系統(tǒng)建立了哪些物理文件?文件的存貯設(shè)備是什么?文件是以什么樣的組織方式等等,這些都是由內(nèi)模式描述語言來負(fù)責(zé)描述的。
上述內(nèi)容僅僅是關(guān)于數(shù)據(jù)描述語言中一些最基本的部分。通常各軟件商生產(chǎn)出的數(shù)據(jù)庫系統(tǒng),往往都要根據(jù)自己的具體實(shí)現(xiàn)情況,提供出相應(yīng)的一整套數(shù)據(jù)描述語言的規(guī)范,其中也有一些數(shù)據(jù)庫系統(tǒng),對上述的數(shù)據(jù)描述語言的標(biāo)準(zhǔn)進(jìn)行了一些簡化,只給出一種或二種描述語言定義,或干脆將數(shù)據(jù)描述語言與數(shù)據(jù)操作語言歸并到了一起,以方便用戶使用。如FoxPro數(shù)據(jù)庫系統(tǒng),以及目前比較流行的基于SQL的多種數(shù)據(jù)庫系統(tǒng)。
【2】數(shù)據(jù)操作語言
數(shù)據(jù)操縱語言是用戶操縱數(shù)據(jù)庫中數(shù)據(jù)的工具,用戶借助它來實(shí)現(xiàn)從數(shù)據(jù)庫中檢索數(shù)據(jù)、向數(shù)據(jù)庫中添加數(shù)據(jù)、刪除數(shù)據(jù)庫中沒有保留價(jià)值的數(shù)據(jù)或修改某些發(fā)生變化的數(shù)據(jù)等操作。
數(shù)據(jù)操縱語言通常分為兩種類型,即宿主式數(shù)據(jù)操縱語言和自含式數(shù)據(jù)操縱語言。自含式數(shù)據(jù)操縱語言在數(shù)據(jù)庫系統(tǒng)中可獨(dú)立使用,是一種完整的語言,這類語言使用簡單方便,很適合于在終端上使用。這類語言的優(yōu)點(diǎn)是系統(tǒng)運(yùn)行效率較高且使用簡單,缺點(diǎn)是它的應(yīng)用范圍常常受到限制,例如要提取出數(shù)據(jù)庫中的一些數(shù)據(jù)進(jìn)行某種復(fù)雜運(yùn)算處理時(shí),單靠數(shù)據(jù)庫系統(tǒng)所提供的這類數(shù)據(jù)操縱語言有時(shí)就很難做到這一點(diǎn)。自含式數(shù)據(jù)操縱語言通常包含以下基本操作功能:(A)從數(shù)據(jù)庫中選擇滿足一定要求的記錄或聯(lián)系;(B)增加新的記錄或聯(lián)系到數(shù)據(jù)庫中;(C)修改數(shù)據(jù)庫中的記錄或聯(lián)系;(D)刪除數(shù)據(jù)庫中的記錄或聯(lián)系;
另一種是宿主式數(shù)據(jù)操縱語言,它不能單獨(dú)使用,必須嵌入到某種程序設(shè)計(jì)語言(如C,COBOL,F(xiàn)ORTRAN)之中方能進(jìn)行數(shù)據(jù)庫操作,這種數(shù)據(jù)操縱語言語句僅負(fù)責(zé)對數(shù)據(jù)庫中數(shù)據(jù)的操作,其它復(fù)雜的數(shù)據(jù)處理工作均有主語言完成,有時(shí)這樣做會使得用戶的應(yīng)用程序變得相當(dāng)復(fù)雜。由于這樣的程序既包含了主語言語句,也包含了數(shù)據(jù)操縱語言語句,也就使得主語言原來的編譯程序便不能完全編譯應(yīng)用程序了,解決這一問題有兩種辦法:(A)重新設(shè)計(jì)和實(shí)現(xiàn)一個(gè)編譯程序,使之能編譯包括數(shù)據(jù)操縱語言和主語言的所有語句,這種辦法不大現(xiàn)實(shí)經(jīng)濟(jì);(B)不修改主語言編譯程序,而是設(shè)計(jì)一個(gè)預(yù)編程序來對應(yīng)用程序中的數(shù)據(jù)操縱語言進(jìn)行預(yù)編譯,將其首先轉(zhuǎn)換成用主語言寫的程序,然后再用主語言的編譯程序來編譯,以產(chǎn)生最后的目標(biāo)程序。這樣做辦法比較可行,目前已為許多數(shù)據(jù)庫系統(tǒng)所采用。
實(shí)際上許多數(shù)據(jù)庫系統(tǒng)除了提供上述兩種數(shù)據(jù)操作語言之外,還提供了許多編程工具和或編程命令,以便幫助用戶更加容易地編制數(shù)據(jù)庫的應(yīng)用程序,如用戶界面生成工具、報(bào)表生成工具和數(shù)據(jù)庫API接口等。
(二)數(shù)據(jù)庫系統(tǒng)運(yùn)行管理與控制軟件
數(shù)據(jù)庫系統(tǒng)運(yùn)行管理與控制軟件是數(shù)據(jù)庫管理系統(tǒng)軟件的實(shí)際組成,它主要包括語言編譯處理程序、系統(tǒng)運(yùn)行控制程序和數(shù)據(jù)庫日常管理程序以及數(shù)據(jù)庫工具等多種軟件。下面將概述這幾種軟件一些基本功能
(1)語言編譯處理程序。它主要包括:(A)數(shù)據(jù)庫系統(tǒng)中各種數(shù)據(jù)描述語言的編譯處理程序,它們的作用是將各種采用模式描述語言所定義數(shù)據(jù)模式編譯成DBMS所使用的內(nèi)部定義目標(biāo)模式。(B)數(shù)據(jù)庫系統(tǒng)各種數(shù)據(jù)操縱語言的處理程序,它們可將應(yīng)用程序中采用數(shù)據(jù)操縱語言所寫的數(shù)據(jù)操作語句轉(zhuǎn)換成其宿主語言編譯程序所能處理的語句。(C)終端操作命令解釋程序,它主要用于解釋終端操作命令的意義,完成相應(yīng)數(shù)據(jù)庫系統(tǒng)命令的執(zhí)行過程。(D)數(shù)據(jù)庫控制命令解釋程序,它負(fù)責(zé)解釋執(zhí)行每一條數(shù)據(jù)庫控制命令。
(2)系統(tǒng)運(yùn)行控制程序。它主要包括:(A)數(shù)據(jù)庫系統(tǒng)的總控程序,它用于檢查訪問的合法性,以決定一個(gè)訪問是否能使用數(shù)據(jù)庫。(B)并發(fā)控制程序。協(xié)調(diào)多個(gè)應(yīng)用程序?qū)?shù)據(jù)庫的操作,保證數(shù)據(jù)庫中數(shù)據(jù)的一致性。(C)保密控制程序。實(shí)現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)的安全保密控制。(D)數(shù)據(jù)完整性控制程序。核對數(shù)據(jù)庫完整性約束條件,以決定對數(shù)據(jù)庫的操作是否有效。(E)數(shù)據(jù)庫存取訪問程序。實(shí)施對數(shù)據(jù)庫中數(shù)據(jù)的操作,如執(zhí)行檢索、插入、修改、刪除等操作。(F)通訊控制程序。實(shí)現(xiàn)用戶程序與DBMS之間的通訊。
(3)數(shù)據(jù)庫日常管理程序。這主要包括:(A)數(shù)據(jù)裝入程序。實(shí)現(xiàn)將初始數(shù)據(jù)裝入數(shù)據(jù)庫。(B)系統(tǒng)恢復(fù)程序。當(dāng)軟硬件出現(xiàn)故障時(shí),利用恢復(fù)程序?qū)?shù)據(jù)庫恢復(fù)到正確狀態(tài)。(C)工作日志程序。負(fù)責(zé)記載進(jìn)入數(shù)據(jù)庫的所有訪問,其內(nèi)容包括用戶名稱、進(jìn)入系統(tǒng)時(shí)間、進(jìn)行何種操作、數(shù)據(jù)變更情況等等。使每個(gè)用戶每次訪問都留下蹤跡。(D)性能監(jiān)測程序。監(jiān)測操作執(zhí)行時(shí)間與存貯空間占用情況,為數(shù)據(jù)庫的再組織提供依據(jù)。(E)重新組織程序。當(dāng)數(shù)據(jù)庫系統(tǒng)性能變壞時(shí),對數(shù)據(jù)庫重新進(jìn)行物理組織。(F)轉(zhuǎn)貯、編輯、打印程序、用于轉(zhuǎn)貯數(shù)據(jù)庫的部分和全部數(shù)據(jù),或者編輯打印數(shù)據(jù)等。
(4)數(shù)據(jù)庫工具軟件。它主要是為了方便建立數(shù)據(jù)庫系統(tǒng)的具體應(yīng)用,而提供各種工具軟件。其中有數(shù)據(jù)庫系統(tǒng)應(yīng)用程序界面制作工具,報(bào)表制作工具等許多軟件工具。
最后我們簡單介紹一下建立數(shù)據(jù)庫應(yīng)用系統(tǒng)的基本知識。數(shù)據(jù)庫應(yīng)用系統(tǒng)的設(shè)計(jì)方法我們將在第五章詳細(xì)介紹。與其它應(yīng)用軟件開發(fā)與應(yīng)用過程一樣,數(shù)據(jù)庫系統(tǒng)的應(yīng)用,也有一個(gè)生命周期,它主要由以下五個(gè)階段構(gòu)成:
(1)數(shù)據(jù)庫系統(tǒng)的規(guī)劃。它包括系統(tǒng)的應(yīng)用范圍和功能的確認(rèn)、應(yīng)用環(huán)境的分析、DBMS及其支撐環(huán)境的選擇、硬件配置,人員的配備和培訓(xùn),投資估算和效益分析等活動(dòng)。
(2)數(shù)據(jù)庫系統(tǒng)的設(shè)計(jì)。它包括了解應(yīng)用系統(tǒng)的信息和處理需求,設(shè)計(jì)滿足其要求的整體數(shù)據(jù)模型及處理流程,并結(jié)合具體所采用的數(shù)據(jù)庫系統(tǒng)、硬件環(huán)境和系統(tǒng)軟件平臺的特點(diǎn),設(shè)計(jì)出符合具體數(shù)據(jù)庫系統(tǒng)應(yīng)用要求的數(shù)據(jù)模型,及其應(yīng)用軟件的流程圖。選擇合適的商用數(shù)據(jù)庫系統(tǒng),來設(shè)計(jì)、建立、管理和維護(hù)數(shù)據(jù)庫系統(tǒng),使之能夠?yàn)橛脩籼峁┳罴逊?wù)。
(3)數(shù)據(jù)庫系統(tǒng)的建立。首先根據(jù)數(shù)據(jù)庫系統(tǒng)的設(shè)計(jì)結(jié)果,定義數(shù)據(jù)模式,規(guī)定訪問權(quán)限,設(shè)置完整性約束。然后準(zhǔn)備數(shù)據(jù),對其進(jìn)行正確性校驗(yàn)后,將其錄入,與此同時(shí),完成主要應(yīng)用程序的編制工作。
(4)數(shù)據(jù)庫系統(tǒng)的管理。它包括應(yīng)用軟件的編制與修改、數(shù)據(jù)庫的重新組織、數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的備份與恢復(fù)等工作。保證數(shù)據(jù)庫系統(tǒng)的完好,為用戶提供可靠的服務(wù)。
(5)數(shù)據(jù)庫系統(tǒng)的調(diào)整。由于應(yīng)用數(shù)據(jù)庫系統(tǒng)的用戶所在的硬環(huán)境,如單位組織調(diào)整、人員變化等,軟環(huán)境,如人員素質(zhì)、應(yīng)用要求等,發(fā)生變化,在數(shù)據(jù)庫系統(tǒng)運(yùn)行一段時(shí)間后,往往都需要進(jìn)行擴(kuò)充與重構(gòu),即需要對數(shù)據(jù)庫系統(tǒng)的各種數(shù)據(jù)模式的定義和處理流程進(jìn)行適當(dāng)?shù)男薷暮脱a(bǔ)充,使之適應(yīng)新的形勢。
一般與一個(gè)數(shù)據(jù)庫系統(tǒng)的應(yīng)用系統(tǒng)有關(guān)的人員,有以下四類,他們是:(A)系統(tǒng)管理員,他的任務(wù)主要是定義數(shù)據(jù)庫系統(tǒng)的物理存儲模式,分配并管理各用戶操作的權(quán)限,管理日常數(shù)據(jù)庫系統(tǒng)的運(yùn)行工作,以及維護(hù)數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù),保證其完整和安全、(B)系統(tǒng)分析員,他們的任務(wù)主要是,從整體上分析數(shù)據(jù)庫系統(tǒng)應(yīng)用所涉及的客觀信息結(jié)構(gòu)和內(nèi)容,定義相應(yīng)的數(shù)據(jù)庫系統(tǒng)的全局?jǐn)?shù)據(jù)模式;(C)應(yīng)用程序員,他們的任務(wù)主要是分析具體用戶的信息處理需要,定義數(shù)據(jù)庫系統(tǒng)的子模式,編寫具體數(shù)據(jù)庫應(yīng)用程序;(D)用戶,他們具體的數(shù)據(jù)庫應(yīng)用程序和數(shù)據(jù)庫的最終使用者。
(三)數(shù)據(jù)庫系統(tǒng)訪問示例
這里,我們介紹一下普通用戶讀取數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)時(shí),數(shù)據(jù)庫的工作過程(如圖1.4所示),以便使讀者可以從中了解DBMS是如何來進(jìn)行數(shù)據(jù)庫系統(tǒng)的管理工作的。用戶訪問數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的過程實(shí)際上就是用戶與DBMS進(jìn)行交互的過程。其具體步驟如下:
(1)用戶通過應(yīng)用程序指明它使用的子模式名稱,發(fā)出數(shù)據(jù)操作命令,DBMS通過處理用戶的應(yīng)用程序,接收該操作命令。
(2)DBMS按照應(yīng)用程序中的子模式名稱,調(diào)出相應(yīng)的子模式,核對該用戶的訪問權(quán)利、操作合法性等,若檢查通過則繼續(xù)執(zhí)行,否則拒絕執(zhí)行并報(bào)告出錯(cuò)信息。
(3)DBMS按模式確定子模式中操作所涉及的記錄類型,并通過模式到存儲模式的映射,找出這些記錄類型的相應(yīng)存貯模式。
(4)DBMS查閱存貯模式,確定應(yīng)從哪個(gè)物理文件、存貯設(shè)備以及調(diào)用哪個(gè)訪問程序去讀取所需的記錄。
(5)DBMS的訪問程序找到有關(guān)的物理數(shù)據(jù)地址,向操作系統(tǒng)發(fā)出讀操作命令。
(6)操作系統(tǒng)收到DBMS發(fā)來的命令后,啟動(dòng)系統(tǒng)的輸入/輸出程序完成讀操作,把要讀取的數(shù)據(jù)塊送到內(nèi)存中的系統(tǒng)緩沖區(qū)。
(7)DBMS收到操作系統(tǒng)關(guān)于輸入/輸出操作結(jié)束回答后,按模式、子模式的定義,將已讀入到系統(tǒng)緩沖區(qū)的內(nèi)容映射為用戶程序所要的邏輯記錄,并送到用戶的工作區(qū)中。
(8)DBMS向應(yīng)用程序發(fā)送反映操作執(zhí)行結(jié)果的狀態(tài)信息(由狀態(tài)字描述),如“執(zhí)行成功”、“數(shù)據(jù)未找到”等。
(9)記載DBMS系統(tǒng)的工作日志。
(10)應(yīng)用程序檢查狀態(tài)信息,如執(zhí)行成功,則可對程序工作區(qū)中的數(shù)據(jù)作正常處理,否則按出錯(cuò)類型決定程序的后續(xù)處理。
用戶修改一個(gè)記錄的操作步驟也是類似的。首先讀出所需記錄,在程序工作區(qū)中修改好,而后再把修改好的記錄寫回?cái)?shù)據(jù)庫中原記錄的位置上。
圖1.4 數(shù)據(jù)庫的工作過程
1.3 實(shí)體聯(lián)系模型
本節(jié)主要介紹有關(guān)實(shí)體聯(lián)系模型的概念和基本知識,使讀者了解并掌握基本的實(shí)體聯(lián)系模型的使用方法。
1.3.1 模型的組成
我們都知道數(shù)據(jù)是表達(dá)信息的一種重要的量化符號,是信息存在的一種重要形式。而所謂數(shù)據(jù)模型則是數(shù)據(jù)特征的一種抽象。它不是描述個(gè)別的數(shù)據(jù),而是描述數(shù)據(jù)的共性。一般來講,數(shù)據(jù)模型包含兩方面內(nèi)容,它們是:(1)數(shù)據(jù)的靜態(tài)特性,這主要包括數(shù)據(jù)的基本結(jié)構(gòu)、數(shù)據(jù)間的聯(lián)系和數(shù)據(jù)中的相互約束等特性;(2)數(shù)據(jù)的動(dòng)態(tài)特性,這主要包括對數(shù)據(jù)操作的方法。在數(shù)據(jù)庫應(yīng)用系統(tǒng)中,建立反映客觀信息范疇的數(shù)據(jù)模型是數(shù)據(jù)庫應(yīng)用系統(tǒng)設(shè)計(jì)中最為重要的,也最基本的步驟之一,它是連接客觀信息世界和數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)邏輯組織的橋梁。也是計(jì)算機(jī)專業(yè)人員與非計(jì)算機(jī)專業(yè)的用戶之間進(jìn)行交流的共同基礎(chǔ)。這里我們將要介紹的數(shù)據(jù)模型就是實(shí)體聯(lián)系數(shù)據(jù)模型(又稱E-R數(shù)據(jù)模型),它與傳統(tǒng)的數(shù)據(jù)模型有所不同。E-R數(shù)據(jù)模型是面向現(xiàn)實(shí)世界,而不是面向?qū)崿F(xiàn)方法的,它主要是用于描述現(xiàn)實(shí)信息世界中數(shù)據(jù)的靜態(tài)特性。而不涉及數(shù)據(jù)的處理過程。但由于它簡單易學(xué),因而在數(shù)據(jù)庫系統(tǒng)應(yīng)用的設(shè)計(jì)中,得到了廣泛應(yīng)用。
E-R數(shù)據(jù)模型是P.P.Chen在1976年提出的,它為數(shù)據(jù)庫系統(tǒng)應(yīng)用的設(shè)計(jì)人員提供了三個(gè)基本的模型描述成分,它們是實(shí)體、聯(lián)系和屬性。E-R數(shù)據(jù)模型就是利用這三個(gè)成分來描述反映一個(gè)客觀信息世界內(nèi)容的數(shù)據(jù)模型。在數(shù)據(jù)庫應(yīng)用系統(tǒng)設(shè)計(jì)中,通常還需要將這一數(shù)據(jù)模型轉(zhuǎn)換為各數(shù)據(jù)庫管理系統(tǒng)所支持的具體數(shù)據(jù)模型,即層次數(shù)據(jù)模型、網(wǎng)狀數(shù)據(jù)模型和關(guān)系數(shù)據(jù)模型等。由此我們也可以看出E-R數(shù)據(jù)模型是從現(xiàn)實(shí)信息世界到數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)邏輯組織結(jié)構(gòu)設(shè)計(jì)之間的一個(gè)中間階段,只所以是這樣,主要是因?yàn)槿绻苯訉F(xiàn)實(shí)世界的信息,構(gòu)造成某個(gè)DBMS所能接受的數(shù)據(jù)邏輯組織結(jié)構(gòu),其工作往往是十分復(fù)雜而且難度也很大,應(yīng)用設(shè)計(jì)人員不僅要考慮現(xiàn)實(shí)世界各種信息及其內(nèi)在的聯(lián)系,以及各種具體應(yīng)用對數(shù)據(jù)處理的要求,而且還要考慮采用某種特定的數(shù)據(jù)庫系統(tǒng)后,所面臨的各種條件限制,這樣就大大增加了應(yīng)用系統(tǒng)設(shè)計(jì)的復(fù)雜性。
下面我們就介紹一下E-R數(shù)據(jù)模型中的三個(gè)基本要素,即實(shí)體、聯(lián)系和屬性的有關(guān)基本知識。
【1】實(shí)體
數(shù)據(jù)是用來描述現(xiàn)實(shí)世界中各種事物的。而要描述的對象是形形色色的,有具體的,也有抽象的;有物理上存在的,也有是概念性的;如張三、汽車、運(yùn)動(dòng)、興趣、神靈等。這些對象的共同特征是可以相互有區(qū)別,否則就會被認(rèn)為是同一種對象。凡是可以相互區(qū)別開并可以被我們所識別的事、物、概念等對象均可認(rèn)為是實(shí)體。它是具有共同某些特征的一類具體實(shí)體,即可認(rèn)為是一實(shí)體集合,對這一集合中所有實(shí)體共同特征的描述,稱為實(shí)體型。實(shí)體集中的各具體實(shí)體,稱為該實(shí)體型的值或?qū)嶓w值。對于同一實(shí)體集中的不同實(shí)體其特征值不完全相同,并由此可加以區(qū)分。如學(xué)生實(shí)體集,其實(shí)體型可以通過學(xué)號、姓名、年齡等特征加以描述。學(xué)生實(shí)體集中的不同的學(xué)生實(shí)體,通過其不同的學(xué)號又可加以區(qū)分。例如學(xué)號為881001姓名為李平的學(xué)生是一個(gè)具體實(shí)體,顯然不同于學(xué)號為881002姓名為王明的學(xué)生這個(gè)具體實(shí)體。
【2】聯(lián)系
在現(xiàn)實(shí)世界中,任何事物都不是孤立存在的。實(shí)體之間存在著各種相互聯(lián)系,例如教師與學(xué)生之間至少存在一種聯(lián)系,即“教學(xué)”聯(lián)系,商店與商品之間存在一種‘供應(yīng)’聯(lián)系,這些都是不同類型的實(shí)體之間存在的聯(lián)系。還有一種聯(lián)系是存在于同一類型實(shí)體之間的,例如學(xué)生實(shí)體型里,某一學(xué)生是班長,顯然他和其他學(xué)生間也存在著一種“領(lǐng)導(dǎo)”聯(lián)系。在E-R數(shù)據(jù)模型中,通常將不同實(shí)體型之間存在的聯(lián)系歸納成三種不同類型,它們是:(1)一對一的聯(lián)系。其定義是:對于實(shí)體型A中的一個(gè)實(shí)體,在實(shí)體型B中至多有一個(gè)實(shí)體與之對應(yīng),反之對于實(shí)體型B中的一個(gè)實(shí)體,在實(shí)體型A中至多有一個(gè)實(shí)體與之對應(yīng)。這樣的聯(lián)系被稱為是一對一的聯(lián)系。例如兩個(gè)實(shí)體型分別為國家和總統(tǒng),顯然,一個(gè)國家只有一個(gè)總統(tǒng),而一個(gè)總統(tǒng)只能對應(yīng)于一個(gè)國家;又如系和系主任兩個(gè)實(shí)體型,一個(gè)系只能有一名系主任,而一個(gè)系主任只能領(lǐng)導(dǎo)一個(gè)系。這些顯然都是兩種實(shí)體型之間一對一聯(lián)系的情況。通常又將這種聯(lián)系記為1:1的聯(lián)系。(2)一對多的聯(lián)系。其定義是:對于實(shí)體型A中的一個(gè)實(shí)體,實(shí)體型B中可以有若干個(gè)實(shí)體與之對應(yīng);反之,對于實(shí)體B中的一個(gè)實(shí)體,則實(shí)體型A中只能有一個(gè)實(shí)體與之對應(yīng)。這樣的聯(lián)系被稱為是一對多的聯(lián)系,例如兩個(gè)實(shí)體型分別為系和教師,一個(gè)系可以有若干教師,一個(gè)教師只能對應(yīng)一個(gè)系,顯然這是兩種實(shí)體型之間一對多的聯(lián)系。通常將這種聯(lián)系記為1:N的聯(lián)系。1:1的聯(lián)系有時(shí)可看成是1:N的聯(lián)系的一種特殊情況。(3)多對多的聯(lián)系。其定義是:對于實(shí)體型A中的一個(gè)實(shí)體,實(shí)體型B中可以有若干個(gè)實(shí)體于之對應(yīng);反之,對于實(shí)體型B中的一個(gè)實(shí)體,則實(shí)體型A中也有若干個(gè)實(shí)體與之對應(yīng),這樣的聯(lián)系被稱為是多對多的聯(lián)系。例如兩個(gè)實(shí)體型分別為教師和課程,一個(gè)教師可以教若干門課,一門課又可以有若干個(gè)教師講。通常將這種聯(lián)系記為M:N的聯(lián)系。以上介紹的三種類型的聯(lián)系不僅可以用于描述二個(gè)不同類型的實(shí)體,還可以用于描述多個(gè)不同類型的實(shí)體。如在現(xiàn)實(shí)世界中,存在著許多多個(gè)實(shí)體型相互之間都有聯(lián)系的情況。如教師、課程、學(xué)生三個(gè)實(shí)體型之間就存在一種聯(lián)系,一個(gè)教師可以教若干門課,一門課又可以有若干個(gè)教師教授;一個(gè)教師可以教若干學(xué)生,一學(xué)生又可以有若干個(gè)教師教;一門課可以有若干學(xué)生選,一學(xué)生又可以選若干門課。有時(shí)為了方便我們也可以將這三個(gè)實(shí)體型之間聯(lián)系,分解成每兩個(gè)實(shí)體型之間均存在一個(gè)多對多的聯(lián)系。
最后我們再介紹一種較為特殊的聯(lián)系,這就是同一實(shí)體型中的不同的具體實(shí)體之間也可以存在有某聯(lián)系,如職工實(shí)體型,在這一實(shí)體型中的實(shí)體有普遍職工,也有經(jīng)理,經(jīng)理與職工之間有一種領(lǐng)導(dǎo)與被領(lǐng)導(dǎo)的關(guān)系。在E-R數(shù)據(jù)模型中,通常我們將這種特殊的聯(lián)系,稱為ISA聯(lián)系。
【3】屬性
實(shí)體型是對實(shí)體集合中所有實(shí)體共同描述特征的集合,這些實(shí)體所共有的描述特征就稱為實(shí)體的屬性。如學(xué)生實(shí)體型,其共有的描述特征通常有學(xué)號、姓名、年齡、性別等,它們都是學(xué)生實(shí)體型的屬性。這些屬性的一組值就表示了一個(gè)具體的實(shí)體。在一個(gè)具體的實(shí)體型中,其中的每一個(gè)屬性都有其取值范圍,這一范圍稱為屬性的值域。一個(gè)屬性的值域可以是整數(shù)、浮點(diǎn)數(shù)、字符串等。如學(xué)生實(shí)體型中的年齡屬性的值域就是一定區(qū)間中的整數(shù),而姓名屬性的值域就是符合一定要求的字符串等。實(shí)體型中的某個(gè)(些)屬性的取值可以用來唯一區(qū)分實(shí)體型中具體實(shí)體,如學(xué)生實(shí)體型中的學(xué)號屬性的取值就可以用來區(qū)分每一個(gè)學(xué)生。這種屬性又可稱為該實(shí)體型的標(biāo)識碼。
不僅實(shí)體型有屬性,聯(lián)系也可以有屬性,如學(xué)生和課程這兩個(gè)實(shí)體型,“選課”是它們之間的一種聯(lián)系,學(xué)生選修某門課程取得了某個(gè)成績,顯然成績描述是的一個(gè)屬性,但它既不是學(xué)生實(shí)體型中的一個(gè)屬性,也不是課程實(shí)體型中的一個(gè)屬性。而成績屬性的具體取值,既依賴于某個(gè)具體的學(xué)生,又依賴于某個(gè)具體的課程,所以我們將成績屬性定義為是學(xué)生和課程這兩個(gè)實(shí)體型之間選課聯(lián)系的屬性。又如機(jī)器和零件這兩個(gè)實(shí)體型,“構(gòu)造”是它們之間的一種聯(lián)系,數(shù)量這一屬性,即需要多少數(shù)量的零件構(gòu)造某一個(gè)機(jī)器,則是構(gòu)造這一聯(lián)系的屬性。
充分認(rèn)識和理解聯(lián)系可以有屬性這一概念,對于正確地建立或理解E—R數(shù)據(jù)模型,以及建立或理解數(shù)據(jù)庫的數(shù)據(jù)邏輯組織結(jié)構(gòu)都具有十分重要的意義。
實(shí)體、屬性和聯(lián)系三個(gè)基本要素的概念是有明確區(qū)分的,但是對于某個(gè)具體數(shù)據(jù)對象,究竟它應(yīng)該被認(rèn)為是實(shí)體,還是屬性或聯(lián)系,常常需要根據(jù)具體應(yīng)用背景和用戶的觀點(diǎn),方可確定。
1.3.2 模型的表示
前面,我們介紹E-R數(shù)據(jù)模型中的三個(gè)基本的要素,這里我們將介紹使用并描述E-R數(shù)據(jù)模型。使用E-R數(shù)據(jù)模型來分析描述現(xiàn)實(shí)信息世界中的各種信息對象的主要分析步驟如下:(1)首先根據(jù)數(shù)據(jù)庫系統(tǒng)應(yīng)用的整體要求,確定所涉及的現(xiàn)實(shí)信息世界中的所有信息對象的范圍。(2)根據(jù)第一步驟的結(jié)論,確定能夠描述所要求所有信息對象的各實(shí)體及屬性。(3)根據(jù)(1)、(2)二個(gè)步驟的結(jié)論,確定能夠描述所要求所有信息對象的各實(shí)體間的聯(lián)系。(4)根據(jù)(3)步驟的結(jié)論,確定能夠描述所要求所有信息對象的各實(shí)體間的聯(lián)系的屬性。在完成了上述的分析步驟,就可以獲得能夠描述現(xiàn)實(shí)信息世界的E-R數(shù)據(jù)模型。
為了能夠形象地描述出E-R數(shù)據(jù)模型,這里我們介紹一種E-R數(shù)據(jù)模型的表示方法,即用長方型來表示實(shí)體類型,聯(lián)系用菱型框及與實(shí)體型相連的線表示,將聯(lián)系的類型寫在線上或線的附近,在長方形框內(nèi)和菱形框內(nèi)分別寫上實(shí)體型名稱和聯(lián)系名稱,用橢圓表示實(shí)體類型和聯(lián)系的屬性,將其與所描述的相應(yīng)的實(shí)體類型或聯(lián)系用線相連,在橢圓框內(nèi)寫上屬性的名稱。這樣我們就可以得到一個(gè)能夠較好地描繪出實(shí)體、實(shí)體與實(shí)體之間相互聯(lián)系以及有關(guān)實(shí)體和聯(lián)系屬性的結(jié)構(gòu)圖,這個(gè)圖通常就被稱為E-R圖。獲得E-R圖的全部過程通常就被稱為E-R圖方法。
最后為了說明上面我們所介紹的有關(guān)E-R圖的建立和表示方法,這里我們介紹一個(gè)制造工廠數(shù)據(jù)庫應(yīng)用系統(tǒng)中所涉及的部分信息對象所構(gòu)成的E-R圖。如圖1.5所示。
圖1.5 制造工廠信息的E-R圖
在圖1.5中,我們共描述了五個(gè)實(shí)體類型,它們分別是部門、職工、工程、供應(yīng)商和零件實(shí)體型,這些實(shí)體型用長方形加以表示。并描述了這五個(gè)實(shí)體型間的相互聯(lián)系,這些聯(lián)系分別是部門與職工實(shí)體型間一對多的“所屬”聯(lián)系;職工與工程型實(shí)體間多對多的“工作”和一對一“管理”兩種聯(lián)系;工程與零件實(shí)體型間多對多的“所需”聯(lián)系;工程、供應(yīng)商和零件三個(gè)實(shí)體型間相互多對多的“供應(yīng)”聯(lián)系。這些聯(lián)系用菱形加以表示。最后作為示意,我們分別給出了零件實(shí)體型的三個(gè)屬性描述和職工與工程型實(shí)體間“工作”聯(lián)系的屬性描述,這些屬性用橢圓加以表示。
目前實(shí)體關(guān)系數(shù)據(jù)模型及其E-R圖方法已被廣泛地應(yīng)用于數(shù)據(jù)庫應(yīng)用系統(tǒng)的概念設(shè)計(jì)。由于E-R圖直觀易懂,通過它,計(jì)算機(jī)專業(yè)人員與非計(jì)算機(jī)專業(yè)人員可以進(jìn)行直接地交流和合作,同時(shí)使用E-R圖,可以很方便、真實(shí)和合理地描述出一個(gè)具體數(shù)據(jù)庫應(yīng)用系統(tǒng)的信息結(jié)構(gòu),并以此作為進(jìn)一步設(shè)計(jì)數(shù)據(jù)庫應(yīng)用系統(tǒng)的基礎(chǔ)。因此目前實(shí)體關(guān)系數(shù)據(jù)模型及其E-R圖方法還是很受歡迎的。
1.4 數(shù)據(jù)模型與數(shù)據(jù)庫系統(tǒng)
本節(jié)主要介紹常用的三種數(shù)據(jù)庫系統(tǒng)所支持的數(shù)據(jù)模型有關(guān)基本知識,以及與數(shù)據(jù)模型相對應(yīng)的數(shù)據(jù)庫的基本情況。
1.4.1 層次數(shù)據(jù)模型
層次數(shù)據(jù)模型是定義在E-R數(shù)據(jù)模型基礎(chǔ)之上一種數(shù)據(jù)模型,它與層次數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)邏輯組織結(jié)構(gòu)是一致的。其具體定義如下:(1)對E-R數(shù)據(jù)模型中的聯(lián)系類型加以限制,只容許是一對多的聯(lián)系(包括一對一聯(lián)系),在此基礎(chǔ)上,用實(shí)體、屬性和聯(lián)系這三個(gè)基本要素描述客觀信息世界中的信息結(jié)構(gòu)。(2)若將實(shí)體抽象表示為一結(jié)點(diǎn),聯(lián)系抽象表示為一有向線段,忽視屬性,所得到的E-R數(shù)據(jù)模型的抽象拓?fù)鋱D,滿足有向樹的定義,即:M=N-1;其中:M為有向線段總數(shù);N為結(jié)點(diǎn)總數(shù)。該拓?fù)鋱D有以下特點(diǎn):(A)有且僅有一個(gè)結(jié)點(diǎn)無雙親結(jié)點(diǎn),此結(jié)點(diǎn)稱為樹的根。(B)除根結(jié)點(diǎn)外,其它結(jié)點(diǎn)有且僅有一個(gè)雙親結(jié)點(diǎn)。滿足以上兩條約束的E-R數(shù)據(jù)模型,就可稱為是層次數(shù)據(jù)模型,在層次數(shù)據(jù)模型中,用長方形表示實(shí)體型;將長方形分為若干方塊,表示實(shí)體型的各屬性;用有向線段表示各實(shí)體型之間的聯(lián)系。這描述所得到的圖形稱為層次數(shù)據(jù)模型的結(jié)構(gòu)圖。
圖1.6 學(xué)校行政管理機(jī)構(gòu)的E-R圖和層次數(shù)據(jù)模型結(jié)構(gòu)圖
在現(xiàn)實(shí)世界中,有許多層次結(jié)構(gòu)的例子,如在行政管理部門中,部下設(shè)許多局,局下設(shè)許多處,處下設(shè)許多科等。這里我們給出一學(xué)校的行政管理機(jī)構(gòu)的E-R圖和層次數(shù)據(jù)模型結(jié)構(gòu)圖,作為示例,如圖1.6所示。
在如圖1.6所示的例子中,其數(shù)據(jù)模型結(jié)構(gòu)圖如圖1.6的右半部所示,顯然它滿足樹的定義,而其中各實(shí)體型之間的相互聯(lián)系均為一對多的聯(lián)系,所以說這是個(gè)典型的層次數(shù)據(jù)模型結(jié)構(gòu)。
1.4.2 層次數(shù)據(jù)庫系統(tǒng)
層次數(shù)據(jù)庫系統(tǒng)的應(yīng)用流行于七十年代,目前已較少使用,但它在數(shù)據(jù)庫的發(fā)展過程中,扮演過重要的角色。在這一小節(jié),我們將介紹層次數(shù)據(jù)庫的數(shù)據(jù)描述,數(shù)據(jù)操縱的定義和基本過程。重點(diǎn)介紹層次數(shù)據(jù)模型中的實(shí)體、屬性和聯(lián)系在層次數(shù)據(jù)庫中是如何定義和操縱的。這里以IBM公司的IMS層次數(shù)據(jù)庫系統(tǒng)為例,來說明有關(guān)的情況。
【1】層次數(shù)據(jù)庫概念層數(shù)據(jù)邏輯組織結(jié)構(gòu)的設(shè)計(jì)與描述
在將現(xiàn)實(shí)世界的信息結(jié)構(gòu)用E-R數(shù)據(jù)模型(E-R圖)描述出來后,再將所獲得的E-R數(shù)據(jù)模型轉(zhuǎn)換成層次數(shù)據(jù)模型,這時(shí)就可以進(jìn)行層次數(shù)據(jù)庫概念層數(shù)據(jù)邏輯組織結(jié)構(gòu)的設(shè)計(jì)了。在設(shè)計(jì)概念層數(shù)據(jù)邏輯組織結(jié)構(gòu)時(shí),通常將實(shí)體型定義為片斷型,實(shí)體型的屬性定義為片斷型的字?jǐn)?,并通過指定片斷的雙親片斷,定義片斷型之間的聯(lián)系,由此將層次數(shù)據(jù)模型的定義描述轉(zhuǎn)換為層次數(shù)據(jù)庫概念層數(shù)據(jù)邏輯組織結(jié)構(gòu)。并將這一數(shù)據(jù)模型結(jié)構(gòu),稱為是IMS中的物理數(shù)據(jù)庫記錄型。需要說明的是,這里講的物理數(shù)據(jù)庫并不是指存儲在物理設(shè)備上的數(shù)據(jù)庫,即與數(shù)據(jù)庫的物理存儲結(jié)構(gòu)無關(guān)。
圖1.7 學(xué)校行政管理機(jī)構(gòu)的邏輯組織結(jié)構(gòu)
我們以一個(gè)簡單例子來說明有關(guān)情況,如圖1.7所示,這是一學(xué)校行政管理機(jī)構(gòu)的邏輯組織結(jié)構(gòu),若學(xué)校有若干系(DEPT),每個(gè)系有若干班級(CLASS),每個(gè)班有若干學(xué)生(STUDENT),每個(gè)系還有若干教師(TEACHER)。其中:數(shù)據(jù)模型中的片斷型有DEPT、CLASS、STUDENT、TEACHER,各片斷型中的字?jǐn)喾謩e是DEPT(DNO-系編號,DNA-系名,DMA-系主任),CLASS(CNO-班級編號,CSK-專業(yè)),STUDENT(SNO-學(xué)生編號,SNA-姓名,SAG-年齡),TEACHER(TNO-教師編號,TNA-教師姓名,TAG-教師年齡)。整個(gè)數(shù)據(jù)結(jié)構(gòu)命名為DTCS。這里TEACHER和CLASS片斷型稱為是DEPT片斷型的下屬片斷,同樣STUDENR稱為是CLASS的下屬片斷。DEPT又可稱為是TEACHER和CLASS的雙親片斷(在這里它又是根片斷),TEACHER和CLASS又可互稱為兄弟片斷。整個(gè)數(shù)據(jù)模型結(jié)構(gòu)DTCS稱為是一物理數(shù)據(jù)庫記錄型,其每一個(gè)記錄值是由根片斷的一個(gè)值及其所有相應(yīng)的下屬片斷的值所組成。一個(gè)物理數(shù)據(jù)庫有多少個(gè)根片斷值,則它就有多少個(gè)物理數(shù)據(jù)庫記錄。如學(xué)校有20個(gè)系,它的物理數(shù)據(jù)庫就有20個(gè)記錄。每一條記錄包含了某個(gè)系及其該系所有教師、班級和學(xué)生的全部信息。通常一個(gè)IMS數(shù)據(jù)庫是由若干這樣的物理數(shù)據(jù)庫記錄所構(gòu)成。
最后我們給出上述實(shí)例的物理數(shù)據(jù)庫的定義描述。該描述主要包括以下內(nèi)容:(1)命名物理數(shù)據(jù)庫,規(guī)定存儲組織方法和存取方法,指定物理設(shè)備及塊的大小。(2)命名各片斷,指出使用的指針類型及其片斷的雙親片斷。(3)命名各片斷中的字段名、數(shù)據(jù)類型和長度。圖2.5的物理數(shù)據(jù)庫的具體描述內(nèi)容如下:
DBD NAME=DTCS,ACCESS=HDAM
DATASET DD1=DTCSHDAM,DEVICE=3330,BLOCK=1024
SEGM NAME=DEPT,BYTES=20,FREQ=20,PTR=T
FIELD NAME=(DNO,SEQ,U),BYTES=4,START=1,TYPE=C
FIELD NAME=DNA,BYTES=8,START=5,TYPE=C
FIELD NAME=DMA,BYTES=8,START=13,TYPE=C
SEGM NAME=TEACHER,BYTES=14,FREQ=50,PTR=T,PARENT=DEPT
FIELD NAME=(TNO,SEQ,U),BYTES=4,START=1,TYPE=C
FIELD NAME=TNA,BYTES=8,START=5,TYPE=C
FIELD NAME=TAG,BYTES=2,START=13,TYPE=C
SEGM NAME=CLASS,BYTES=14,FREQ=60,PTR=T,PARENT=DEPT
FIELD NAME=(CNO,SEQ,U),BYTES=4,START=1,TYPE=C
FIELD NAME=CSK,BYTES=10,START=5,TYPE=C
SEGM NAME=STUDENT,BYTES=15,FREQ=300,PTR=T,PARENT=DEPT
FIELD NAME=(SNO,SEQ,U),BYTES=5,START=1,TYPE=C
FIELD NAME=SNA,BYTES=8,START=6,TYPE=C
FIELD NAME=SAG,BYTES=2,START=14,TYPE=C
DBDGEN
FINISH
END
現(xiàn)將上述描述中的部分語句的含義說明如下:
①DBD語句:給所要描述的物理數(shù)據(jù)庫取名,規(guī)定其數(shù)據(jù)庫的存取方法,在IMS中有四種存取方法,它們是:(A)層次順序存取方法(HSAM),即將數(shù)據(jù)庫中的所有片斷值,按照其層次數(shù)據(jù)結(jié)構(gòu)從上而下、從左而右的順序存放。(B)層次索引存取方法(HISAM),即將數(shù)據(jù)庫中的所有根片斷值,用指針連接起來或單獨(dú)存放,并建立其索引;其它下屬片斷值,按照其層次數(shù)據(jù)結(jié)構(gòu)從上而下、從左而右的順序存放。(C)層次直接存取方法(HDAM),即將數(shù)據(jù)庫中的所有片斷值,按照其層次數(shù)據(jù)結(jié)構(gòu)從上而下、從左而右的順序用指針連接起來存放。(D)層次索引直接存取方法(HIDAM),即將數(shù)據(jù)庫中的所有片斷值,按照其層次數(shù)據(jù)結(jié)構(gòu)從上而下、從左而右的順序用指針(PTR=H)連接起來存放,或用兄弟、子女指針(PTR=T)連接起來存放,并建立根片斷值的索引。
②DATASET語句:命名數(shù)據(jù)庫所對應(yīng)的數(shù)據(jù)集合,指定物理設(shè)備及其物理存儲塊的大小。
③SEGM語句:定義片斷名、一個(gè)片斷值的長度、片斷值可能的個(gè)數(shù)、采用連接指針的類型和雙親片斷名。
④FIELD語句:定義片斷中的各字段,如字段名、字段數(shù)據(jù)類型、字段長度及排序碼。
⑤DBDGEN語句:指示模式編譯器開始產(chǎn)生數(shù)據(jù)庫模式定義。
⑥FINISH語句:指示模式編譯器結(jié)束產(chǎn)生數(shù)據(jù)庫模式定義,檢驗(yàn)生成結(jié)果。
⑦END語句:指示說明模式描述結(jié)束。
這里需要注意的是片斷描述的順序必須是按照其層次數(shù)據(jù)結(jié)構(gòu)從上而下、從左而右的順序逐個(gè)進(jìn)行。
【2】層次數(shù)據(jù)庫用戶層數(shù)據(jù)邏輯組織結(jié)構(gòu)的設(shè)計(jì)與描述
在IMS數(shù)據(jù)庫系統(tǒng)中,用戶層數(shù)據(jù)邏輯組織結(jié)構(gòu)所定義的子模式,稱為IMS邏輯數(shù)據(jù)庫,它是從物理數(shù)據(jù)庫中派生出來的,數(shù)據(jù)庫的應(yīng)用程序只能使用邏輯數(shù)據(jù)庫。邏輯數(shù)據(jù)庫有兩種類型,一種是邏輯數(shù)據(jù)庫僅僅從一個(gè)物理數(shù)據(jù)庫中的部分片斷所構(gòu)成的數(shù)據(jù)結(jié)構(gòu);另一種是邏輯數(shù)據(jù)庫從一個(gè)以上的物理數(shù)據(jù)庫中的部分片斷所構(gòu)成的數(shù)據(jù)結(jié)構(gòu)。這里我們只介紹第一種情況下的邏輯數(shù)據(jù)庫的定義和描述。設(shè)計(jì)邏輯數(shù)據(jù)庫時(shí),必須遵守以下兩條規(guī)則:(1)一個(gè)邏輯數(shù)據(jù)庫中的根片斷必須是某個(gè)物理數(shù)據(jù)庫中的根片斷。(2)一個(gè)邏輯子女片斷必須有一個(gè)物理雙親片斷和一個(gè)邏輯雙親片斷。即任何物理數(shù)據(jù)庫中
數(shù)據(jù)庫系統(tǒng)概論
[下載聲明]
1.本站的所有資料均為資料作者提供和網(wǎng)友推薦收集整理而來,僅供學(xué)習(xí)和研究交流使用。如有侵犯到您版權(quán)的,請來電指出,本站將立即改正。電話:010-82593357。
2、訪問管理資源網(wǎng)的用戶必須明白,本站對提供下載的學(xué)習(xí)資料等不擁有任何權(quán)利,版權(quán)歸該下載資源的合法擁有者所有。
3、本站保證站內(nèi)提供的所有可下載資源都是按“原樣”提供,本站未做過任何改動(dòng);但本網(wǎng)站不保證本站提供的下載資源的準(zhǔn)確性、安全性和完整性;同時(shí)本網(wǎng)站也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的損失或傷害。
4、未經(jīng)本網(wǎng)站的明確許可,任何人不得大量鏈接本站下載資源;不得復(fù)制或仿造本網(wǎng)站。本網(wǎng)站對其自行開發(fā)的或和他人共同開發(fā)的所有內(nèi)容、技術(shù)手段和服務(wù)擁有全部知識產(chǎn)權(quán),任何人不得侵害或破壞,也不得擅自使用。
我要上傳資料,請點(diǎn)我!
管理工具分類
ISO認(rèn)證課程講義管理表格合同大全法規(guī)條例營銷資料方案報(bào)告說明標(biāo)準(zhǔn)管理戰(zhàn)略商業(yè)計(jì)劃書市場分析戰(zhàn)略經(jīng)營策劃方案培訓(xùn)講義企業(yè)上市采購物流電子商務(wù)質(zhì)量管理企業(yè)名錄生產(chǎn)管理金融知識電子書客戶管理企業(yè)文化報(bào)告論文項(xiàng)目管理財(cái)務(wù)資料固定資產(chǎn)人力資源管理制度工作分析績效考核資料面試招聘人才測評崗位管理職業(yè)規(guī)劃KPI績效指標(biāo)勞資關(guān)系薪酬激勵(lì)人力資源案例人事表格考勤管理人事制度薪資表格薪資制度招聘面試表格崗位分析員工管理薪酬管理績效管理入職指引薪酬設(shè)計(jì)績效管理績效管理培訓(xùn)績效管理方案平衡計(jì)分卡績效評估績效考核表格人力資源規(guī)劃安全管理制度經(jīng)營管理制度組織機(jī)構(gòu)管理辦公總務(wù)管理財(cái)務(wù)管理制度質(zhì)量管理制度會計(jì)管理制度代理連鎖制度銷售管理制度倉庫管理制度CI管理制度廣告策劃制度工程管理制度采購管理制度生產(chǎn)管理制度進(jìn)出口制度考勤管理制度人事管理制度員工福利制度咨詢診斷制度信息管理制度員工培訓(xùn)制度辦公室制度人力資源管理企業(yè)培訓(xùn)績效考核其它
精品推薦
下載排行
- 1社會保障基礎(chǔ)知識(ppt) 16695
- 2安全生產(chǎn)事故案例分析(ppt 16695
- 3行政專員崗位職責(zé) 16695
- 4品管部崗位職責(zé)與任職要求 16695
- 5員工守則 16695
- 6軟件驗(yàn)收報(bào)告 16695
- 7問卷調(diào)查表(范例) 16695
- 8工資發(fā)放明細(xì)表 16695
- 9文件簽收單 16695
- 10跟我學(xué)禮儀 16695