在程式開發中,我們常遇到用樹型結構來表示某些資料間的關系,如企業的組織架構、商品的分類、操作欄目等,目前的關系型資料庫都是以二維表的形式記錄存儲資料,而樹型結構的資料如需存入二維表就必須進行Schema設計。
Adjacency List(鄰接清單模式)
簡單的說是根據節點之間的繼承關系,顯現的描述某一節點的父節點,進而建立二位的關系表。
表結構通常設計為{Node_id,Parent_id},如下圖:

優點:
結構簡單易懂,由于互相之間的關系隻由一個parent_id維護,是以增删改都是非常容易,隻需要改動和他直接相關的記錄就可以。
缺點:
由于直接地記錄了節點之間的繼承關系,是以對Tree的任何CRUD操作都将是低效的,這主要歸根于頻繁的“遞歸”操作,遞歸過程不斷地通路資料庫,每次資料庫IO都會有時間開銷。
PS:在鄰接清單模式的基礎上還可以拓展的是平面表,差別是将節點的level和目前節點的順序也放入表中,比較适合類似評論等場景。