數(shù)據(jù)庫系統(tǒng)概論

  文件類別:說明標準

  文件格式:文件格式

  文件大?。?6K

  下載次數(shù):535

  所需積分:4點

  解壓密碼:qg68.cn

  下載地址:[下載地址]

清華大學卓越生產(chǎn)運營總監(jiān)高級研修班

綜合能力考核表詳細內(nèi)容

數(shù)據(jù)庫系統(tǒng)概論
本章目的在于使讀者對數(shù)據(jù)庫系統(tǒng)的基本知識能有一個較為全面的了解,為今后的學習和工作打下基礎。本章重點介紹了有關數(shù)據(jù)庫結(jié)構(gòu)和數(shù)據(jù)庫系統(tǒng)組織的基本知識和基本概念,以及常見的三種類型的數(shù)據(jù)庫系統(tǒng)的特點。重點介紹關系數(shù)據(jù)庫的有關知識。


1.1 數(shù)據(jù)管理技術發(fā)展史

隨著生產(chǎn)力的不斷發(fā)展,社會的不斷進步,人類對信息的依賴程度也在不斷地增加。數(shù)據(jù)作為表達信息的一種量化符號,正在成為人們處理信息時重要的操作對象。所謂數(shù)據(jù)處理就是對數(shù)據(jù)的收集、整理、存儲、分類、排序、檢索、維護、加工、統(tǒng)計和傳輸?shù)纫幌盗泄ぷ魅窟^程的概述。數(shù)據(jù)處理的目的就是使我們能夠從浩瀚的信息數(shù)據(jù)海洋中,提取出有用的數(shù)據(jù)信息,作為我們工作、生活等各方面的決策依據(jù)。數(shù)據(jù)管理則是指對數(shù)據(jù)的組織、編碼、分類、存儲、檢索和維護,它是數(shù)據(jù)處理的一個重要內(nèi)容中心。數(shù)據(jù)處理工作由來以久,早在1880年美國進行人口普查統(tǒng)計時,就已采用穿孔卡片來存儲人口普查數(shù)據(jù),并采用機械設備來完成對這些普查數(shù)據(jù)所進行的處理工作。電子計算機的出現(xiàn)以及其后其硬件、軟件的迅速發(fā)展,加之數(shù)據(jù)庫理論和技術的發(fā)展,為數(shù)據(jù)管理進入一個革命性階段提供有力的支持。根據(jù)數(shù)據(jù)和應用程序相互依賴關系、數(shù)據(jù)共享以及數(shù)據(jù)的操作方式,數(shù)據(jù)管理的發(fā)展可以分為三個具有代表性的階段,即人工管理階段、文件管理階段和數(shù)據(jù)庫管理階段。
【1】人工管理階段
這一階段發(fā)生于六十年代以前,由于當時計算機硬件和軟件發(fā)展才剛剛起步,數(shù)據(jù)管理中全部工作,都必須要由應用程序員自己設計程序完成去完成。由于需要與計算機硬件以及各外部存儲設備和輸入輸出設備直接打交道,程序員們常常需要編制大量重復的數(shù)據(jù)管理基本程序。數(shù)據(jù)的邏輯組織與它的物理組織基本上是相同的,因此當數(shù)據(jù)的邏輯組織、物理組織或存儲設備發(fā)生變化時,進行數(shù)據(jù)管理工作的許多應用程序就必須要進行重新編制。這樣就給數(shù)據(jù)管理的維護工作帶來許多困難。并且由于一組數(shù)據(jù)常常只對應于一種應用程序,因此很難實現(xiàn)多個不同應用程序間的數(shù)據(jù)資源共享。存在著大量重復數(shù)據(jù),信息資源浪費嚴重。
【2】文件管理階段
這一階段發(fā)生于六十年代,由于當時計算機硬件的發(fā)展,以及系統(tǒng)軟件尤其是文件系統(tǒng)的出現(xiàn)和發(fā)展,人們開始利用文件系統(tǒng)來幫助完成數(shù)據(jù)管理工作,具體講就是:數(shù)據(jù)以多種組織結(jié)構(gòu)(如順序文件組織、索引文件文件組織和直接存取文件組織等)的文件形式保存在外部存儲設備上,用戶通過文件系統(tǒng)而無需直接與外部設備打交道,以此來完成數(shù)據(jù)的修改、插入、刪除、檢索等管理操作;使用這種管理方式,不僅減輕進行數(shù)據(jù)管理的應用程序工作量,更重要地是,當數(shù)據(jù)的物理組織或存儲設備發(fā)生變化時,數(shù)據(jù)的邏輯組織可以不受任何影響,從而保證了基于數(shù)據(jù)邏輯組織所編制的應用程序也可以不受硬件設備變化的影響。這樣就使得程序和數(shù)據(jù)之間具有了一定的相互獨立性。
但由于數(shù)據(jù)文件的邏輯結(jié)構(gòu)完全是根據(jù)應用程序的具體要求而設計,它的管理與維護完全是由應用程序本身來完成,因此數(shù)據(jù)文件的邏輯結(jié)構(gòu)與應用程序密切相關,當數(shù)據(jù)的邏輯結(jié)構(gòu)需要修改時,應用程序也就不可避免地需要進行修改;同樣當應用程序需要進行變動時,常常又會要求數(shù)據(jù)的邏輯結(jié)構(gòu)進行相應的變動。在這種情況下,數(shù)據(jù)管理中的維護工作量也是較大的。更主要的是由于采用文件的形式來進行數(shù)據(jù)管理工作,常常需要將一個完整的、相互關聯(lián)的數(shù)據(jù)集合,人為地分割成若干相互獨立的文件,以便通過基于文件系統(tǒng)的編程來實現(xiàn)來對它們的管理操作。這樣做同樣會導致數(shù)據(jù)的過多冗余和增加數(shù)據(jù)維護工作的復雜性。例如人事部門、教務部門和醫(yī)務部門對學生數(shù)據(jù)信息的管理,這三個部門中有許多數(shù)據(jù)是相同的,如姓名、年齡、性別等,由于是各部門均是根據(jù)自己的要求,建立各自的數(shù)據(jù)文件和應用程序,這樣不僅造成了大量的相同數(shù)據(jù)重復存儲,而且在修改時,常常需要同時修改三個文件中的數(shù)據(jù)項,如修改學生年齡,此外若需要增加一個描述學生的數(shù)據(jù)項,如通訊地址,那么所有的應用程序就必須都要進行相應的修改。除此之外,采用文件系統(tǒng)來幫助進行數(shù)據(jù)管理工作,在數(shù)據(jù)的安全和保密等方面,也難以采取有效的措施加以控制。
【3】數(shù)據(jù)庫管理階段
1在不斷改進和完善文件系統(tǒng)的過程中,從六十年代后期開始,人們逐步研究和發(fā)展了以數(shù)據(jù)的統(tǒng)一管理和數(shù)據(jù)共享為主要特征的數(shù)據(jù)庫系統(tǒng)。即在數(shù)據(jù)在統(tǒng)一控制之下,為盡可能多的應用和用戶服務,數(shù)據(jù)庫中的數(shù)據(jù)組織結(jié)構(gòu)與數(shù)據(jù)庫的應用程序相互間有較大的相對獨立性等。與以往前數(shù)據(jù)管理方法和技術相比,利用數(shù)據(jù)庫系統(tǒng)來進行數(shù)據(jù)管理工作具有以下三個顯著特點:
(1)從整體角度組織數(shù)據(jù)
數(shù)據(jù)庫系統(tǒng)與文件系統(tǒng)的最大差別就在于前者在描述數(shù)據(jù)時,不僅僅是對數(shù)據(jù)本身進行描述,而且對數(shù)據(jù)之間的相互聯(lián)系也進行了描述。因此在組織數(shù)據(jù)時是從一個相對較高的整體角度進行的,而不是僅僅局限于個別的數(shù)據(jù)管理應用場合。如前面提到的人事部門、教務部門和醫(yī)務部門對學生數(shù)據(jù)的管理工作,在利用數(shù)據(jù)庫系統(tǒng)來進行管理時,若從整體考慮,其數(shù)據(jù)的組織結(jié)構(gòu)如圖1.1所示。

圖1.1 學生信息數(shù)據(jù)組織結(jié)構(gòu)

