邏輯數據模型之層次數據模型、網狀數據模型和關係數據模型

上一篇文章簡單介紹了概念數據模型、邏輯數據模型、物理數據模型的基本概念、特性以及三者所對應的數據庫的開發階段。現在針對邏輯數據模型中所用到的三種數據模型---層次數據模型、網狀數據模型以及關係數據模型做一個相信的介紹與對比分析。

  一、層次數據模型

  定義:層次數據模型是用樹狀<層次>結構來表示實體類型和實體間聯繫的數據模型。(來自百度百科)

  其實層次數據模型就是的圖形表示就是一個倒立生長的樹,由基本數據結構中的樹(或者二叉樹)的定義可知,每棵樹都有且僅有一個根節點,其餘的節點都是非根節點。每個節點表示一個記錄類型對應與實體的概念,記錄類型的各個字段對應實體的各個屬性。各個記錄類型及其字段都必須記錄。

  特徵:樹的性質決定了樹狀數據模型的特徵

     1. 整個模型中有且僅有一個節點沒有父節點,其餘的節點必須有且僅有一個父節點,但是所有的節點都可以不存在子節點;

     2. 所有的子節點不能脫離父節點而單獨存在,也就是說如果要刪除父節點,那麼父節點下面的所有子節點都要同時刪除,但是可以單獨刪除一些葉子節點;

     3. 每個記錄類型有且僅有一條從父節點通向自身的路徑;

  實例:

     如圖1,以學校某個系的組織結構爲例,說明層次數據模型的結構。

     1.  記錄類型系是根節點,其屬性爲系編號和系名;

     2.  記錄類型教研室和學生分別構成了記錄類型系的子節點,教研室的屬性有教研室編號和教研室姓名,學生的屬性分別是學號、姓名和成績;

            3.  記錄類型教師是教研室這一實體的子節點,其屬性由教師的編號,教師的姓名,教師的研究方向。

  優點:

       1. 層次數據模型的結構簡單、清晰、明朗,很容易看到各個實體之間的聯繫;

     2. 操作層次數據類型的數據庫語句比較簡單,只需要幾條語句就可以完成數據庫的操作;(百度百科)

     3. 查詢效率較高,在層次數據模型中,節點的有向邊表示了節點之間的聯繫,在DBMS中如果有向邊藉助指針實現,那麼依據路徑很容易找到待查的記錄;

     4. 層次數據模型提供了較好的數據完整性支持,正如上所說,如果要刪除父節點,那麼其下的所有子節點都要同時刪除;如圖1,如果想要刪除教研室,則其下的所有教師都要刪除;

  缺點:

         1. 層次數據模型只能表示實體之間的1:n的關係,不能表示m:n的複雜關係,因此現實世界中的很多模型不能通過該模型方便的表示;

         2. 查詢節點的時候必須知道其雙親節點的,因此限制了對數據庫存取路徑的控制;

圖 1. 院系人員組成結構圖

  二、網狀數據模型

  定義:用有向圖表示實體和實體之間的聯繫的數據結構模型稱爲網狀數據模型。

  其實,網狀數據模型可以看做是放鬆層次數據模型的約束性的一種擴展。網狀數據模型中所有的節點允許脫離父節點而存在,也就是說說在整個模型中允許存在兩個或多個沒有根節點的節點,同時也允許一個節點存在一個或者多個的父節點,成爲一種網狀的有向圖。因此節點之間的對應關係不再是1:n,而是一種m:n的關係,從而克服了層次狀數據模型的缺點。

  特徵:

     1. 可以存在兩個或者多個節點沒有父節點;

     2. 允許單個節點存在多於一個父節點;

  網狀數據模型中的,每個節點表示一個實體,節點之間的有向線段表示實體之間的聯繫。網狀數據模型中需要爲每個聯繫指定對應的名稱。

  實例:  

     同樣是以教務管理系統爲例,下面說明了院系的組成中,教師、學生、課程之間的關係。

