產品分類、多級論壇、郵件列表等場景都涉及多層級資料。關係型資料庫本質是平面表格,需將樹狀結構「翻譯」為關係模型。常見兩種設計模式:
每筆記錄存儲 parent_id 指向父節點。優點:結構簡單,增刪改容易。缺點:遞歸查詢子孫節點效率低,需多次查詢或存儲過程。
為每個節點分配 left、right 值(基於深度優先遍歷)。優點:單次查詢即可獲取整棵子樹、祖先路徑、節點深度等。缺點:插入/移動節點需重新計算大量行的左右值,寫入效能較差。
Food
|-- Fruit
| |-- Red
| | |-- Cherry
| |-- Yellow
| |-- Banana
|-- Meat
|-- Beef
|-- Pork
文中英文術語為作者自譯,正確學術名稱為:Adjacency List Model 與 Modified Preorder Tree Traversal (MPTT)。