采用這種數(shù)據(jù)組織不僅可以有效地解決了文件系統(tǒng)的數(shù)據(jù)組織中所存在的數(shù)據(jù)冗余以及數(shù)據(jù)一致性維護的問題。更主要的是它可以使人們從更高的全局角度出發(fā),合理地組織數(shù)據(jù),從而有利于更大范圍內(nèi)的數(shù)據(jù)資源的共享,提高信息的使用效率。
(2)數(shù)據(jù)可為多個應用服務
正因為數(shù)據(jù)庫中的數(shù)據(jù)是從整體角度進行組織的,因此,數(shù)據(jù)庫中所存儲的數(shù)據(jù)往往就不僅局限于只為一二個應用提供服務,而是在更大范圍內(nèi)為僅可能多的應用提供服務,如圖1.1所示的一個數(shù)據(jù)庫中所存儲的數(shù)據(jù),就至少可以為三個部門的應用提供服務。而實際上如圖1.1所示的數(shù)據(jù)組織結(jié)構(gòu)僅僅只是一個學校數(shù)據(jù)管理數(shù)據(jù)庫中的一小部分。與此同時由于數(shù)據(jù)庫系統(tǒng)是以多級(層)組織模式對數(shù)據(jù)進行組織的,各級(層)模式之間的映射是由數(shù)據(jù)庫系統(tǒng)自己完成的,這就使得數(shù)據(jù)與程序之間可以具有較高的物理和邏輯相對獨立性。正是這一點,給數(shù)據(jù)庫中的數(shù)據(jù)為多個應用提供服務奠定了基礎。事實上數(shù)據(jù)庫的規(guī)模越大,所能夠提供的應用服務就可以越多,也就越能體現(xiàn)出數(shù)據(jù)庫在數(shù)據(jù)管理中的優(yōu)勢。當然這只是相對而言,隨著數(shù)據(jù)庫中數(shù)據(jù)規(guī)模的擴大,數(shù)據(jù)庫應用系統(tǒng)的制作和維護的工作也在迅速增加。
(3)有一個數(shù)據(jù)庫系統(tǒng)的管理軟件
任何數(shù)據(jù)庫系統(tǒng)都包含一個管理軟件,即數(shù)據(jù)庫系統(tǒng)的管理軟件,通常又稱為數(shù)據(jù)庫管理系統(tǒng),它負責統(tǒng)一管理數(shù)據(jù)庫系統(tǒng)中所有數(shù)據(jù)資源,是數(shù)據(jù)庫系統(tǒng)與用戶應用之間的接口,通過它,用戶可以不必要了解過多的計算機硬件、軟件和數(shù)據(jù)庫本身許多專業(yè)知識,更不用去了解數(shù)據(jù)庫系統(tǒng)是如何完成數(shù)據(jù)管理工作的具體細節(jié),如文件如何打開、關閉、讀、寫等等,就可以通過編寫一些較為簡單數(shù)據(jù)庫應用程序,很方便地完成在較高級別邏輯組織基礎上的數(shù)據(jù)管理工作。除此之外,數(shù)據(jù)庫管理系統(tǒng)還負責完成在對數(shù)據(jù)庫進行并發(fā)訪問時,保證數(shù)據(jù)一致性的并發(fā)控制工作;保證數(shù)據(jù)安全性的訪問控制工作;以及在數(shù)據(jù)庫系統(tǒng)出現(xiàn)故障時,提供保證數(shù)據(jù)一致性和完整性的恢復機制等諸多數(shù)據(jù)庫系統(tǒng)本身的各種管理控制工作。因此這里也可以看出,數(shù)據(jù)庫管理系統(tǒng)功能的強弱及其各項性能指標的好壞,是衡量數(shù)據(jù)庫系統(tǒng)質(zhì)量的一個極其重要的因素。
利用數(shù)據(jù)庫系統(tǒng)進行數(shù)據(jù)管理工作,不僅可以保證數(shù)據(jù)的物理組織結(jié)構(gòu)和存儲設備與數(shù)據(jù)庫應用程序之間保持相互獨立性;同時也可以保證數(shù)據(jù)的邏輯組織結(jié)構(gòu)與數(shù)據(jù)庫應用程序之間保持最大可能的相互獨立性,即當數(shù)據(jù)的邏輯組織結(jié)構(gòu)發(fā)生變化時,數(shù)據(jù)庫應用程序的變動被限制在最小的范圍內(nèi)。由此可大大地減少數(shù)據(jù)庫應用程序的開發(fā)與維護的工作量。
在數(shù)據(jù)庫管理階段,根據(jù)數(shù)據(jù)庫系統(tǒng)本身所支持的數(shù)據(jù)模型的特點及所采用的相應數(shù)據(jù)庫系統(tǒng)技術,可以認為數(shù)據(jù)庫管理到目前為止已發(fā)展經(jīng)歷了三代,即層次網(wǎng)狀模型代、關系模型代和面向?qū)ο竽P痛?
(1)層次網(wǎng)狀模型代:流行于六十至七十年代,在這一代中的數(shù)據(jù)庫系統(tǒng)所支持的數(shù)據(jù)模型均是層次模型或網(wǎng)狀模型。世界上第一個數(shù)據(jù)庫系統(tǒng)是于1964年由美國通用電氣公司開發(fā)成功的IDS(Integrated Data Store),它就是基于網(wǎng)狀模型的數(shù)據(jù)庫系統(tǒng)。IBM公司于六十年代末推出了第一個商品化的層次數(shù)據(jù)庫系統(tǒng)IMS(Information Management Sytem),它們的出現(xiàn)與應用為數(shù)據(jù)庫技術的發(fā)展奠定了基礎。
(2)關系模型代:流行于七十至八十年代,在這一代中的數(shù)據(jù)庫系統(tǒng)所支持的數(shù)據(jù)的數(shù)據(jù)模型均是關系模型。以關系(表)形式組織數(shù)據(jù)。1970年Codd提出了關系數(shù)據(jù)模型,由于其具有嚴格的數(shù)學基礎,抽象級別較高,且簡單清晰,便于理解應用。到了七十年代末,出現(xiàn)了不少關系數(shù)據(jù)庫系統(tǒng),其中具有代表性應首推IBM公司推出的SQL/DS和DB2兩個商品化關系數(shù)據(jù)庫系統(tǒng)。進行八十年代以后,關系數(shù)據(jù)庫系統(tǒng)已成為數(shù)據(jù)庫系統(tǒng)發(fā)展的主流,幾乎所有新推出的數(shù)據(jù)庫系統(tǒng)產(chǎn)品都是關系型的,它們中不僅有用于大型機和小型機數(shù)據(jù)庫產(chǎn)品,而且有可用于微機的數(shù)據(jù)庫產(chǎn)品。市場上開始出現(xiàn)關系數(shù)據(jù)庫的系列產(chǎn)品,這其中發(fā)行量較大且在我國用得較多的有Oracle、Sybase、Sysbase、Informix、FoxPro等。隨著微機和計算機網(wǎng)絡的廣泛普及和應用,分布式數(shù)據(jù)庫系統(tǒng)在八十年代后期,開始得到很大發(fā)展。其理論和技術日趨成熟。目前幾乎所有分布式數(shù)據(jù)庫系統(tǒng)均是關系型的,而且?guī)缀跛兄饕P系數(shù)據(jù)庫系統(tǒng)均已被擴充為分布式數(shù)據(jù)庫系統(tǒng)。
(3)面向?qū)ο蟠?開始九十年代,在這一代中的數(shù)據(jù)庫系統(tǒng)支持面向?qū)ο蟮臄?shù)據(jù)模型。它是數(shù)據(jù)庫技術與面向?qū)ο蟪绦蛟O計方法相結(jié)合的產(chǎn)物。作為新一代數(shù)據(jù)庫系統(tǒng),現(xiàn)在已有了一些商品化系統(tǒng)。但其具體應用尚不多。


1.2 數(shù)據(jù)庫系統(tǒng)

本節(jié)主要介紹有關數(shù)據(jù)庫結(jié)構(gòu)和數(shù)據(jù)庫系統(tǒng)組織的一些基本知識和概念,使讀者對數(shù)據(jù)庫系統(tǒng)的內(nèi)涵有一個較為清楚的認識。

