數(shù)據(jù)庫系統(tǒng)1-2:層次模型

字號:

用樹形結構表示實體之間聯(lián)系的模型叫層次模型。層次模型是早用于商品數(shù)據(jù)庫管理系統(tǒng)的數(shù)據(jù)模型。其典型代表是于1969問世、由IBM公司開發(fā)的數(shù)據(jù)庫管理系統(tǒng)IMS(Information Management System)。
    1.2.3.1 層次模型的結構
    層次模型的表示方法是:樹的結點表示實體集(記錄的型),結點之間的連線表示相連兩實體集之間的關系,這種關系只能是“1一M”的。通常把表示1的實體集放在上方,稱為父結點,表示M的實體集放在下方,稱為子結點。層次模型的結構特點是:
    (1) 有且僅有一個根結點。
    (2) 根結點以外的其它結點有且僅有一個父結點。
    因而層次模型只能表示“1一M”關系,而不能直接表示“M—M”關系。
    在層次模型中,一個結點稱為一個記錄型,用來描述實體集。每個記錄型可以有一個或多個記錄值,上層一個記錄值對應下層一個或多個記錄值,而下層每個記錄值只能對應上層一個記錄值。例如,系記錄型有:計算機系、電信系等記錄值。而計算機系的下層記錄值有軟件、結構、應用等研究室和數(shù)據(jù)結構、操作系統(tǒng)、數(shù)據(jù)庫等課程,軟件研究室下層又有員工和項目記錄值,
    關于層次模型中實體集之間多對多的聯(lián)系的處理,解決的方法是引入冗余結點。例如,學生和課程之間的多對多的聯(lián)系,引入學生和課程的冗余結點 轉換為兩棵樹:一棵樹的根是學生,子結點是課程,它表現(xiàn)了一個學生可以選多門課程;一棵樹的根是課程,子結點是學生,它反映了一門課程可以被多個學生選。
    1.2.3.2層次模型的數(shù)據(jù)操作
    層次模型的數(shù)據(jù)操作大特點是必須從根結點入手,按層次順序訪問。首先介紹層次順序中的兩個概念。
    (1) 記錄類型碼 對層次模型中的記錄型樹,按照從上到下,從左到右的順序給每個記錄類一個編號,稱為記錄類型碼,以表示記錄類在樹中的位置。
    (2) 順序域 為了確定同一記錄類下的各個記錄值的位置,指定記錄中某字段的值作為記錄值的排序的依據(jù),該字段稱為順序域。
    (3) 層次順序和路徑  有了記錄類型碼和順序域,就可以對所有的記錄值進行排序,首先按類型碼排序,同一類型碼下的各個記錄值再按順序域排序。這種從上到下、從左到右的排列順序就是層次順序。從根結點開始到目標結點之間所有直系祖先的類型碼和順序域組成該結點的層次路徑。如圖1.19所示,D(Department)、S(Section)、C(Course)、F(Faculty)和P(Project)分別表示系、研究室、課程、員工和項目。D02的層次順序: D02S01F01F02S02F03F04S03F05F06F07023056C01C02C03。
    GU DEPT(DEPT#=’D02’)
    SECTION(SEC#=’S03’)
    FACULTY(FAC#=’F06’)
    層次模型中的更新操作之前,一般都先執(zhí)行一個查詢,再執(zhí)行相應操作。所以層次模型數(shù)據(jù)操作的特點是通過層次路徑定位記錄,僅能訪問一條記錄。
    1.2.3.4 層次模型的物理存儲
    層次模型的物理存儲有兩種實現(xiàn)方法:
    (1) 順序法
    按照層次順序把所有的記錄鄰接存放,即通過物理空間的位置相鄰來實現(xiàn)層次順序。
    (2) 指針法
    各個記錄存放時不是按層次順序,而是用指針按層次順序把它們鏈接起來。
    1.2.3.5 層次模型的約束
    層次模型的限制是:
    (1) 層次模型的樹是有序樹(層次順序)。對任一結點的所有子樹都規(guī)定了先后次序,這一限制隱含了對數(shù)據(jù)庫存取路徑的控制。
    (2) 樹中父子結點之間只存在一種聯(lián)系,因此,對樹中的任一結點,只有一條自根結點到達它的路徑。
    (3) 不能直接表示多對多的聯(lián)系。
    (4) 樹結點中任何記錄的屬性只能是不可再分的簡單數(shù)據(jù)類型。