1. 程式人生 > >邏輯資料模型之層次資料模型、網狀資料模型和關係資料模型

邏輯資料模型之層次資料模型、網狀資料模型和關係資料模型

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

  一、層次資料模型

  定義:層次資料模型是用樹狀<層次>結構來表示實體型別和實體間聯絡的資料模型。(來自百度百科)

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

  特徵:樹的性質決定了樹狀資料模型的特徵

     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等。