1.2.1 數(shù)據(jù)庫系統(tǒng)概念
由于數(shù)據(jù)庫系統(tǒng)是一個由許多基本概念、技術方法和其應用對象所組成的復雜的有機整體。很難用一兩句話將其描述清楚。但為了使讀者對它有一個總體的了解,首先這里我們試著給出一個關于數(shù)據(jù)庫系統(tǒng)的定義,即數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)庫是一個已被規(guī)格化和結(jié)構(gòu)化且相互關聯(lián)的數(shù)據(jù)集合,這些數(shù)據(jù)中不存在有害的或無意義的冗余;數(shù)據(jù)的組織與存儲結(jié)構(gòu)與使用這些數(shù)據(jù)的程序相互獨立;數(shù)據(jù)庫中的數(shù)據(jù)可同時為多個應用服務;數(shù)據(jù)庫中的數(shù)據(jù)定義、輸入、修改和檢索等所有操作均是按一種公用的且可控的方式進行。根據(jù)這一數(shù)據(jù)庫定義以及實際應用的具體數(shù)據(jù)庫系統(tǒng)的情況,我們可以認為一個數(shù)據(jù)庫系統(tǒng)實際上是由三部分內(nèi)容組成,它們是數(shù)據(jù)庫、多種應用和數(shù)據(jù)庫管理系統(tǒng)。這三部分之間的相互關系如圖1.2所示。
(1)數(shù)據(jù)庫:相互關聯(lián)的且具有最小冗余的數(shù)據(jù)在其中按照一定物理組織結(jié)構(gòu)存放,并且從用戶和數(shù)據(jù)庫管理系統(tǒng)角度來看,這些數(shù)據(jù)又是按一定邏輯結(jié)構(gòu)組織的。這種物理組織結(jié)構(gòu)和邏輯組織結(jié)構(gòu)在最大程度上與用戶所編制的應用程序相互獨立。
(2)多種應用:數(shù)據(jù)庫中的數(shù)據(jù),在數(shù)據(jù)庫管理系統(tǒng)的控制與管理之下,可以同時為多種不同內(nèi)容的應用提供服務,即可以為多個不同目的用戶服務,各用戶所操作使用的數(shù)據(jù)可以是相互交叉的。用戶的操作方式既可以按以數(shù)據(jù)輸入/輸出和數(shù)據(jù)維護為主的數(shù)據(jù)流量較大的批處理方式進行;也可以按以查詢?yōu)橹鞯臄?shù)據(jù)流量較小的聯(lián)機處理方式進行,必要時還可以通過編程來完成對數(shù)據(jù)庫中數(shù)據(jù)的各種操作。
(3)數(shù)據(jù)庫管理系統(tǒng):它一方面負責對數(shù)據(jù)庫中的數(shù)據(jù)進行管理和維護;一方面為用戶操作數(shù)據(jù)庫中的數(shù)據(jù)提供一種公用的操作方法,接收用戶的操作命令,幫助完成有關的對數(shù)據(jù)庫的操作并保障數(shù)據(jù)庫的安全。
根據(jù)對數(shù)據(jù)庫的定義以及數(shù)據(jù)庫系統(tǒng)基本組成及作用的描述,我們認為一個的數(shù)據(jù)庫系統(tǒng)應該具有的以下五個基本特點:
【1】由于數(shù)據(jù)庫系統(tǒng)是從整體角度考慮數(shù)據(jù)的組織,因此它必須有能力描述能夠反映客觀事物及其相互聯(lián)系的復雜數(shù)據(jù)模型,使用它能夠?qū)?shù)據(jù)本身及相互間的各種關系進行充分描述,這也是人們?yōu)槭裁匆捎脭?shù)據(jù)庫系統(tǒng)來進行數(shù)據(jù)管理的主要原因之一。目前數(shù)據(jù)庫系統(tǒng)共提供了四種數(shù)據(jù)模型,它們是層次數(shù)據(jù)模型、網(wǎng)狀數(shù)據(jù)模型、關系數(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ù)的獨立性。為了說明這一點,首先我們介紹兩個概念,(1)數(shù)據(jù)在物理存儲設備上的組織結(jié)構(gòu)被稱為數(shù)據(jù)的物理組織;(2)數(shù)據(jù)在用戶或應用程序面前所表現(xiàn)出的組織結(jié)構(gòu)被稱為數(shù)據(jù)的邏輯組織;一種數(shù)據(jù)的邏輯組織,可以采用不同的物理組織來實現(xiàn),物理組織的好壞影響著系統(tǒng)的性能和效率。在運行階段中,由于性能的要求或存儲設備的改變,從而引起數(shù)據(jù)物理組織的改變,這種改變稱為數(shù)據(jù)的再組織。用戶在編制應用程序時,則是根據(jù)數(shù)據(jù)的邏輯組織對數(shù)據(jù)進行操作的。因此數(shù)據(jù)物理組織的變化,不會影響數(shù)據(jù)的邏輯組織,因而也就不會影響已有的應用程序,這種情況就被稱為數(shù)據(jù)的物理獨立性;而數(shù)據(jù)的邏輯獨立性是指當數(shù)據(jù)的邏輯組織發(fā)生變化時,如數(shù)據(jù)模型中增加了新的記錄類型,某一記錄類型中增加了新的數(shù)據(jù)項等,原有應用程序的執(zhí)行不受影響或影響最小。數(shù)據(jù)的獨立性,包括物理和邏輯的獨立性,都是由數(shù)據(jù)庫管理系統(tǒng)進行維護的。
【3】數(shù)據(jù)共享,由于數(shù)據(jù)庫是從整體的角度對數(shù)據(jù)進行組織的,并在保證數(shù)據(jù)一致性的情形之下,使數(shù)據(jù)庫中的數(shù)據(jù)為盡可能多的用戶提供應用服務。這些用戶所使用的數(shù)據(jù)可以是交叉的,即數(shù)據(jù)可以共享。如果數(shù)據(jù)不能共享,數(shù)據(jù)庫中則必然會出現(xiàn)大量的冗余數(shù)據(jù),這樣不僅造成存儲空間的浪費,更主要的是由此可能帶來數(shù)據(jù)不一致的隱患。
【4】數(shù)據(jù)庫系統(tǒng)的安全可靠與完整,一個數(shù)據(jù)庫系統(tǒng)的可靠性體現(xiàn)在它的軟件系統(tǒng)運行故障率很小以及在數(shù)據(jù)庫系統(tǒng)由于各種意外而出現(xiàn)故障時,數(shù)據(jù)庫中的數(shù)據(jù)的損失最??;安全性是指數(shù)據(jù)庫系統(tǒng)對其所存儲的數(shù)據(jù)的保護能力,能夠有效地防止數(shù)據(jù)有意無意地泄露或篡改,控制數(shù)據(jù)的授權(quán)訪問等。而數(shù)據(jù)庫系統(tǒng)的完整性則是指在多用戶操作數(shù)據(jù)情況下,數(shù)據(jù)能夠保持一致性。這些特性可以從以下幾個方面進行說明:
〈1〉安全性控制
安全性控制主要指的是數(shù)據(jù)庫的保密性。并不是每個用戶都能夠存取數(shù)據(jù)庫中所有數(shù)據(jù)的,負責人和全體工作人員允許掌握的數(shù)據(jù)范圍顯然是有區(qū)別的,數(shù)據(jù)庫系統(tǒng)把各用戶存取數(shù)據(jù)的權(quán)利分成若干等級,如教學人員作為一個用戶可以登錄學生的成績,而學生作為一個用戶則僅可以查閱成績而無法對它進行修改或刪除。通過對各個用戶授于不同的使用權(quán)限,以確保數(shù)據(jù)庫免遭損害和被非法使用,通常是通過采用口令密碼以及數(shù)據(jù)庫中數(shù)據(jù)訪問授權(quán)等方法對使用者操作數(shù)據(jù)的合法權(quán)進行檢驗,以實現(xiàn)對數(shù)據(jù)庫中數(shù)據(jù)安全性的保護控制。
〈2〉完整性控制
所謂完整性包括數(shù)據(jù)的正確性、有效性和相容性。正確的數(shù)據(jù)不一定是有效的。如若用兩位阿拉伯數(shù)字來表示月份,在輸入14來代表月份時顯然是無效的。數(shù)據(jù)庫系統(tǒng)應提供盡可能多的檢驗措施,以確保數(shù)據(jù)庫中的數(shù)據(jù)滿足用戶所要求的各種約束要求。
〈3〉并發(fā)控制
在多用戶操作使用數(shù)據(jù)庫系統(tǒng)的情況下,不同用戶并行地操作數(shù)據(jù)庫就可能引起對數(shù)據(jù)庫的干擾,從而使得數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生不一致的問題。如當甲用戶從數(shù)據(jù)庫中預定了僅剩的一張機票之后,若在數(shù)據(jù)庫尚來不及將剩余的機票數(shù)改為零時,乙用戶又請求訂票時怎么辦?顯然對這種并發(fā)的操作要采取某種控制措施,最常用的方法是封鎖技術,以排除和避免這種錯誤的發(fā)生,保證數(shù)據(jù)庫中數(shù)據(jù)的操作能夠正確完成執(zhí)行。
〈4〉故障的發(fā)現(xiàn)與恢復
由于數(shù)據(jù)庫系統(tǒng)在運行過程中很難保證不產(chǎn)生故障、出現(xiàn)意義或受到破壞,而且往往這些情況的發(fā)生的時間都是隨機的,如斷電、用戶誤操作等,而重建一個數(shù)據(jù)庫往往要花費很大的精力和代價,有時甚至是不可能的,因此數(shù)據(jù)庫系統(tǒng)應提供應急保護設施,一旦系統(tǒng)的軟硬件發(fā)生故障或用戶誤操作導致系統(tǒng)異常時,系統(tǒng)應能夠以盡量小的代價,盡快地恢復數(shù)據(jù)庫的內(nèi)容和系統(tǒng)的正常運行。
【5】良好的人機接口與性能,任何數(shù)據(jù)庫系統(tǒng)最終都是要和用戶打交道,系統(tǒng)所具有的各種功能最終都需要由用戶來進行操作使用。簡單易學、操作簡便和用戶界面友好是任何一個數(shù)據(jù)庫系統(tǒng)所必須的。此外系統(tǒng)的響應速度,單位時間內(nèi)數(shù)據(jù)的吞吐量也是衡量數(shù)據(jù)庫性能重要指標。

1.2.2 數(shù)據(jù)庫結(jié)構(gòu)
在上一小節(jié),我們介紹了數(shù)據(jù)庫系統(tǒng)所涉及的三個基本成分以及數(shù)據(jù)庫系統(tǒng)所應具有的五個特點,在這一小節(jié)中,我們將略為詳盡地介紹數(shù)據(jù)庫系統(tǒng)的主要組成之一,數(shù)據(jù)庫的有關知識。在數(shù)據(jù)庫技術中,為了提高數(shù)據(jù)庫中數(shù)據(jù)的邏輯獨立性和物理獨立性,采用了分級(層)方法,將數(shù)據(jù)庫中數(shù)據(jù)的組織結(jié)構(gòu)劃分成多個級(層)。根據(jù)美國國家標準協(xié)會(ANSI)所提出的報告,數(shù)據(jù)庫的數(shù)據(jù)組織結(jié)構(gòu)可以分為三個相互關聯(lián)的層次,它們分別是概念層數(shù)據(jù)模式、用戶層數(shù)據(jù)模式和物理層數(shù)據(jù)模式。
【1】概念層數(shù)據(jù)模式,又稱為模式,它是對數(shù)據(jù)庫中數(shù)據(jù)整體邏輯結(jié)構(gòu)的描述,它是對數(shù)據(jù)庫中所有數(shù)據(jù)項、記錄類型以及各記錄類型之間的相互關系的描述。這里需要說明的是,這種描述僅僅是一種邏輯組織結(jié)構(gòu)的描述,是面向用戶需要而提出的。而非是真正的數(shù)據(jù)存儲組織結(jié)構(gòu)。提供這一層次的數(shù)據(jù)模式描述,主要是為了數(shù)據(jù)庫應用系統(tǒng)的設計者,在對與應用有關的所有用戶的需求進行統(tǒng)一綜合考慮之后提出的,它能夠從總體上,將這些需求所涉及到的數(shù)據(jù)及其它們間的相互聯(lián)系,有機地結(jié)合成為一個邏輯整體。概念層數(shù)據(jù)模式的設計是數(shù)據(jù)庫設計的最基本也是最重要的任務。
【2】用戶層數(shù)據(jù)模式,又稱為外模式或子模式,它是對以用戶為對象使用數(shù)據(jù)庫所涉及到的所有數(shù)據(jù)局部邏輯結(jié)構(gòu)的描述。它是模式一個子集或者是一個映射,一個數(shù)據(jù)庫只有一個模式,但通常都對應著多個子模式。子模式所包含的數(shù)據(jù)之間容許有重疊,也容許多個用戶共用同一個子模式。提供這一層次的數(shù)據(jù)模式描述,有以下優(yōu)點:
〈1〉用戶只要按照描述自己所使用數(shù)據(jù)的子模式編寫應用程序或輸入操作命令,就可以完成滿足自己要求的數(shù)據(jù)庫操縱工作。而無需了解整體數(shù)據(jù)模式或數(shù)據(jù)的存儲組織結(jié)構(gòu),從而是用戶接口變得簡單。
〈2〉保證了數(shù)據(jù)獨立性。由于用戶的數(shù)據(jù)庫應用編程僅僅是依據(jù)子模式的數(shù)據(jù)邏輯結(jié)構(gòu)的描述,而子模式一般都是模式的一個真子集,因此若因需要而對模式所描述的數(shù)據(jù)邏輯結(jié)構(gòu)進行部分修改或擴充時,如增加新的數(shù)據(jù)項或者增加新的記錄類型等,只要不影響子模式從模式中的原有的映射關系,那么用戶依據(jù)子模式所開發(fā)的應用程序,則就不受模式變動的任何影響。所以提供模式與子模式這兩層數(shù)據(jù)邏輯結(jié)構(gòu)的描述,就可以較好地保證數(shù)據(jù)的邏輯獨立性。
〈3〉數(shù)據(jù)能夠被較好地共享。由于同一模式可以產(chǎn)生許多不同的子模式,這些子模式所描述的數(shù)據(jù)可以來源于模式所描述的全局數(shù)據(jù)邏輯結(jié)構(gòu)中各種數(shù)據(jù)項或記錄類型,因此這樣做,這樣就可以很方便地實現(xiàn)數(shù)據(jù)的共享,也就大大減少了數(shù)據(jù)可能存在的冗余,從而有利于保證數(shù)據(jù)的一致性、完整性和正確性。
〈4〉有利于保證數(shù)據(jù)的安全和保密。由于用戶是通過其相應的應用程序?qū)?shù)據(jù)庫中數(shù)據(jù)進行操作,因此他只能操作其子模式所描述范圍內(nèi)的數(shù)據(jù),而無法接觸到其它用戶及其子模式所描述的數(shù)據(jù),由此就可以保證數(shù)據(jù)庫中的數(shù)據(jù)具有較好的安全性。
【3】物理層數(shù)據(jù)模式,又稱為內(nèi)模式或物理模式。它是對數(shù)據(jù)庫中所有數(shù)據(jù)在物理設備上實際存儲的組織結(jié)構(gòu)的描述。數(shù)據(jù)庫數(shù)據(jù)根據(jù)這一層數(shù)據(jù)模式的描述,被存放到若干按各種組織方式建立起來的物理文件中,對這些物理文件的所有存取訪問的控制都是由數(shù)據(jù)庫管理系統(tǒng)統(tǒng)一控制的。管理系統(tǒng)負責完成從概念層數(shù)據(jù)模式到物理層數(shù)據(jù)模式之間的數(shù)據(jù)映射,這樣由于所有的數(shù)據(jù)庫應用程序或服務所涉及到數(shù)據(jù)又都是根據(jù)模式的數(shù)據(jù)描述得到的,因此當數(shù)據(jù)庫數(shù)據(jù)的物理組織結(jié)構(gòu)發(fā)生變化時,概念層數(shù)據(jù)模式描述通常無需修改,同樣也就保證了與模式相關聯(lián)的子模式和用戶應用程序也無需修改,從而使得數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)也具有的物理獨立性。


