層次數(shù)據(jù)庫系統(tǒng)(數(shù)據(jù)庫)
時間:2022-12-13 12:30:01 | 來源:信息時代
時間:2022-12-13 12:30:01 來源:信息時代
層次數(shù)據(jù)庫系統(tǒng) : 用層次數(shù)據(jù)模型來描述數(shù)據(jù)庫的數(shù)據(jù)庫系統(tǒng),被稱為第一代數(shù)據(jù)庫系統(tǒng)。IBM公司在20世紀(jì)60年代末研制的IMS是層次數(shù)據(jù)庫系統(tǒng)的典型代表。
在層次數(shù)據(jù)模型中,人們用記錄型來描述現(xiàn)實世界中的實體型,每個記錄型可包含若干字段,字段描述實體的屬性。如圖1所示,研究生教學(xué)數(shù)據(jù)庫中的DEPARTMENT記錄型描述了實體“系”,它包括系編號(DEPTNO)、系名(DEPTNAME)和系的位置(LOCATION)等三個字段; PROFESSOR記錄型描述了實體“教授”,它包括教授編號、教授名和教授的專業(yè)特長等三個字段: ASSITANT記錄型描述了實體“助教”,它包括助教編號、助教名和助教的專業(yè)特長等三個字段; GRADUATE記錄型描述了 “研究生”實體。
層次關(guān)系是層次數(shù)據(jù)模型中最基本的數(shù)據(jù)關(guān)系,它代表兩個記錄型之間一對多的聯(lián)系,也叫做雙親子女關(guān)系。人們用指針來表示幾個記錄型之間的聯(lián)系。層次數(shù)據(jù)模型中有且僅有一個記錄型無雙親,稱為根結(jié)點,其他記錄型有且僅有一個雙親,且任何子女記錄型都依賴其雙親記錄型的存在而存在,所以層次數(shù)據(jù)模型是樹狀的。例如在圖1中,研究生教學(xué)數(shù)據(jù)庫中的DEPARTMENT是根結(jié)點,它有兩個子女結(jié)點PROFESSOR和ASSITANT;PROFESSOR是DEPATMENT的子女結(jié)點,也是GRADUATE的雙親結(jié)點。
圖1 研究生教學(xué)層次數(shù)據(jù)庫的型
層次數(shù)據(jù)模型的建模規(guī)則如下:
(1)樹的結(jié)點表示實體記錄類型。
(2)雙親結(jié)點和子女結(jié)點必須是不同的實體記錄類型,它們之間是一對一或一對多的聯(lián)系。
由于采用層次模型來組織數(shù)據(jù)及其聯(lián)系,因而在層次數(shù)據(jù)庫系統(tǒng)中能夠很自然地表示兩個記錄型之間的一對多聯(lián)系。如果要表示一個非層次結(jié)構(gòu)的M:N聯(lián)系,則必須將其分解為若干個層次結(jié)構(gòu)。
在數(shù)據(jù)處理中,型和值是兩個不同的概念。上面描述的模型是數(shù)據(jù)的型,型描述的是數(shù)據(jù)庫的框架(又稱為數(shù)據(jù)庫模式),可以往型中裝入許多具體的數(shù)據(jù)內(nèi)容,裝入的具體內(nèi)容即值。如圖2所示,給出了往研究生教學(xué)數(shù)據(jù)庫的層次模型中裝入了一些具體值后的結(jié)果。按層次數(shù)據(jù)庫的框架裝入值后就得到了一個具體的可以訪問的層次數(shù)據(jù)庫。
圖2 研究生教學(xué)層次數(shù)據(jù)庫的值
在對數(shù)據(jù)庫進(jìn)行操作時,為了滿足層次模型的完整性約束條件,層次數(shù)據(jù)庫系統(tǒng)規(guī)定: 除根結(jié)點外的每個結(jié)點都必須通過它的雙親結(jié)點來存取。在圖2中,如果要得到某個研究生選課的情況,則要通過它的雙親結(jié)點PROFESSOR 以及根結(jié)點DEPARTMENT來存取,例如: 研究生YH選修了計算機科學(xué)系教授WP的數(shù)據(jù)結(jié)構(gòu)課程DS,成績是B。層次數(shù)據(jù)庫系統(tǒng)還規(guī)定用戶對數(shù)據(jù)的存取必須按照一次一個記錄的方式,對數(shù)據(jù)的每一種操作都要和所處理的記錄的值相關(guān)聯(lián),并要確定相應(yīng)的存取路徑,這些操作包括查詢、添加、刪除和修改等。
層次數(shù)據(jù)庫的模式(數(shù)據(jù)庫的框架)分為數(shù)據(jù)庫外模式、數(shù)據(jù)庫模式和數(shù)據(jù)庫存儲模式三個級別,它們分別對應(yīng)于視圖級抽象、概念級抽象和物理級抽象。用戶根據(jù)數(shù)據(jù)庫外模式來操縱數(shù)據(jù)庫中的數(shù)據(jù),一個數(shù)據(jù)庫外模式就是一組邏輯數(shù)據(jù)庫記錄型的集合,即程序說明塊(program specification block,PSB),每個邏輯數(shù)據(jù)庫記錄型由一個程序通信塊(program communication block,PCB)定義,邏輯數(shù)據(jù)庫記錄型到數(shù)據(jù)庫模式的映射包含在這個邏輯數(shù)據(jù)庫記錄型的PCB定義中。數(shù)據(jù)庫模式是物理數(shù)據(jù)庫記錄型的集合,每個物理數(shù)據(jù)庫記錄型對應(yīng)于層次數(shù)據(jù)模型中的一個層次模式,它由一個DBD(物理數(shù)據(jù)庫描述)定義,物理數(shù)據(jù)庫記錄型到存儲數(shù)據(jù)庫的映射包含在該物理數(shù)據(jù)庫記錄型的DBD定義中。一個物理數(shù)據(jù)庫記錄型的所有實例的有序集合構(gòu)成了一個物理數(shù)據(jù)庫,存儲數(shù)據(jù)庫由所有存儲在外存儲器上的物理數(shù)據(jù)庫的集合組成。
為了提高數(shù)據(jù)庫的查詢效率,層次數(shù)據(jù)庫系統(tǒng)提供了多種存儲結(jié)構(gòu),每種存儲結(jié)構(gòu)有著自己對應(yīng)的存取方法。常用的層次數(shù)據(jù)庫存儲結(jié)構(gòu)可以分為層次順序(hierarchical sequential,HS)和層次直接(hierarchical direct,HD)兩類。根據(jù)是否采用索引技術(shù),存取方法進(jìn)一步細(xì)分為層次順序存取方法(hierarchical sequential access method,HSAM)、層次索引順序存取方法(hierarchical indexed sequential access method,HISAM)、層次直接存取方法(hierarchical direct access method,HDAM)以及層次索引直接存取方法(hierarchical indexed direct access method,HIDAM)四種,這里所說的存取方法包含了存儲結(jié)構(gòu)。
層次數(shù)據(jù)庫語言包括數(shù)據(jù)定義語言和數(shù)據(jù)操縱語言。數(shù)據(jù)定義語言用于定義層次數(shù)據(jù)庫的邏輯數(shù)據(jù)結(jié)構(gòu)和物理數(shù)據(jù)結(jié)構(gòu),層次數(shù)據(jù)庫的數(shù)據(jù)定義語言由層次數(shù)據(jù)庫模式數(shù)據(jù)定義語言和外模式數(shù)據(jù)定義語言組成,分別用于定義和修改層次數(shù)據(jù)庫的外模式和數(shù)據(jù)庫模式。數(shù)據(jù)操縱語言是層次數(shù)據(jù)庫系統(tǒng)用來對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行存儲、檢索和修改的語言。層次數(shù)據(jù)庫數(shù)據(jù)操縱語言是過程式語言,要求用戶熟悉層次數(shù)據(jù)庫的結(jié)構(gòu)。用戶需要用宿主語言編寫應(yīng)用程序來調(diào)用數(shù)據(jù)操縱語句,實現(xiàn)對數(shù)據(jù)庫的訪問。
層次數(shù)據(jù)庫的應(yīng)用程序由宿主語言和相應(yīng)的數(shù)據(jù)操縱語言編寫而成。用戶使用宿主語言編寫應(yīng)用程序的非數(shù)據(jù)操作部分,在需要訪問數(shù)據(jù)庫時嵌入用數(shù)據(jù)操縱語言編寫的語句來實現(xiàn)和數(shù)據(jù)庫的數(shù)據(jù)交互。在運行應(yīng)用程序時,要為準(zhǔn)備存取的每個數(shù)據(jù)庫記錄型專門設(shè)立一個I/O區(qū)。作為應(yīng)用程序和數(shù)據(jù)庫之間傳遞數(shù)據(jù)的工作區(qū),當(dāng)數(shù)據(jù)庫數(shù)據(jù)被取入內(nèi)存后,用宿主語言編寫的語句將對其進(jìn)行各種運算和處理,并在必要的時候調(diào)用數(shù)據(jù)操縱語句將處理結(jié)果寫回數(shù)據(jù)庫。
由于采用了層次數(shù)據(jù)模型,層次數(shù)據(jù)庫系統(tǒng)具有數(shù)據(jù)模型簡單、性能高和完整性支持好等優(yōu)點。不足之處是: 不能夠直接表示出非層次型的復(fù)雜聯(lián)系,只能通過引入冗余數(shù)據(jù)(易產(chǎn)生不一致性)或創(chuàng)建另外的數(shù)據(jù)組織(例如引入虛擬結(jié)點)來達(dá)到目的;對插入和刪除操作的限制比較多; 對數(shù)據(jù)的存取有較嚴(yán)格的限制,只允許按層次順序或?qū)哟温窂酱嫒?有可能導(dǎo)致數(shù)據(jù)獨立性較差。所以,自20世紀(jì)70年代中期以來,層次數(shù)據(jù)庫系統(tǒng)的發(fā)展方向是努力克服這些缺點,改進(jìn)存取界面,支持多種存取方式,提供更豐富的查詢手段。
IBM公司著名的層次數(shù)據(jù)庫系統(tǒng)IMS,產(chǎn)生于20世紀(jì)60年代末,曾被用來管理美國航空航天局的阿波羅計劃中產(chǎn)生的各種龐雜數(shù)據(jù),并被應(yīng)用于銀行、軍事等領(lǐng)域的一些關(guān)鍵系統(tǒng)中,現(xiàn)在已經(jīng)發(fā)展到了IMS V9。IMS V9提供了群集、N路數(shù)據(jù)共享以及消息隊列共享等新的特性。此外,其他的層次數(shù)據(jù)庫系統(tǒng)還有SYSTEM 2000、ASI/INQ、BIS、CDMS、COGENT、DMS170、HOPS、MARS、INFOS等; 在國內(nèi),中科院數(shù)學(xué)所周龍驤領(lǐng)導(dǎo)的小組在1976~1980年設(shè)計并開發(fā)了我國第一個層次型數(shù)據(jù)庫系統(tǒng)SKGX,并在國產(chǎn)100系列機上產(chǎn)品化,取得了較大的成功。