複製鏈接
請複製以下鏈接發送給好友

網狀模型

鎖定
用網絡結構表示實體類型及其實體之間聯繫的模型。顧名思義,一個事物和另外的幾個都有聯繫,這樣構成一張網狀圖。
網狀模型是一種可以靈活地描述事物及其之間關係的數據庫模型。最早由美國查爾斯·巴赫曼發明。 [1] 
中文名
網狀模型
外文名
networkmodel
屬    於
邏輯模型
應用學科
數據庫

網狀模型發明簡史

世界上第一個網狀數據庫管理系統也是第一個DBMS是美國通用電氣公司Bachman等人在1964年開發成功的IDS(IntegratedDataStore)。IDS奠定了網狀數據庫的基礎,並在當時得到了廣泛的發行和應用。
美國的查爾斯·巴赫曼積極推動與促成了數據庫標準的制定,1971年,數據庫語言研究會(Conference On Data System Language,CODASYL)下屬的數據庫任務組(Data Base Task Group,DBTG)提出了一個系統方案——DBTG系統,也稱CODASYL系統對網狀數據模型和語言進行了定義,並在1978年和1981年又做了修改和補充。因此網狀數據模型又稱為CODASYL模型或DBTG模型。DBTG系統雖然不是實際的軟件系統,但是它提出的基本概念、方法和技術具有普遍意義,對於網狀數據庫系統的研製和發展起了重大的影響。後來許多系統都採用DBTG模型或者簡化的DBTG模型,如CuUinetSoftware公司的IDMS等。 [2] 
1984年美國國家標準協會(ANSI)提出了一個網狀定義語言(NetworkDefinitionLanguage,NDL)的推薦標準。在70年代,曾經出現過大量的網狀數據庫的DBMS產品。比較著名的有Cullinet軟件公司的IDMS,Honeywell公司的IDSII,Univac公司(後來併入Unisys公司)的DMS1100,HP公司的IMAGE等。 網狀數據庫模型對於層次和非層次結構的事物都能比較自然的模擬,在關係數據庫出現之前網狀DBMS要比層次DBMS用得普遍。在數據庫發展史上,網狀數據庫佔有重要地位。

網狀模型定義

現實世界中事物之間的聯繫更多的是非層次關係的,用層次模型表示這種關係很不直觀,網狀克服了這一弊病,可以清晰的表示這種非層次關係。
用有向圖結構表示實體類型及實體間聯繫的數據結構模型稱為網狀模型(Network Model)。
網狀模型取消了層次模型的不能表示非數狀結構的限制,兩個或兩個以上的結點都可以有多個雙親結點,則此時有向樹變成了有向圖,該有向圖描述了網狀模型。
網狀模型中以記錄為數據的存儲單位。記錄包含若干數據項網狀數據庫數據項可以是多值的和複合的數據。每個記錄有一個惟一地標識它的內部標識符,稱為碼(DatabaseKey,DBK),它在一個記錄存入數據庫時由DBMS自動賦予。DBK可以看作記錄的邏輯地址,可作記錄的替身,或用於尋找記錄。網狀數據庫是導航式(Navigation)數據庫,用户在操作數據庫時不但説明要做什麼,還要説明怎麼做。例如在查找語句中不但要説明查找的對象,而且要規定存取路徑。

網狀模型特徵

網狀模型的數據結構主要有以下兩個特徵:
(1)允許有一個以上的節點無雙親。
(2)至少有一個節點可以有多於一個的雙親。 [1] 
網狀模型中每個結點表示一個記錄型(實體),每個記錄型可包含若干個字段(實體的屬性),結點間的連線表示記錄類型(實體)間的父子關係。
從定義可以看出,層次模型中子結點與雙親結點的聯繫是唯一的,而在網狀模型中這種聯繫可以不唯一。因此,在網狀模型中要為每個聯繫命名,並指出與該聯繫有關的雙親記錄和子記錄。

網狀模型實例

以學生選課為例討論網狀模型如何組織數據。
通常一個學生可以選修若干門課程,某一課程可以被多個學生選修,因此,學生與課程之間是多對多的聯繫。這樣的實體聯繫圖不能直接用網狀模型來表示,因為網狀模型中不能直接表示實體之間多對多的聯繫,為此引入一個學生選課的聯結記錄。它由3個數據項組成,即學號、課程號、成績,表示某個學生選修某一門課程及其成績。
這樣,學生選課數據庫包括3個記錄類型:學生、課程和選課。
每個學生可以選修多門課程。顯然對於學生記錄中的一個值,選課記錄中可以有多個值與之聯繫。而選課記錄中的一個值,只能與學生記錄中的一個值聯繫。學生與選課之間的聯繫是一對多的聯繫,聯繫名為學生-選課。同樣,課程與選課之間的聯繫也是一對多的聯繫,聯繫名為課程-選課。

網狀模型數據操作與完整性約束

網狀模型的數據操作主要包括查詢、插入、刪除和更新。具體如下:
(1)進行插入操作時,允許插入尚未確定雙親結點值的子結點值。如可增加一名尚未分配到某個教研室的新老師,也可增加一些剛來報到還未分配宿舍的學生。
(2)進行刪除操作時,只允許刪除雙親結點值。如可刪除一個教研室,而該科研室所有教師的信息仍保留在數據庫中。
(3)修改數據時,可直接表示非樹狀結構,而無須像層次模型那樣增加冗餘結點,因此修改操作時只需要指定更新記錄即可。
進行更新操作時只需更新指定記錄即可。因此,一般來説,網狀模型沒有層次模型那樣嚴格的完整性約束條件,但具體的網狀數據庫系統(如DBTG)對數據操作都加了一些限制,提供了一定的完整性約束。 [3] 
DBTG在模式DDL中提供了定義DBTG數據庫完整性的若干概念和語句,主要有:
(1) 支持記錄碼的概念,碼是唯一標識記錄的數據項的集合。
(2) 保證一個聯繫中雙親記錄和子記錄之間是一對多的聯繫。
(3) 可以支持雙親記錄和子記錄之間某些約束條件。如有些子記錄要求雙親記錄存在才能插入,雙親記錄刪除時也連同刪除。 [4] 

網狀模型優缺點

網狀模型優點

網狀數據模型的優點如下。
(1) 能夠更為直接地描述現實客觀世界。可表示實體間的多種複雜聯繫。
(2) 具有良好的性能,存取效率較高。

網狀模型缺點

網狀數據模型的缺點如下。
(1) 結構比較複雜,其數據定義語言(DDL)、數據操作語言(DML)複雜,用户不容易使用。而且應用環境越大,數據庫的結構就變得越複雜,不利於最終用户掌握。
(2) 數據獨立性差,由於實體間的聯繫本質上是通過存取路徑表示的,因此應用程序在訪問數據時要指定存取路徑。 [1] 
參考資料
  • 1.    施伯樂,丁寶康,楊衞東.數據庫教程:電子工業出版社,2004-9-1
  • 2.    網狀模型  .讀書頻道[引用日期2016-09-23]
  • 3.    周屹 李豔娟.數據庫原理及開發應用(第二版):清華大學出版社,2013:34-35
  • 4.    DavidM.Kroenke.數據庫原理:清華大學出版社,2008