圖1.3 數(shù)據(jù)庫結(jié)構(gòu)各模式間關系

由于一個數(shù)據(jù)庫是采用上述的三個層結(jié)構(gòu)方式對其中的數(shù)據(jù)組織進行描述的,從而較好地保證了數(shù)據(jù)的邏輯獨立性和物理獨立性,方便了用戶對數(shù)據(jù)庫中數(shù)據(jù)的操作使用,減少了數(shù)據(jù)冗余。這三層模式之間的相互關系如圖1.3所示。由于數(shù)據(jù)庫中數(shù)據(jù),實際上是按照物理層數(shù)據(jù)模式進行存儲的,而概念層數(shù)據(jù)模式和用戶層數(shù)據(jù)模式都只是對物理層數(shù)據(jù)模式描述的數(shù)據(jù)的一種逐級(層)地邏輯抽象,用戶在對數(shù)據(jù)庫進行操作時,都必須通過數(shù)據(jù)庫管理系統(tǒng),來完成從用戶層數(shù)據(jù)模式到概念層數(shù)據(jù)模式之間、概念層數(shù)據(jù)模式到物理層數(shù)據(jù)模式之間這兩種映射,當然這兩種映射是由管理系統(tǒng)自動完成的,對用戶是透明的。
目前實際應用的中高檔數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)組織結(jié)構(gòu)基本上是按照上述三層模式標準,來描述數(shù)據(jù)組織的。也有一些中低檔數(shù)據(jù)庫系統(tǒng),為了方便一般用戶的操作使用,對上述三層模式標準進行了一些簡化,它們往往采用一層或二層模式來描述數(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),在它的控制和幫助下,用戶可以建立、使用、修改和維護數(shù)據(jù)庫中數(shù)據(jù)。數(shù)據(jù)庫管理系統(tǒng)是建立在操作系統(tǒng)之上的應用軟件平臺。它一般具有以下三個主要功能:
(1)提供操作數(shù)據(jù)庫的用戶高級接口。具體講就是(A)提供數(shù)據(jù)描述語言,供用戶對整個數(shù)據(jù)庫中的數(shù)據(jù)進行各種邏輯和物理組織結(jié)構(gòu)描述,而這些組織結(jié)構(gòu)的具體實現(xiàn)細節(jié),則由DBMS完成,用戶不必關心。(B)提供數(shù)據(jù)操縱語言,供用戶對數(shù)據(jù)庫中數(shù)據(jù)按照其定義邏輯組織結(jié)構(gòu)進行各種操作,如插入、刪除、修改和查詢等,這些操作的的具體實現(xiàn)細節(jié),則也由DBMS完成,用戶不必關心。(C)同時還可能提供其它工具,如用戶界面生成工具、報表生成工具等,幫助用戶更加容易地對數(shù)據(jù)庫的操縱進行編程。
(2)管理數(shù)據(jù)庫。它主要包括以下功能:(A)控制整個數(shù)據(jù)庫系統(tǒng)的運行;(B)控制用戶對數(shù)據(jù)庫的并發(fā)性操作;(C)執(zhí)行對數(shù)據(jù)庫中數(shù)據(jù)的安全、保密、有效性和完整性檢驗;(D)實施對數(shù)據(jù)庫中數(shù)據(jù)的檢索、插入、刪除、修改等操作。(E)維護數(shù)據(jù)庫數(shù)據(jù)組織結(jié)構(gòu)的完整和一致。
(3)維護數(shù)據(jù)庫,主要包括:(A)初始化時數(shù)據(jù)庫數(shù)據(jù)的裝入;(B)運行時記錄下與用戶、操作、系統(tǒng)狀態(tài)和結(jié)果等信息的工作日志;(C)監(jiān)視數(shù)據(jù)庫性能;在性能變壞時,重新組織數(shù)據(jù)庫;(D)在數(shù)據(jù)庫系統(tǒng)的硬件或軟件發(fā)生故障后,對數(shù)據(jù)庫中受破壞的數(shù)據(jù)進行恢復。
這一小節(jié),將略為詳盡地介紹與數(shù)據(jù)庫管理軟件有關的一些基本情況。
(一)數(shù)據(jù)庫系統(tǒng)語言
數(shù)據(jù)庫系統(tǒng)語言是用戶與數(shù)據(jù)庫系統(tǒng)進行交互操作的主要工具,是連接用戶與數(shù)據(jù)庫系統(tǒng)的橋梁。數(shù)據(jù)庫語言功能的強弱直接影響到用戶使用數(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ù)所要進行的各種操作。這里我們將概述這兩種語言一些基本功能。
【1】數(shù)據(jù)描述語言
數(shù)據(jù)描述語言是建立和使用數(shù)據(jù)庫的重要工具,它是用于描述數(shù)據(jù)庫各層數(shù)據(jù)模式描述的語言。數(shù)據(jù)庫管理系統(tǒng)將對用戶用該語言所描述的各層數(shù)據(jù)模式,進行編譯,產(chǎn)生可供數(shù)據(jù)庫系統(tǒng)操作時所使用的目標模式。對應著數(shù)據(jù)庫的模式、子模式和內(nèi)模式,數(shù)據(jù)描述語言又可分為模式描述語言、子模式描述語言和內(nèi)模式描述語言。它們各自的功能如下:
(1)模式描述語言,它是用來描述數(shù)據(jù)庫概念層數(shù)據(jù)模式的,即用于描述數(shù)據(jù)庫中所有數(shù)據(jù)以及它們間相互關系的特性。用模式描述語言寫出的數(shù)據(jù)庫全體數(shù)據(jù)的邏輯組織結(jié)構(gòu)的全部語句的集合,通常就被稱為一個模式,一個模式的主要內(nèi)容有:
① 給數(shù)據(jù)庫總體數(shù)據(jù)的邏輯組織結(jié)構(gòu),即模式取名
② 描述模式中每個記錄類型名稱,以及其中各數(shù)據(jù)項的名稱、數(shù)據(jù)類型(如字符型、數(shù)字型等)和數(shù)據(jù)長度等。
③ 描述模式中各記錄類型之間的相互聯(lián)系,如果存在有相互聯(lián)系的話。
一個模式僅僅是對數(shù)據(jù)庫概念層邏輯數(shù)據(jù)組織結(jié)構(gòu)的一個描述,并非是概念層邏輯數(shù)據(jù)本身。與其它程序語言一樣,模式描述語言也有自己的一套清晰而又嚴格的語句和語法規(guī)則。對應不同類型的數(shù)據(jù)庫系統(tǒng),如層次數(shù)據(jù)庫系統(tǒng)和網(wǎng)狀數(shù)據(jù)庫系統(tǒng),它們的模式描述語言也有很大差別,即使是同一類型數(shù)據(jù)庫系統(tǒng),如關系數(shù)據(jù)庫系統(tǒng),不同軟件商推出的系統(tǒng),其模式描述語言也不盡相同。但有一點是一致的,這就是它們都必須是可對上面所說明的,描述一個模式所需要包括的三個基本方面進行定義說明。
(2)子模式描述語言,它是用來描述數(shù)據(jù)庫用戶層數(shù)據(jù)模式的,即用于描述用戶所使用的數(shù)據(jù)的邏輯數(shù)據(jù)組織結(jié)構(gòu)的定義。用子模式描述語言寫出的用戶局部數(shù)據(jù)邏輯組織結(jié)構(gòu)的全部語句的集合,通常就被稱為一個子模式,一個子模式的主要內(nèi)容有:
① 給用戶使用數(shù)據(jù)庫所涉及到局部數(shù)據(jù)的邏輯組織結(jié)構(gòu),即子模式取名
② 描述子模式中所包含的每個記錄類型及其中的各數(shù)據(jù)項,這些記錄類型的名稱以及各數(shù)據(jù)項的名稱和長度,可以與模式中的定義有所不同,但這里主要是描述子模式中的記錄類型及其數(shù)據(jù)項與模式中記錄類型及其數(shù)據(jù)項之間的對應映射關系,子模式中所描述的記錄及其中的數(shù)據(jù)項必須是已在模式中定義過的。
③ 描述子模式中各記錄類型之間的相互聯(lián)系。這里同樣是描述子模式中的記錄間相互聯(lián)系與模式中記錄間相互聯(lián)系之間的對應映射關系。子模式中所描述的記錄間相互聯(lián)系必須是已在模式中定義過的。
與模式描述語言不同,子模式描述語言有時與編寫應用程序所采用的其它程序設計語言相關,因此根據(jù)子模式描述語言所適用的編寫應用程序語言,子模式描述語言也可分為COBOL子模式描述語言、FORTRAN子模式描述語言和C子模式描述語言等。
(3)內(nèi)模式描述語言,它是用來描述數(shù)據(jù)庫中數(shù)據(jù)在物理存貯介質(zhì)上的組織結(jié)構(gòu)和存放方式等,它與數(shù)據(jù)庫系統(tǒng)所運行的硬件環(huán)境特性相關。例如,系統(tǒng)建立了哪些物理文件?文件的存貯設備是什么?文件是以什么樣的組織方式等等,這些都是由內(nèi)模式描述語言來負責描述的。
上述內(nèi)容僅僅是關于數(shù)據(jù)描述語言中一些最基本的部分。通常各軟件商生產(chǎn)出的數(shù)據(jù)庫系統(tǒng),往往都要根據(jù)自己的具體實現(xiàn)情況,提供出相應的一整套數(shù)據(jù)描述語言的規(guī)范,其中也有一些數(shù)據(jù)庫系統(tǒng),對上述的數(shù)據(jù)描述語言的標準進行了一些簡化,只給出一種或二種描述語言定義,或干脆將數(shù)據(jù)描述語言與數(shù)據(jù)操作語言歸并到了一起,以方便用戶使用。如FoxPro數(shù)據(jù)庫系統(tǒng),以及目前比較流行的基于SQL的多種數(shù)據(jù)庫系統(tǒng)。
【2】數(shù)據(jù)操作語言
數(shù)據(jù)操縱語言是用戶操縱數(shù)據(jù)庫中數(shù)據(jù)的工具,用戶借助它來實現(xiàn)從數(shù)據(jù)庫中檢索數(shù)據(jù)、向數(shù)據(jù)庫中添加數(shù)據(jù)、刪除數(shù)據(jù)庫中沒有保留價值的數(shù)據(jù)或修改某些發(fā)生變化的數(shù)據(jù)等操作。
數(shù)據(jù)操縱語言通常分為兩種類型,即宿主式數(shù)據(jù)操縱語言和自含式數(shù)據(jù)操縱語言。自含式數(shù)據(jù)操縱語言在數(shù)據(jù)庫系統(tǒng)中可獨立使用,是一種完整的語言,這類語言使用簡單方便,很適合于在終端上使用。這類語言的優(yōu)點是系統(tǒng)運行效率較高且使用簡單,缺點是它的應用范圍常常受到限制,例如要提取出數(shù)據(jù)庫中的一些數(shù)據(jù)進行某種復雜運算處理時,單靠數(shù)據(jù)庫系統(tǒng)所提供的這類數(shù)據(jù)操縱語言有時就很難做到這一點。自含式數(shù)據(jù)操縱語言通常包含以下基本操作功能:(A)從數(shù)據(jù)庫中選擇滿足一定要求的記錄或聯(lián)系;(B)增加新的記錄或聯(lián)系到數(shù)據(jù)庫中;(C)修改數(shù)據(jù)庫中的記錄或聯(lián)系;(D)刪除數(shù)據(jù)庫中的記錄或聯(lián)系;
另一種是宿主式數(shù)據(jù)操縱語言,它不能單獨使用,必須嵌入到某種程序設計語言(如C,COBOL,F(xiàn)ORTRAN)之中方能進行數(shù)據(jù)庫操作,這種數(shù)據(jù)操縱語言語句僅負責對數(shù)據(jù)庫中數(shù)據(jù)的操作,其它復雜的數(shù)據(jù)處理工作均有主語言完成,有時這樣做會使得用戶的應用程序變得相當復雜。由于這樣的程序既包含了主語言語句,也包含了數(shù)據(jù)操縱語言語句,也就使得主語言原來的編譯程序便不能完全編譯應用程序了,解決這一問題有兩種辦法:(A)重新設計和實現(xiàn)一個編譯程序,使之能編譯包括數(shù)據(jù)操縱語言和主語言的所有語句,這種辦法不大現(xiàn)實經(jīng)濟;(B)不修改主語言編譯程序,而是設計一個預編程序來對應用程序中的數(shù)據(jù)操縱語言進行預編譯,將其首先轉(zhuǎn)換成用主語言寫的程序,然后再用主語言的編譯程序來編譯,以產(chǎn)生最后的目標程序。這樣做辦法比較可行,目前已為許多數(shù)據(jù)庫系統(tǒng)所采用。
實際上許多數(shù)據(jù)庫系統(tǒng)除了提供上述兩種數(shù)據(jù)操作語言之外,還提供了許多編程工具和或編程命令,以便幫助用戶更加容易地編制數(shù)據(jù)庫的應用程序,如用戶界面生成工具、報表生成工具和數(shù)據(jù)庫API接口等。

