層次資料庫模型


層次模型以樹狀結構表示資料,其中每個記錄只有一個父節點。為了維護順序,存在一個排序欄位,將兄弟節點以記錄的方式儲存。這些型別的模型主要設計用於早期的主機資料庫管理系統,例如 IBM 的資訊管理系統 (IMS)。

這種模型結構允許兩種/多種型別的資料之間的一對一和一對多關係。這種結構在描述現實世界中的許多關係方面非常有用;目錄,任何巢狀和排序的資訊。

層次結構用作儲存中記錄的物理順序。可以透過使用與順序訪問相結合的指標,向下遍歷資料結構來訪問記錄。因此,當每個記錄也沒有包含完整路徑時,層次結構不適用於某些資料庫操作。

此類資料庫中的資料按層次結構組織,通常開發為倒置樹。"根"在結構中是資料庫中的單個表,其他表充當從根流出的分支。下圖顯示了一個典型的層次資料庫結構。

代理資料庫

在上圖中,一個代理預訂了幾個演藝人員,而每個演藝人員反過來都有自己的日程安排。代理的職責是維護幾個需要滿足娛樂需求的客戶。客戶透過代理預訂活動,並向代理支付其服務費用。

在此資料庫模型中,關係由術語父/子表示。父表可以與此類關係中的一個或多個子錶鏈接,但單個子表只能與一個父錶鏈接。表透過指標/索引或表中記錄的物理排列明確連結。

使用者可以透過從根表開始並向下遍歷樹到目標資料來訪問資料。使用者必須熟悉資料庫的結構才能在沒有任何複雜性的情況下訪問資料。

優點

  • 由於表結構之間存在顯式連結,因此使用者可以非常快速地檢索資料。
  • 引用完整性是內建的並自動執行的,因此子表中的記錄必須連結到父表中的現有記錄,並且如果父表中的記錄被刪除,則這也會導致子表中所有關聯記錄也被刪除。

缺點

  • 當用戶需要在當前與父表中的任何記錄無關的子表中儲存記錄時,記錄會很困難,並且使用者必須在父表中記錄其他條目。
  • 這種型別的資料庫無法支援複雜的關係,並且還存在冗餘問題,這可能導致由於在各個站點不一致地記錄資料而產生不準確的資訊。

考慮使用前面圖中所示的資料庫圖的示例。在演藝人員表中,使用者無法為演藝人員輸入新記錄,除非演藝人員被分配給代理表中的特定代理,因為子表(演藝人員)中的記錄必須與父表(代理)中的記錄相關。因此,這種型別的資料庫存在冗餘資料的問題。例如,如果客戶和演藝人員之間存在多對多關係;一個演藝人員將為許多客戶表演,而一個客戶將聘用許多演藝人員。層次資料庫中無法輕鬆地建模此類關係,因此開發人員必須在日程安排和活動表中引入冗餘資料。

  • 日程安排表現在將包含客戶資料,其中包含客戶姓名、地址和電話號碼等資訊,以顯示每個演藝人員為誰以及在哪裡表演。此資料是冗餘的,因為它當前也儲存在客戶表中。
  • 活動表現在將包含有關演藝人員的資料,其中包含演藝人員姓名、電話號碼和演藝人員型別等資訊,以指示哪些演藝人員正在為特定客戶表演。此資料也是冗餘的,因為它當前儲存在演藝人員表中。

此冗餘問題在於它可能導致產生不準確的資訊,因為它打開了允許使用者不一致地輸入單個數據片的可能性。

可以透過為演藝人員建立一個層次資料庫,為代理建立另一個層次資料庫來解決此問題。演藝人員資料庫僅包含演藝人員表中記錄的資料,而修訂後的代理資料庫將包含代理、客戶、付款和活動表中記錄的資料。不需要,因為您可以定義代理資料庫中活動表與演藝人員資料庫中演藝人員表之間的邏輯子關係。有了這種關係,您可以檢索各種資訊,例如給定客戶的預訂演藝人員列表或給定演藝人員的演出時間表。下圖描述了整個畫面。

層次資料庫非常適合 20 世紀 70 年代大型機使用的磁帶儲存系統,並且在資料庫基於這些系統的組織中非常流行。但是,即使層次資料庫提供了快速且直接的資料訪問,並且在多種情況下都很有用,但很明顯需要一個新的資料庫模型來解決日益嚴重的資料冗餘和資料之間複雜關係的問題。

此資料庫模型背後的思想對於某種型別的資料儲存很有用,但它並不十分通用,並且僅限於某些特定用途。

例如,在公司中,每個個人都可能向特定部門報告,則可以使用部門作為父記錄,而個人員工將代表輔助記錄,每個記錄都連結回層次結構中的該一個父記錄。

更新於: 2020-06-19

16K+ 瀏覽量

開啟您的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.