層次模型和網(wǎng)絡模型,從邏輯上看都是用結點表示實體集,用連線表示實體之間的聯(lián)系;從物理上看,它們都是用指針來實現(xiàn)兩個記錄集合(文件)之間的聯(lián)系。網(wǎng)絡模型中一個結點可以有多于一個的父結點,允許一個以上的結點沒有父結點。網(wǎng)絡模型是層次模型一般形式,而層次是網(wǎng)絡的特殊形式。
網(wǎng)絡模型典型代表是DBTG(Data Base Task Group)數(shù)據(jù)模型。數(shù)據(jù)庫任務小組DBTG是美國CODASY(Conference of Data System Language)組織的下屬機構,它于1971年提出DBTG報告。DBTG報告是一個網(wǎng)絡模型的數(shù)據(jù)描述語言和數(shù)據(jù)操縱語言的規(guī)范文本。凡是遵循DBTG報告開發(fā)的網(wǎng)絡模型的數(shù)據(jù)庫管理系統(tǒng)統(tǒng)稱為DBTG系統(tǒng),以下將介紹DBTG數(shù)據(jù)模型。
1.2.4.1網(wǎng)絡模型的結構
DBTG數(shù)據(jù)模型兩個基本的成分是記錄類型和系類型。以它們?yōu)榛A,按照一定的規(guī)則可以構造出描述現(xiàn)實世界中實體及其聯(lián)系的數(shù)據(jù)模型。
(1) 記錄類型
記錄類型由可命名的數(shù)據(jù)單位組成。數(shù)據(jù)單位除了數(shù)據(jù)項外,還可以是向量(具有相同特征的一維數(shù)據(jù)項的集合)、組項(多個數(shù)據(jù)項的命名序列)和重復組(一個記錄值中多次出現(xiàn)的數(shù)據(jù)集合,而這些數(shù)據(jù)可以是數(shù)據(jù)項、向量、組項和重復組)
其中成績是組項,平時成績、考試成績是向量,也是組項。DBTG的記錄類型可以表示復雜的實體。
(2) 系類型
系類型是由記錄類型組成的二級樹,其中父結點稱為系主,子結點成為成員,父子結點之間是一對多的關系?!∠殿愋兔枋隽擞涗涱愋椭g的聯(lián)系。
(3) 系的構成規(guī)則
系的構成規(guī)則主要是:
① 一個記錄類型可以出現(xiàn)在多個系類中,即它可以作為多個系的系主,也可作為多個系的成員,還可以既是一些系的系主同時又是另一些系的成員。
② 任意兩個記錄類型之間可以定義多個系類型,即具有表示兩個實體集之間可能存在的多種聯(lián)系的能力。
③ 允許奇異系(singular set)的存在,即允許單一記錄類型作為成員類型存在,而系主是虛構的,這個系主就是系統(tǒng)。因此一個數(shù)據(jù)庫只允許一個奇異系。
(4) 系值
一個系類可以有多個系值,一個系值由一個系主記錄值和其屬下的多個(包括零個)成員記錄值組成。一個成員記錄值可以出現(xiàn)在多個不同系類的多個系值中,如圖1.23所示。
(5) 多對多聯(lián)系的處理
由以上可知,DBTG數(shù)據(jù)模型不能直接處理實體集之間多對多的關系。對于多對多的關系,引入連接記錄型,轉換成兩個一對多的關系,如圖1.24所示。從圖中可以看出,學生和課程這兩個實體集合之間是“M—M”的聯(lián)系,由于引入了“選課”這個連接記錄型,則轉換為兩個“1—M”的聯(lián)系。系1的系主是Student,成員是S-C。系2的系主是Course,成員是S-C。
學生及課程都是系主,而選課這個結點有兩個父結點。
1.2.4.2 網(wǎng)絡模型的數(shù)據(jù)操作
網(wǎng)絡模型的數(shù)據(jù)操作和其采取的存取措施和策略緊密相關。
(1) 通過數(shù)據(jù)庫碼定位記錄的操作
數(shù)據(jù)庫碼DBK(Data Base Key)是由系統(tǒng)給每一個記錄值指定的標識符,和記錄值本身無關。記錄的DBK由DBMS在記錄第存儲時指定,是該記錄的永久標識,也就是記錄的邏輯地址,因此,可以通過數(shù)據(jù)庫碼直接訪問一條記錄。
(2) 通過系的導航定位記錄的操作
DBTG的數(shù)據(jù)描述語言不僅定義系的組成,還規(guī)定了系值選擇方式(選擇記錄型下某個系值)、系序(成員記錄值在系值中的邏輯排列次序)、記錄的定位方式(記錄值存入時或查找時如何確定其物理位置的方法)等,因此訪問可以通過系主找成員,也可以由同一個系值的成員找到其它成員。
(3) 通過當前值定位記錄的操作
當前值表示當前正在運行的應用程序(運行單位)操作數(shù)據(jù)庫的近情況,由DBMS建立并維護的一個“當前狀態(tài)表”,指出各種當前值,例如,系的當前值、記錄的當前值等。這些當前值就是系類中或記錄類中近被存取的記錄的DBK,使得每次定位操作不必從頭開始。
因此,DBTG系統(tǒng)數(shù)據(jù)操作不僅要指明操作的對象,還要規(guī)定存取路徑,具體操作較煩瑣,不詳細列舉。
1.2.4.3 網(wǎng)絡模型的物理存儲
網(wǎng)絡模型的物理存儲體現(xiàn)為系的物理存儲,其實現(xiàn)方式有兩種方法:鏈接法(CHAIN)和指針陣列法(POINTER ARRAY)
1.2.4.4 網(wǎng)絡模型約束
網(wǎng)絡模型約束主要表現(xiàn)為系型約束和系值約束。
(1) 系型約束
一個記錄型不能同時作為同一個系型的首記錄和成員記錄,即不能直接表示同一個實體集內部實體之間的聯(lián)系。解決的方法是引入連接記錄,用作自身聯(lián)系的中間記錄。例如,在零件(PART)實體內部存在多對多的聯(lián)系:一種零件可由多種零件構成,而一種零件也可以作為多種零件的配件??梢砸胍粋€配件(L-P)記錄型,以零件作系主,配件作成員,構造兩個系。第一個系表示一個零件需要哪些零件作配件,第二個系表示一個零件可以作哪些零件的配件。其中,實線表示系1的一個系值,虛線表示系2的一個系值。在具體實現(xiàn)時,連接記錄L-P可以存放一些其它信息,如一個零件所需要的另一種零件(配件)的個數(shù),也可以沒有其它信息而僅存放指針。
(2) 系值約束
一個記錄值不能出現(xiàn)在同一系型的不同系值中。例如,班級和學生組成的系中,班級是系主,學生是成員。某學生屬于計算機2002-1班,就不能又屬于計算機2002-2班。
此外還有系的成員籍(成員記錄值進入和移出系值的規(guī)則)的約束,不再詳細列舉。
網(wǎng)絡模型使用了大量的數(shù)據(jù)指針,一般情況下,數(shù)據(jù)指針所占據(jù)的存儲空間為數(shù)據(jù)庫存儲容量的1/3,極端情況下占據(jù)1/2。因此,網(wǎng)絡模型的數(shù)據(jù)庫的數(shù)據(jù)獨立性差,數(shù)據(jù)操作復雜,其大的優(yōu)點是存取效率高。
網(wǎng)絡模型典型代表是DBTG(Data Base Task Group)數(shù)據(jù)模型。數(shù)據(jù)庫任務小組DBTG是美國CODASY(Conference of Data System Language)組織的下屬機構,它于1971年提出DBTG報告。DBTG報告是一個網(wǎng)絡模型的數(shù)據(jù)描述語言和數(shù)據(jù)操縱語言的規(guī)范文本。凡是遵循DBTG報告開發(fā)的網(wǎng)絡模型的數(shù)據(jù)庫管理系統(tǒng)統(tǒng)稱為DBTG系統(tǒng),以下將介紹DBTG數(shù)據(jù)模型。
1.2.4.1網(wǎng)絡模型的結構
DBTG數(shù)據(jù)模型兩個基本的成分是記錄類型和系類型。以它們?yōu)榛A,按照一定的規(guī)則可以構造出描述現(xiàn)實世界中實體及其聯(lián)系的數(shù)據(jù)模型。
(1) 記錄類型
記錄類型由可命名的數(shù)據(jù)單位組成。數(shù)據(jù)單位除了數(shù)據(jù)項外,還可以是向量(具有相同特征的一維數(shù)據(jù)項的集合)、組項(多個數(shù)據(jù)項的命名序列)和重復組(一個記錄值中多次出現(xiàn)的數(shù)據(jù)集合,而這些數(shù)據(jù)可以是數(shù)據(jù)項、向量、組項和重復組)
其中成績是組項,平時成績、考試成績是向量,也是組項。DBTG的記錄類型可以表示復雜的實體。
(2) 系類型
系類型是由記錄類型組成的二級樹,其中父結點稱為系主,子結點成為成員,父子結點之間是一對多的關系?!∠殿愋兔枋隽擞涗涱愋椭g的聯(lián)系。
(3) 系的構成規(guī)則
系的構成規(guī)則主要是:
① 一個記錄類型可以出現(xiàn)在多個系類中,即它可以作為多個系的系主,也可作為多個系的成員,還可以既是一些系的系主同時又是另一些系的成員。
② 任意兩個記錄類型之間可以定義多個系類型,即具有表示兩個實體集之間可能存在的多種聯(lián)系的能力。
③ 允許奇異系(singular set)的存在,即允許單一記錄類型作為成員類型存在,而系主是虛構的,這個系主就是系統(tǒng)。因此一個數(shù)據(jù)庫只允許一個奇異系。
(4) 系值
一個系類可以有多個系值,一個系值由一個系主記錄值和其屬下的多個(包括零個)成員記錄值組成。一個成員記錄值可以出現(xiàn)在多個不同系類的多個系值中,如圖1.23所示。
(5) 多對多聯(lián)系的處理
由以上可知,DBTG數(shù)據(jù)模型不能直接處理實體集之間多對多的關系。對于多對多的關系,引入連接記錄型,轉換成兩個一對多的關系,如圖1.24所示。從圖中可以看出,學生和課程這兩個實體集合之間是“M—M”的聯(lián)系,由于引入了“選課”這個連接記錄型,則轉換為兩個“1—M”的聯(lián)系。系1的系主是Student,成員是S-C。系2的系主是Course,成員是S-C。
學生及課程都是系主,而選課這個結點有兩個父結點。
1.2.4.2 網(wǎng)絡模型的數(shù)據(jù)操作
網(wǎng)絡模型的數(shù)據(jù)操作和其采取的存取措施和策略緊密相關。
(1) 通過數(shù)據(jù)庫碼定位記錄的操作
數(shù)據(jù)庫碼DBK(Data Base Key)是由系統(tǒng)給每一個記錄值指定的標識符,和記錄值本身無關。記錄的DBK由DBMS在記錄第存儲時指定,是該記錄的永久標識,也就是記錄的邏輯地址,因此,可以通過數(shù)據(jù)庫碼直接訪問一條記錄。
(2) 通過系的導航定位記錄的操作
DBTG的數(shù)據(jù)描述語言不僅定義系的組成,還規(guī)定了系值選擇方式(選擇記錄型下某個系值)、系序(成員記錄值在系值中的邏輯排列次序)、記錄的定位方式(記錄值存入時或查找時如何確定其物理位置的方法)等,因此訪問可以通過系主找成員,也可以由同一個系值的成員找到其它成員。
(3) 通過當前值定位記錄的操作
當前值表示當前正在運行的應用程序(運行單位)操作數(shù)據(jù)庫的近情況,由DBMS建立并維護的一個“當前狀態(tài)表”,指出各種當前值,例如,系的當前值、記錄的當前值等。這些當前值就是系類中或記錄類中近被存取的記錄的DBK,使得每次定位操作不必從頭開始。
因此,DBTG系統(tǒng)數(shù)據(jù)操作不僅要指明操作的對象,還要規(guī)定存取路徑,具體操作較煩瑣,不詳細列舉。
1.2.4.3 網(wǎng)絡模型的物理存儲
網(wǎng)絡模型的物理存儲體現(xiàn)為系的物理存儲,其實現(xiàn)方式有兩種方法:鏈接法(CHAIN)和指針陣列法(POINTER ARRAY)
1.2.4.4 網(wǎng)絡模型約束
網(wǎng)絡模型約束主要表現(xiàn)為系型約束和系值約束。
(1) 系型約束
一個記錄型不能同時作為同一個系型的首記錄和成員記錄,即不能直接表示同一個實體集內部實體之間的聯(lián)系。解決的方法是引入連接記錄,用作自身聯(lián)系的中間記錄。例如,在零件(PART)實體內部存在多對多的聯(lián)系:一種零件可由多種零件構成,而一種零件也可以作為多種零件的配件??梢砸胍粋€配件(L-P)記錄型,以零件作系主,配件作成員,構造兩個系。第一個系表示一個零件需要哪些零件作配件,第二個系表示一個零件可以作哪些零件的配件。其中,實線表示系1的一個系值,虛線表示系2的一個系值。在具體實現(xiàn)時,連接記錄L-P可以存放一些其它信息,如一個零件所需要的另一種零件(配件)的個數(shù),也可以沒有其它信息而僅存放指針。
(2) 系值約束
一個記錄值不能出現(xiàn)在同一系型的不同系值中。例如,班級和學生組成的系中,班級是系主,學生是成員。某學生屬于計算機2002-1班,就不能又屬于計算機2002-2班。
此外還有系的成員籍(成員記錄值進入和移出系值的規(guī)則)的約束,不再詳細列舉。
網(wǎng)絡模型使用了大量的數(shù)據(jù)指針,一般情況下,數(shù)據(jù)指針所占據(jù)的存儲空間為數(shù)據(jù)庫存儲容量的1/3,極端情況下占據(jù)1/2。因此,網(wǎng)絡模型的數(shù)據(jù)庫的數(shù)據(jù)獨立性差,數(shù)據(jù)操作復雜,其大的優(yōu)點是存取效率高。