(二)數(shù)據(jù)庫系統(tǒng)運行管理與控制軟件
數(shù)據(jù)庫系統(tǒng)運行管理與控制軟件是數(shù)據(jù)庫管理系統(tǒng)軟件的實際組成,它主要包括語言編譯處理程序、系統(tǒng)運行控制程序和數(shù)據(jù)庫日常管理程序以及數(shù)據(jù)庫工具等多種軟件。下面將概述這幾種軟件一些基本功能
(1)語言編譯處理程序。它主要包括:(A)數(shù)據(jù)庫系統(tǒng)中各種數(shù)據(jù)描述語言的編譯處理程序,它們的作用是將各種采用模式描述語言所定義數(shù)據(jù)模式編譯成DBMS所使用的內(nèi)部定義目標模式。(B)數(shù)據(jù)庫系統(tǒng)各種數(shù)據(jù)操縱語言的處理程序,它們可將應用程序中采用數(shù)據(jù)操縱語言所寫的數(shù)據(jù)操作語句轉(zhuǎn)換成其宿主語言編譯程序所能處理的語句。(C)終端操作命令解釋程序,它主要用于解釋終端操作命令的意義,完成相應數(shù)據(jù)庫系統(tǒng)命令的執(zhí)行過程。(D)數(shù)據(jù)庫控制命令解釋程序,它負責解釋執(zhí)行每一條數(shù)據(jù)庫控制命令。
(2)系統(tǒng)運行控制程序。它主要包括:(A)數(shù)據(jù)庫系統(tǒng)的總控程序,它用于檢查訪問的合法性,以決定一個訪問是否能使用數(shù)據(jù)庫。(B)并發(fā)控制程序。協(xié)調(diào)多個應用程序?qū)?shù)據(jù)庫的操作,保證數(shù)據(jù)庫中數(shù)據(jù)的一致性。(C)保密控制程序。實現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)的安全保密控制。(D)數(shù)據(jù)完整性控制程序。核對數(shù)據(jù)庫完整性約束條件,以決定對數(shù)據(jù)庫的操作是否有效。(E)數(shù)據(jù)庫存取訪問程序。實施對數(shù)據(jù)庫中數(shù)據(jù)的操作,如執(zhí)行檢索、插入、修改、刪除等操作。(F)通訊控制程序。實現(xiàn)用戶程序與DBMS之間的通訊。
(3)數(shù)據(jù)庫日常管理程序。這主要包括:(A)數(shù)據(jù)裝入程序。實現(xiàn)將初始數(shù)據(jù)裝入數(shù)據(jù)庫。(B)系統(tǒng)恢復程序。當軟硬件出現(xiàn)故障時,利用恢復程序?qū)?shù)據(jù)庫恢復到正確狀態(tài)。(C)工作日志程序。負責記載進入數(shù)據(jù)庫的所有訪問,其內(nèi)容包括用戶名稱、進入系統(tǒng)時間、進行何種操作、數(shù)據(jù)變更情況等等。使每個用戶每次訪問都留下蹤跡。(D)性能監(jiān)測程序。監(jiān)測操作執(zhí)行時間與存貯空間占用情況,為數(shù)據(jù)庫的再組織提供依據(jù)。(E)重新組織程序。當數(shù)據(jù)庫系統(tǒng)性能變壞時,對數(shù)據(jù)庫重新進行物理組織。(F)轉(zhuǎn)貯、編輯、打印程序、用于轉(zhuǎn)貯數(shù)據(jù)庫的部分和全部數(shù)據(jù),或者編輯打印數(shù)據(jù)等。
(4)數(shù)據(jù)庫工具軟件。它主要是為了方便建立數(shù)據(jù)庫系統(tǒng)的具體應用,而提供各種工具軟件。其中有數(shù)據(jù)庫系統(tǒng)應用程序界面制作工具,報表制作工具等許多軟件工具。
最后我們簡單介紹一下建立數(shù)據(jù)庫應用系統(tǒng)的基本知識。數(shù)據(jù)庫應用系統(tǒng)的設計方法我們將在第五章詳細介紹。與其它應用軟件開發(fā)與應用過程一樣,數(shù)據(jù)庫系統(tǒng)的應用,也有一個生命周期,它主要由以下五個階段構(gòu)成:
(1)數(shù)據(jù)庫系統(tǒng)的規(guī)劃。它包括系統(tǒng)的應用范圍和功能的確認、應用環(huán)境的分析、DBMS及其支撐環(huán)境的選擇、硬件配置,人員的配備和培訓,投資估算和效益分析等活動。
(2)數(shù)據(jù)庫系統(tǒng)的設計。它包括了解應用系統(tǒng)的信息和處理需求,設計滿足其要求的整體數(shù)據(jù)模型及處理流程,并結(jié)合具體所采用的數(shù)據(jù)庫系統(tǒng)、硬件環(huán)境和系統(tǒng)軟件平臺的特點,設計出符合具體數(shù)據(jù)庫系統(tǒng)應用要求的數(shù)據(jù)模型,及其應用軟件的流程圖。選擇合適的商用數(shù)據(jù)庫系統(tǒng),來設計、建立、管理和維護數(shù)據(jù)庫系統(tǒng),使之能夠為用戶提供最佳服務。
(3)數(shù)據(jù)庫系統(tǒng)的建立。首先根據(jù)數(shù)據(jù)庫系統(tǒng)的設計結(jié)果,定義數(shù)據(jù)模式,規(guī)定訪問權(quán)限,設置完整性約束。然后準備數(shù)據(jù),對其進行正確性校驗后,將其錄入,與此同時,完成主要應用程序的編制工作。
(4)數(shù)據(jù)庫系統(tǒng)的管理。它包括應用軟件的編制與修改、數(shù)據(jù)庫的重新組織、數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的備份與恢復等工作。保證數(shù)據(jù)庫系統(tǒng)的完好,為用戶提供可靠的服務。
(5)數(shù)據(jù)庫系統(tǒng)的調(diào)整。由于應用數(shù)據(jù)庫系統(tǒng)的用戶所在的硬環(huán)境,如單位組織調(diào)整、人員變化等,軟環(huán)境,如人員素質(zhì)、應用要求等,發(fā)生變化,在數(shù)據(jù)庫系統(tǒng)運行一段時間后,往往都需要進行擴充與重構(gòu),即需要對數(shù)據(jù)庫系統(tǒng)的各種數(shù)據(jù)模式的定義和處理流程進行適當?shù)男薷暮脱a充,使之適應新的形勢。
一般與一個數(shù)據(jù)庫系統(tǒng)的應用系統(tǒng)有關的人員,有以下四類,他們是:(A)系統(tǒng)管理員,他的任務主要是定義數(shù)據(jù)庫系統(tǒng)的物理存儲模式,分配并管理各用戶操作的權(quán)限,管理日常數(shù)據(jù)庫系統(tǒng)的運行工作,以及維護數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù),保證其完整和安全、(B)系統(tǒng)分析員,他們的任務主要是,從整體上分析數(shù)據(jù)庫系統(tǒng)應用所涉及的客觀信息結(jié)構(gòu)和內(nèi)容,定義相應的數(shù)據(jù)庫系統(tǒng)的全局數(shù)據(jù)模式;(C)應用程序員,他們的任務主要是分析具體用戶的信息處理需要,定義數(shù)據(jù)庫系統(tǒng)的子模式,編寫具體數(shù)據(jù)庫應用程序;(D)用戶,他們具體的數(shù)據(jù)庫應用程序和數(shù)據(jù)庫的最終使用者。

