隣接リスト(再帰クエリ)以外で階層構造を実現する方法は
1.経路列挙
2.入れ子集合
3.閉包テーブル
があります。

隣接リストを含む、それぞれの方法は一長一短ありますが
今回は、『階層構造のシンプルかつエレガントな格納方法。
最も用途が幅広く、(中略)計算が楽』になる
「閉包テーブル」について言及したいと思います。

「閉包テーブル」は隣接リストのように直接の親子関係だけでなく
ツリー全体のパスを格納する方法です。

例えば、以下のような階層構造があるとします。
(先頭の数字はIDです)

1:野菜┬2:根菜類
    │ ├4:ダイコン
    │ └5:にんじん
    │
    └3:果菜類
      └6:トマト

カテゴリテーブルの他に、自分自身を含む全ての先祖/子孫関係の
組み合わせを格納したテーブルを用意します。

カテゴリテーブル
----------------
ID | 名前   
----------------
1 | 野菜   
2 | 根菜類  
3 | 果菜類  
4 | ダイコン 
5 | にんじん 
6 | トマト  
----------------

ツリーテーブル
-------------------
先祖 | 子孫 | 階層 
-------------------
1  | 1  | 0
1  | 2  | 1
1  | 3  | 1
1  | 4  | 2
1  | 5  | 2
1  | 6  | 2
2  | 2  | 0
2  | 4  | 1
2  | 5  | 1
3  | 3  | 0
3  | 6  | 1
4  | 4  | 0
5  | 5  | 0
6  | 6  | 0
-------------------

ツリーテーブルの「階層」は階層の「深さ」になります。
自分自身は「0」、子は「1」、孫は「2」といった具合です。

ツリーテーブルのような「閉包テーブル」を使用することで
クエリは簡潔なものになります。

■例1.ダイコンの「先祖」を取得する

SELECT 先祖
 FROM  ツリーテーブル
WHERE  子孫 = 4
ORDER BY 階層 DESC;
-------------------
1(野菜)
2(根菜類)
4(ダイコン)

■例2.根菜類の「子孫」を取得する

SELECT 子孫
 FROM  ツリーテーブル
WHERE  先祖 = 2
ORDER BY 階層;
-------------------
2(根菜類)
4(ダイコン)
5(にんじん)

■例3.ダイコンの下に練馬大根を追加

INSERT INTO ツリーテーブル
SELECT 先祖, 7, 階層
 FROM ツリーテーブル
WHERE 子孫 = 4
UNION
SELECT 7,7,3;

結果
-------------------
先祖 | 子孫 | 階層 
-------------------
1  | 1  | 0
1  | 2  | 1
1  | 3  | 1
1  | 4  | 2
1  | 5  | 2
1  | 6  | 2
2  | 2  | 0
2  | 4  | 1
2  | 5  | 1
3  | 3  | 0
3  | 6  | 1
4  | 4  | 0
5  | 5  | 0
6  | 6  | 0
1  | 7  | 0
2  | 7  | 1
4  | 7  | 2
7  | 7  | 3
-------------------

1:野菜┬2:根菜類
    │ ├4:ダイコン
    │ │   └7:練馬大根
    │ └5:にんじん
    │
    └3:果菜類
      └6:トマト

■例4.トマトを削除

DELETE FROM ツリーテーブル WHERE 子孫 = 6;

結果
-------------------
先祖 | 子孫 | 階層 
-------------------
1  | 1  | 0
1  | 2  | 1
1  | 3  | 1
1  | 4  | 2
1  | 5  | 2
2  | 2  | 0
2  | 4  | 1
2  | 5  | 1
3  | 3  | 0
4  | 4  | 0
5  | 5  | 0
1  | 7  | 0
2  | 7  | 1
4  | 7  | 2
7  | 7  | 3
-------------------

1:野菜┬2:根菜類
    │ ├4:ダイコン
    │ │   └7:練馬大根
    │ └5:にんじん
    │
    └3:果菜類

■例5.ダイコンとそのサブツリーを削除

DELETE FROM ツリーテーブル WHERE 子孫 IN (SELECT 子孫 FROM ツリーテーブル WHERE 先祖 = 4);

結果
-------------------
先祖 | 子孫 | 階層 
-------------------
1  | 1  | 0
1  | 2  | 1
1  | 3  | 1
1  | 5  | 2
2  | 2  | 0
2  | 5  | 1
3  | 3  | 0
5  | 5  | 0
-------------------

1:野菜┬2:根菜類
    │ └5:にんじん
    │
    └3:果菜類


閉包テーブルは、パスを別のテーブルに格納することで
柔軟にノードの関連付けを行うようにする設計方法です。
何階層目かを表す「階層」の計算は少し厄介かもしれません。
「例3」の「追加」のように「7:練馬大根」が何階層目になるかを
クエリだけで取得するのは難しいからです。

そのためか、本書では「階層」についての言及は「閉包テーブル」の節の
最後のほうにしかなく、「階層」を含んだクエリの例はありません。
ですが、「階層」がなくては階層構造のデータとしては片手落ちのような気がします。

最初に述べたように、階層構造のテーブル設計は
どのような方法を取るにしろ、一長一短あります。
要件に応じて都度、最適なものを選択していくようにすべきでしょう。