樹形結構資料儲存方案(二): 物化路徑

發表於2017-08-31

前一篇文章介紹了比較簡單的鄰接列表模式,物化路徑其實更加容易理解,其實就是在建立節點時,將節點的完整路徑進行記錄。以下圖為例:

tree

按照Path Enumeration 進行儲存後的結果如下:

Path-Enumeration

此種方案藉助了unix檔案目錄的思想,主要時以空間換時間。

查詢某一節點下的所有子節點:(以Fruit為例)

如何查詢直屬子節點?需要採用MySQL的正規表示式查詢:

查詢任意節點的所有上級:(以Yellow為例):

插入新增資料:

此方案的缺點是樹的層級太深有可能會超過PATH欄位的長度,所以其能支援的最大深度並非無限的。

如果層級數量是確定的,可以再將所有的列都展開,如下圖,比較試用於類似行政區劃、生物分類法(界、門、綱、目、科、屬、種)這些層級確定的內容。

Multiple-lineage-columns

參考文章:

  • https://communities.bmc.com/docs/DOC-9902

相關文章