(三)數(shù)據(jù)庫系統(tǒng)訪問示例
這里,我們介紹一下普通用戶讀取數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)時,數(shù)據(jù)庫的工作過程(如圖1.4所示),以便使讀者可以從中了解DBMS是如何來進行數(shù)據(jù)庫系統(tǒng)的管理工作的。用戶訪問數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的過程實際上就是用戶與DBMS進行交互的過程。其具體步驟如下:
(1)用戶通過應用程序指明它使用的子模式名稱,發(fā)出數(shù)據(jù)操作命令,DBMS通過處理用戶的應用程序,接收該操作命令。
(2)DBMS按照應用程序中的子模式名稱,調(diào)出相應的子模式,核對該用戶的訪問權(quán)利、操作合法性等,若檢查通過則繼續(xù)執(zhí)行,否則拒絕執(zhí)行并報告出錯信息。
(3)DBMS按模式確定子模式中操作所涉及的記錄類型,并通過模式到存儲模式的映射,找出這些記錄類型的相應存貯模式。
(4)DBMS查閱存貯模式,確定應從哪個物理文件、存貯設備以及調(diào)用哪個訪問程序去讀取所需的記錄。
(5)DBMS的訪問程序找到有關的物理數(shù)據(jù)地址,向操作系統(tǒng)發(fā)出讀操作命令。
(6)操作系統(tǒng)收到DBMS發(fā)來的命令后,啟動系統(tǒng)的輸入/輸出程序完成讀操作,把要讀取的數(shù)據(jù)塊送到內(nèi)存中的系統(tǒng)緩沖區(qū)。
(7)DBMS收到操作系統(tǒng)關于輸入/輸出操作結(jié)束回答后,按模式、子模式的定義,將已讀入到系統(tǒng)緩沖區(qū)的內(nèi)容映射為用戶程序所要的邏輯記錄,并送到用戶的工作區(qū)中。
(8)DBMS向應用程序發(fā)送反映操作執(zhí)行結(jié)果的狀態(tài)信息(由狀態(tài)字描述),如“執(zhí)行成功”、“數(shù)據(jù)未找到”等。
(9)記載DBMS系統(tǒng)的工作日志。
(10)應用程序檢查狀態(tài)信息,如執(zhí)行成功,則可對程序工作區(qū)中的數(shù)據(jù)作正常處理,否則按出錯類型決定程序的后續(xù)處理。
用戶修改一個記錄的操作步驟也是類似的。首先讀出所需記錄,在程序工作區(qū)中修改好,而后再把修改好的記錄寫回數(shù)據(jù)庫中原記錄的位置上。


圖1.4 數(shù)據(jù)庫的工作過程


1.3 實體聯(lián)系模型

本節(jié)主要介紹有關實體聯(lián)系模型的概念和基本知識,使讀者了解并掌握基本的實體聯(lián)系模型的使用方法。