圖 2. 院系的教務管理系統

    由上圖中可以看出課程(實體)的父節點由專業、教研室、學生。以課程和學生之間的關係來說,他們是一種m:n的關係,也就是說一個學生能夠選修多門課程,一門課程也可以被多個學生同時選修。

  優點:

     1. 網狀數據模型可以很方便的表示現實世界中的很多複雜的關係;

     2. 修改網狀數據模型時,沒有層次狀數據模型的那麼多的嚴格限制,可以刪除一個節點的父節點而依舊保留該節點;也允許插入一個沒有任何父節點的節點,這樣的插入在層次狀數據模型中是不被允許的,除非是首先插入的是根節點;

     3. 實體之間的關係在底層中可以藉由指針指針實現,因此在這種數據庫中的執行操作的效率較高;

  缺點:

     1. 網狀數據模型的結構複雜,使用不易;

     2. 網狀數據模型數據之間的彼此關聯比較大,該模型其實一種導航式的數據模型結構,不僅要說明要對數據做些什麼,還說明操作的記錄的路徑;

   三、關係型數據模型

  關係型數據模型對應的數據庫自然就是關係型數據庫了,這是是目前筆者最熟悉的數據庫。

  定義:使用表格表示實體和實體之間關係的數據模型稱之爲關係數據模型。

  關係型數據庫是目前最流行的數據庫,同時也是被普遍使用的數據庫,如MySQL就是一種流行的數據庫。支持關係數據模型的數據庫管理系統稱爲關係型數據庫管理系統。

  特徵:

     1. 關係數據模型中,無論是是實體、還是實體之間的聯繫都是被映射成統一的關係---一張二維表,在關係模型中,操作的對象和結果都是一張二維表;

     2. 關係型數據庫可用於表示實體之間的多對多的關係,只是此時要藉助第三個關係---表,來實現多對多的關係,如下例子中的學生選課系統中學生和課程之間表現出一種多對多的關係,那麼需要藉助第三個表,也就是選課表將二者聯繫起來;

     3. 關係必須是規範化的關係,即每個屬性是不可分割的實體,不允許表中表的存在;

  實例:

     下面以學生選課系統爲例進行說明。學生選課系統的實體包括:學生、教師、課程;其聯繫一般爲學生與課程之間是一種多對多的關係,教師與課程之間是多對多的關係。學生可以同時選擇多門課程,一門課程也可以同時被多個學生同時選擇;一位教師可以教授多門課程,一門可能可以由多個教師教授。因此他們之間的聯繫如下:

 

圖 3 學生選課系統示意圖

  將該圖映射爲關係數據模型中的表格爲圖4。從中可以看到學生與課程之間的聯繫以及教師和課程之間的多對多聯繫都被映射成了表格。其中選課表中的sut_id和cour_id分別是引用學生表和課程表的cour_id的外鍵;教課表也是如此。

 圖 4 關係數據模型的表格

  優點:

     1. 結構簡單,關係數據模型是一些表格的框架,實體的屬性是表格中列的條目,實體之間的關係也是通過表格的公共屬性表示,結構簡單明瞭;

     2. 關係數據模型中的存取路徑對用戶而言是完全隱蔽的,是程序和數據具有高度的獨立性,其數據語言的非過程化程度較高;

     3. 操作方便,在關係數據模型中操作的基本對象是集合而不是某一個元祖;

     4. 有堅實的數學理論做基礎,包括邏輯計算、數學計算等;

  缺點:

     1. 查詢效率低,關係數據模型提供了較高的數據獨立性和非過程化的查詢功能(查詢的時候只需指明數據存在的表和需要的數據所在的列,不用指明具體的查找路徑),因此加大了系統的負擔;

     2. 由於查詢效率較低,因此需要數據庫管理系統對查詢進行優化,加大了DBMS的負擔;

  關係數據模型的三種約束完整性:

  關係數據模型定義了三種約束完整性:實體完整性、參照完整性以及用戶定義完整性。

  實體完整性:實體完整性是指實體的主屬性不能取空值。實體完整性規則規定實體的所有主屬性都不能爲空。實體完整性針對基本關係而言的,一個基本關係對應着現實世界中的一個主題,例如上例中的學生表對應着學生這個實體。現實世界中的實體是可以區分的,他們具有某種唯一性標誌,這種標誌在關係模型中稱之爲主碼,主碼的屬性也就是主屬性不能爲空。

  參照完整性:在關係數據庫中主要是值得外鍵參照的完整性。若A關係中的某個或者某些屬性參照B或其他幾個關係中的屬性,那麼在關係A中該屬性要麼爲空,要麼必須出現B或者其他的關係的對應屬性中。如上表中的選課關係的stu_id和cour_id分別是參考學生和課程的外鍵,那麼對於現實的系統而言,stu_id和cour_id必須分別出現在學生和課程關係中,這就是外鍵參考的完整性,同時刪除的時候根據設置的不同有不同的處理方式。

  用戶定義完整性:用戶定義完整性是針對某一個具體關係的約束條件。它反映的某一個具體應用所對應的數據必須滿足一定的約束條件。例如,某些屬性必須取唯一值,某些值的範圍爲0-100等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章