1.3.1 模型的組成
我們都知道數(shù)據(jù)是表達信息的一種重要的量化符號,是信息存在的一種重要形式。而所謂數(shù)據(jù)模型則是數(shù)據(jù)特征的一種抽象。它不是描述個別的數(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ù)的動態(tài)特性,這主要包括對數(shù)據(jù)操作的方法。在數(shù)據(jù)庫應用系統(tǒng)中,建立反映客觀信息范疇的數(shù)據(jù)模型是數(shù)據(jù)庫應用系統(tǒng)設計中最為重要的,也最基本的步驟之一,它是連接客觀信息世界和數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)邏輯組織的橋梁。也是計算機專業(yè)人員與非計算機專業(yè)的用戶之間進行交流的共同基礎。這里我們將要介紹的數(shù)據(jù)模型就是實體聯(lián)系數(shù)據(jù)模型(又稱E-R數(shù)據(jù)模型),它與傳統(tǒng)的數(shù)據(jù)模型有所不同。E-R數(shù)據(jù)模型是面向現(xiàn)實世界,而不是面向?qū)崿F(xiàn)方法的,它主要是用于描述現(xiàn)實信息世界中數(shù)據(jù)的靜態(tài)特性。而不涉及數(shù)據(jù)的處理過程。但由于它簡單易學,因而在數(shù)據(jù)庫系統(tǒng)應用的設計中,得到了廣泛應用。
E-R數(shù)據(jù)模型是P.P.Chen在1976年提出的,它為數(shù)據(jù)庫系統(tǒng)應用的設計人員提供了三個基本的模型描述成分,它們是實體、聯(lián)系和屬性。E-R數(shù)據(jù)模型就是利用這三個成分來描述反映一個客觀信息世界內(nèi)容的數(shù)據(jù)模型。在數(shù)據(jù)庫應用系統(tǒng)設計中,通常還需要將這一數(shù)據(jù)模型轉(zhuǎn)換為各數(shù)據(jù)庫管理系統(tǒng)所支持的具體數(shù)據(jù)模型,即層次數(shù)據(jù)模型、網(wǎng)狀數(shù)據(jù)模型和關系數(shù)據(jù)模型等。由此我們也可以看出E-R數(shù)據(jù)模型是從現(xiàn)實信息世界到數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)邏輯組織結(jié)構(gòu)設計之間的一個中間階段,只所以是這樣,主要是因為如果直接將現(xiàn)實世界的信息,構(gòu)造成某個DBMS所能接受的數(shù)據(jù)邏輯組織結(jié)構(gòu),其工作往往是十分復雜而且難度也很大,應用設計人員不僅要考慮現(xiàn)實世界各種信息及其內(nèi)在的聯(lián)系,以及各種具體應用對數(shù)據(jù)處理的要求,而且還要考慮采用某種特定的數(shù)據(jù)庫系統(tǒng)后,所面臨的各種條件限制,這樣就大大增加了應用系統(tǒng)設計的復雜性。
下面我們就介紹一下E-R數(shù)據(jù)模型中的三個基本要素,即實體、聯(lián)系和屬性的有關基本知識。
【1】實體
數(shù)據(jù)是用來描述現(xiàn)實世界中各種事物的。而要描述的對象是形形色色的,有具體的,也有抽象的;有物理上存在的,也有是概念性的;如張三、汽車、運動、興趣、神靈等。這些對象的共同特征是可以相互有區(qū)別,否則就會被認為是同一種對象。凡是可以相互區(qū)別開并可以被我們所識別的事、物、概念等對象均可認為是實體。它是具有共同某些特征的一類具體實體,即可認為是一實體集合,對這一集合中所有實體共同特征的描述,稱為實體型。實體集中的各具體實體,稱為該實體型的值或?qū)嶓w值。對于同一實體集中的不同實體其特征值不完全相同,并由此可加以區(qū)分。如學生實體集,其實體型可以通過學號、姓名、年齡等特征加以描述。學生實體集中的不同的學生實體,通過其不同的學號又可加以區(qū)分。例如學號為881001姓名為李平的學生是一個具體實體,顯然不同于學號為881002姓名為王明的學生這個具體實體。
【2】聯(lián)系
在現(xiàn)實世界中,任何事物都不是孤立存在的。實體之間存在著各種相互聯(lián)系,例如教師與學生之間至少存在一種聯(lián)系,即“教學”聯(lián)系,商店與商品之間存在一種‘供應’聯(lián)系,這些都是不同類型的實體之間存在的聯(lián)系。還有一種聯(lián)系是存在于同一類型實體之間的,例如學生實體型里,某一學生是班長,顯然他和其他學生間也存在著一種“領導”聯(lián)系。在E-R數(shù)據(jù)模型中,通常將不同實體型之間存在的聯(lián)系歸納成三種不同類型,它們是:(1)一對一的聯(lián)系。其定義是:對于實體型A中的一個實體,在實體型B中至多有一個實體與之對應,反之對于實體型B中的一個實體,在實體型A中至多有一個實體與之對應。這樣的聯(lián)系被稱為是一對一的聯(lián)系。例如兩個實體型分別為國家和總統(tǒng),顯然,一個國家只有一個總統(tǒng),而一個總統(tǒng)只能對應于一個國家;又如系和系主任兩個實體型,一個系只能有一名系主任,而一個系主任只能領導一個系。這些顯然都是兩種實體型之間一對一聯(lián)系的情況。通常又將這種聯(lián)系記為1:1的聯(lián)系。(2)一對多的聯(lián)系。其定義是:對于實體型A中的一個實體,實體型B中可以有若干個實體與之對應;反之,對于實體B中的一個實體,則實體型A中只能有一個實體與之對應。這樣的聯(lián)系被稱為是一對多的聯(lián)系,例如兩個實體型分別為系和教師,一個系可以有若干教師,一個教師只能對應一個系,顯然這是兩種實體型之間一對多的聯(lián)系。通常將這種聯(lián)系記為1:N的聯(lián)系。1:1的聯(lián)系有時可看成是1:N的聯(lián)系的一種特殊情況。(3)多對多的聯(lián)系。其定義是:對于實體型A中的一個實體,實體型B中可以有若干個實體于之對應;反之,對于實體型B中的一個實體,則實體型A中也有若干個實體與之對應,這樣的聯(lián)系被稱為是多對多的聯(lián)系。例如兩個實體型分別為教師和課程,一個教師可以教若干門課,一門課又可以有若干個教師講。通常將這種聯(lián)系記為M:N的聯(lián)系。以上介紹的三種類型的聯(lián)系不僅可以用于描述二個不同類型的實體,還可以用于描述多個不同類型的實體。如在現(xiàn)實世界中,存在著許多多個實體型相互之間都有聯(lián)系的情況。如教師、課程、學生三個實體型之間就存在一種聯(lián)系,一個教師可以教若干門課,一門課又可以有若干個教師教授;一個教師可以教若干學生,一學生又可以有若干個教師教;一門課可以有若干學生選,一學生又可以選若干門課。有時為了方便我們也可以將這三個實體型之間聯(lián)系,分解成每兩個實體型之間均存在一個多對多的聯(lián)系。
最后我們再介紹一種較為特殊的聯(lián)系,這就是同一實體型中的不同的具體實體之間也可以存在有某聯(lián)系,如職工實體型,在這一實體型中的實體有普遍職工,也有經(jīng)理,經(jīng)理與職工之間有一種領導與被領導的關系。在E-R數(shù)據(jù)模型中,通常我們將這種特殊的聯(lián)系,稱為ISA聯(lián)系。
【3】屬性
實體型是對實體集合中所有實體共同描述特征的集合,這些實體所共有的描述特征就稱為實體的屬性。如學生實體型,其共有的描述特征通常有學號、姓名、年齡、性別等,它們都是學生實體型的屬性。這些屬性的一組值就表示了一個具體的實體。在一個具體的實體型中,其中的每一個屬性都有其取值范圍,這一范圍稱為屬性的值域。一個屬性的值域可以是整數(shù)、浮點數(shù)、字符串等。如學生實體型中的年齡屬性的值域就是一定區(qū)間中的整數(shù),而姓名屬性的值域就是符合一定要求的字符串等。實體型中的某個(些)屬性的取值可以用來唯一區(qū)分實體型中具體實體,如學生實體型中的學號屬性的取值就可以用來區(qū)分每一個學生。這種屬性又可稱為該實體型的標識碼。
不僅實體型有屬性,聯(lián)系也可以有屬性,如學生和課程這兩個實體型,“選課”是它們之間的一種聯(lián)系,學生選修某門課程取得了某個成績,顯然成績描述是的一個屬性,但它既不是學生實體型中的一個屬性,也不是課程實體型中的一個屬性。而成績屬性的具體取值,既依賴于某個具體的學生,又依賴于某個具體的課程,所以我們將成績屬性定義為是學生和課程這兩個實體型之間選課聯(lián)系的屬性。又如機器和零件這兩個實體型,“構(gòu)造”是它們之間的一種聯(lián)系,數(shù)量這一屬性,即需要多少數(shù)量的零件構(gòu)造某一個機器,則是構(gòu)造這一聯(lián)系的屬性。
充分認識和理解聯(lián)系可以有屬性這一概念,對于正確地建立或理解E—R數(shù)據(jù)模型,以及建立或理解數(shù)據(jù)庫的數(shù)據(jù)邏輯組織結(jié)構(gòu)都具有十分重要的意義。
實體、屬性和聯(lián)系三個基本要素的概念是有明確區(qū)分的,但是對于某個具體數(shù)據(jù)對象,究竟它應該被認為是實體,還是屬性或聯(lián)系,常常需要根據(jù)具體應用背景和用戶的觀點,方可確定。

1.3.2 模型的表示
前面,我們介紹E-R數(shù)據(jù)模型中的三個基本的要素,這里我們將介紹使用并描述E-R數(shù)據(jù)模型。使用E-R數(shù)據(jù)模型來分析描述現(xiàn)實信息世界中的各種信息對象的主要分析步驟如下:(1)首先根據(jù)數(shù)據(jù)庫系統(tǒng)應用的整體要求,確定所涉及的現(xiàn)實信息世界中的所有信息對象的范圍。(2)根據(jù)第一步驟的結(jié)論,確定能夠描述所要求所有信息對象的各實體及屬性。(3)根據(jù)(1)、(2)二個步驟的結(jié)論,確定能夠描述所要求所有信息對象的各實體間的聯(lián)系。(4)根據(jù)(3)步驟的結(jié)論,確定能夠描述所要求所有信息對象的各實體間的聯(lián)系的屬性。在完成了上述的分析步驟,就可以獲得能夠描述現(xiàn)實信息世界的E-R數(shù)據(jù)模型。
為了能夠形象地描述出E-R數(shù)據(jù)模型,這里我們介紹一種E-R數(shù)據(jù)模型的表示方法,即用長方型來表示實體類型,聯(lián)系用菱型框及與實體型相連的線表示,將聯(lián)系的類型寫在線上或線的附近,在長方形框內(nèi)和菱形框內(nèi)分別寫上實體型名稱和聯(lián)系名稱,用橢圓表示實體類型和聯(lián)系的屬性,將其與所描述的相應的實體類型或聯(lián)系用線相連,在橢圓框內(nèi)寫上屬性的名稱。這樣我們就可以得到一個能夠較好地描繪出實體、實體與實體之間相互聯(lián)系以及有關實體和聯(lián)系屬性的結(jié)構(gòu)圖,這個圖通常就被稱為E-R圖。獲得E-R圖的全部過程通常就被稱為E-R圖方法。
最后為了說明上面我們所介紹的有關E-R圖的建立和表示方法,這里我們介紹一個制造工廠數(shù)據(jù)庫應用系統(tǒng)中所涉及的部分信息對象所構(gòu)成的E-R圖。如圖1.5所示。


圖1.5 制造工廠信息的E-R圖

在圖1.5中,我們共描述了五個實體類型,它們分別是部門、職工、工程、供應商和零件實體型,這些實體型用長方形加以表示。并描述了這五個實體型間的相互聯(lián)系,這些聯(lián)系分別是部門與職工實體型間一對多的“所屬”聯(lián)系;職工與工程型實體間多對多的“工作”和一對一“管理”兩種聯(lián)系;工程與零件實體型間多對多的“所需”聯(lián)系;工程、供應商和零件三個實體型間相互多對多的“供應”聯(lián)系。這些聯(lián)系用菱形加以表示。最后作為示意,我們分別給出了零件實體型的三個屬性描述和職工與工程型實體間“工作”聯(lián)系的屬性描述,這些屬性用橢圓加以表示。
目前實體關系數(shù)據(jù)模型及其E-R圖方法已被廣泛地應用于數(shù)據(jù)庫應用系統(tǒng)的概念設計。由于E-R圖直觀易懂,通過它,計算機專業(yè)人員與非計算機專業(yè)人員可以進行直接地交流和合作,同時使用E-R圖,可以很方便、真實和合理地描述出一個具體數(shù)據(jù)庫應用系統(tǒng)的信息結(jié)構(gòu),并以此作為進一步設計數(shù)據(jù)庫應用系統(tǒng)的基礎。因此目前實體關系數(shù)據(jù)模型及其E-R圖方法還是很受歡迎的。


1.4 數(shù)據(jù)模型與數(shù)據(jù)庫系統(tǒng)

本節(jié)主要介紹常用的三種數(shù)據(jù)庫系統(tǒng)所支持的數(shù)據(jù)模型有關基本知識,以及與數(shù)據(jù)模型相對應的數(shù)據(jù)庫的基本情況。

1.4.1 層次數(shù)據(jù)模型
層次數(shù)據(jù)模型是定義在E-R數(shù)據(jù)模型基礎之上一種數(shù)據(jù)模型,它與層次數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)邏輯組織結(jié)構(gòu)是一致的。其具體定義如下:(1)對E-R數(shù)據(jù)模型中的聯(lián)系類型加以限制,只容許是一對多的聯(lián)系(包括一對一聯(lián)系),在此基礎上,用實體、屬性和聯(lián)系這三個基本要素描述客觀信息世界中的信息結(jié)構(gòu)。(2)若將實體抽象表示為一結(jié)點,聯(lián)系抽象表示為一有向線段,忽視屬性,所得到的E-R數(shù)據(jù)模型的抽象拓撲圖,滿足有向樹的定義,即:M=N-1;其中:M為有向線段總數(shù);N為結(jié)點總數(shù)。該拓撲圖有以下特點:(A)有且僅有一個結(jié)點無雙親結(jié)點,此結(jié)點稱為樹的根。(B)除根結(jié)點外,其它結(jié)點有且僅有一個雙親結(jié)點。滿足以上兩條約束的E-R數(shù)據(jù)模型,就可稱為是層次數(shù)據(jù)模型,在層次數(shù)據(jù)模型中,用長方形表示實體型;將長方形分為若干方塊,表示實體型的各屬性;用有向線段表示各實體型之間的聯(lián)系。這描述所得到的圖形稱為層次數(shù)據(jù)模型的結(jié)構(gòu)圖。


圖1.6 學校行政管理機構(gòu)的E-R圖和層次數(shù)據(jù)模型結(jié)構(gòu)圖

在現(xiàn)實世界中,有許多層次結(jié)構(gòu)的例子,如在行政管理部門中,部下設許多局,局下設許多處,處下設許多科等。這里我們給出一學校的行政管理機構(gòu)的E-R圖和層次數(shù)據(jù)模型結(jié)構(gòu)圖,作為示例,如圖1.6所示。
在如圖1.6所示的例子中,其數(shù)據(jù)模型結(jié)構(gòu)圖如圖1.6的右半部所示,顯然它滿足樹的定義,而其中各實體型之間的相互聯(lián)系均為一對多的聯(lián)系,所以說這是個典型的層次數(shù)據(jù)模型結(jié)構(gòu)。

1.4.2 層次數(shù)據(jù)庫系統(tǒng)
層次數(shù)據(jù)庫系統(tǒng)的應用流行于七十年代,目前已較少使用,但它在數(shù)據(jù)庫的發(fā)展過程中,扮演過重要的角色。在這一小節(jié),我們將介紹層次數(shù)據(jù)庫的數(shù)據(jù)描述,數(shù)據(jù)操縱的定義和基本過程。重點介紹層次數(shù)據(jù)模型中的實體、屬性和聯(lián)系在層次數(shù)據(jù)庫中是如何定義和操縱的。這里以IBM公司的IMS層次數(shù)據(jù)庫系統(tǒng)為例,來說明有關的情況。
【1】層次數(shù)據(jù)庫概念層數(shù)據(jù)邏輯組織結(jié)構(gòu)的設計與描述
在將現(xiàn)實世界的信息結(jié)構(gòu)用E-R數(shù)據(jù)模型(E-R圖)描述出來后,再將所獲得的E-R數(shù)據(jù)模型轉(zhuǎn)換成層次數(shù)據(jù)模型,這時就可以進行層次數(shù)據(jù)庫概念層數(shù)據(jù)邏輯組織結(jié)構(gòu)的設計了。在設計概念層數(shù)據(jù)邏輯組織結(jié)構(gòu)時,通常將實體型定義為片斷型,實體型的屬性定義為片斷型的字斷,并通過指定片斷的雙親片斷,定義片斷型之間的聯(lián)系,由此將層次數(shù)據(jù)模型的定義描述轉(zhuǎn)換為層次數(shù)據(jù)庫概念層數(shù)據(jù)邏輯組織結(jié)構(gòu)。并將這一數(shù)據(jù)模型結(jié)構(gòu),稱為是IMS中的物理數(shù)據(jù)庫記錄型。需要說明的是,這里講的物理數(shù)據(jù)庫并不是指存儲在物理設備上的數(shù)據(jù)庫,即與數(shù)據(jù)庫的物理存儲結(jié)構(gòu)無關。


圖1.7 學校行政管理機構(gòu)的邏輯組織結(jié)構(gòu)

我們以一個簡單例子來說明有關情況,如圖1.7所示,這是一學校行政管理機構(gòu)的邏輯組織結(jié)構(gòu),若學校有若干系(DEPT),每個系有若干班級(CLASS),每個班有若干學生(STUDENT),每個系還有若干教師(TEACHER)。其中:數(shù)據(jù)模型中的片斷型有DEPT、CLASS、STUDENT、TEACHER,各片斷型中的字斷分別是DEPT(DNO-系編號,DNA-系名,DMA-系主任),CLASS(CNO-班級編號,CSK-專業(yè)),STUDENT(SNO-學生編號,SNA-姓名,SAG-年齡),TEACHER(TNO-教師編號,TNA-教師姓名,TAG-教師年齡)。整個數(shù)據(jù)結(jié)構(gòu)命名為DTCS。這里TEACHER和CLASS片斷型稱為是DEPT片斷型的下屬片斷,同樣STUDENR稱為是CLASS的下屬片斷。DEPT又可稱為是TEACHER和CLASS的雙親片斷(在這里它又是根片斷),TEACHER和CLASS又可互稱為兄弟片斷。整個數(shù)據(jù)模型結(jié)構(gòu)DTCS稱為是一物理數(shù)據(jù)庫記錄型,其每一個記錄值是由根片斷的一個值及其所有相應的下屬片斷的值所組成。一個物理數(shù)據(jù)庫有多少個根片斷值,則它就有多少個物理數(shù)據(jù)庫記錄。如學校有20個系,它的物理數(shù)據(jù)庫就有20個記錄。每一條記錄包含了某個系及其該系所有教師、班級和學生的全部信息。通常一個IMS數(shù)據(jù)庫是由若干這樣的物理數(shù)據(jù)庫記錄所構(gòu)成。
最后我們給出上述實例的物理數(shù)據(jù)庫的定義描述。該描述主要包括以下內(nèi)容:(1)命名物理數(shù)據(jù)庫,規(guī)定存儲組織方法和存取方法,指定物理設備及塊的大小。(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ù)庫中的所有根片斷值,用指針連接起來或單獨存放,并建立其索引;其它下屬片斷值,按照其層次數(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ù)庫所對應的數(shù)據(jù)集合,指定物理設備及其物理存儲塊的大小。
③SEGM語句:定義片斷名、一個片斷值的長度、片斷值可能的個數(shù)、采用連接指針的類型和雙親片斷名。
④FIELD語句:定義片斷中的各字段,如字段名、字段數(shù)據(jù)類型、字段長度及排序碼。
⑤DBDGEN語句:指示模式編譯器開始產(chǎn)生數(shù)據(jù)庫模式定義。
⑥FINISH語句:指示模式編譯器結(jié)束產(chǎn)生數(shù)據(jù)庫模式定義,檢驗生成結(jié)果。
⑦END語句:指示說明模式描述結(jié)束。
這里需要注意的是片斷描述的順序必須是按照其層次數(shù)據(jù)結(jié)構(gòu)從上而下、從左而右的順序逐個進行。
【2】層次數(shù)據(jù)庫用戶層數(shù)據(jù)邏輯組織結(jié)構(gòu)的設計與描述
在IMS數(shù)據(jù)庫系統(tǒng)中,用戶層數(shù)據(jù)邏輯組織結(jié)構(gòu)所定義的子模式,稱為IMS邏輯數(shù)據(jù)庫,它是從物理數(shù)據(jù)庫中派生出來的,數(shù)據(jù)庫的應用程序只能使用邏輯數(shù)據(jù)庫。邏輯數(shù)據(jù)庫有兩種類型,一種是邏輯數(shù)據(jù)庫僅僅從一個物理數(shù)據(jù)庫中的部分片斷所構(gòu)成的數(shù)據(jù)結(jié)構(gòu);另一種是邏輯數(shù)據(jù)庫從一個以上的物理數(shù)據(jù)庫中的部分片斷所構(gòu)成的數(shù)據(jù)結(jié)構(gòu)。這里我們只介紹第一種情況下的邏輯數(shù)據(jù)庫的定義和描述。設計邏輯數(shù)據(jù)庫時,必須遵守以下兩條規(guī)則:(1)一個邏輯數(shù)據(jù)庫中的根片斷必須是某個物理數(shù)據(jù)庫中的根片斷。(2)一個邏輯子女片斷必須有一個物理雙親片斷和一個邏輯雙親片斷。即任何物理數(shù)據(jù)庫中
數(shù)據(jù)庫系統(tǒng)概論
 

[下載聲明]
1.本站的所有資料均為資料作者提供和網(wǎng)友推薦收集整理而來,僅供學習和研究交流使用。如有侵犯到您版權(quán)的,請來電指出,本站將立即改正。電話:010-82593357。
2、訪問管理資源網(wǎng)的用戶必須明白,本站對提供下載的學習資料等不擁有任何權(quán)利,版權(quán)歸該下載資源的合法擁有者所有。
3、本站保證站內(nèi)提供的所有可下載資源都是按“原樣”提供,本站未做過任何改動;但本網(wǎng)站不保證本站提供的下載資源的準確性、安全性和完整性;同時本網(wǎng)站也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的損失或傷害。
4、未經(jīng)本網(wǎng)站的明確許可,任何人不得大量鏈接本站下載資源;不得復制或仿造本網(wǎng)站。本網(wǎng)站對其自行開發(fā)的或和他人共同開發(fā)的所有內(nèi)容、技術手段和服務擁有全部知識產(chǎn)權(quán),任何人不得侵害或破壞,也不得擅自使用。

 我要上傳資料,請點我!
人才招聘 免責聲明 常見問題 廣告服務 聯(lián)系方式 隱私保護 積分規(guī)則 關于我們 登陸幫助 友情鏈接
COPYRIGT @ 2001-2018 HTTP://m.musicmediasoft.com INC. ALL RIGHTS RESERVED. 管理資源網(wǎng) 版權(quán)所有