木と階層構造のデータ

SQLで木と階層構造のデータを扱う――入れ子集合モデル
木構造のノードを円と見なし、階層関係を円の包含関係として捉えなおす。

http://www.geocities.jp/mickindex/database/db_tree_ns.html

自分としては円というよりはS式という感じ。まあどっちでも同じだけど。

例題の木構造

足立
┣猪狩
┗上田
 ┣江崎
 ┃┗木島
 ┣大神
 ┗加藤

ここで各人を“(本人 部下 部下 …)”のリストで表すことにする。
なお、部下がいない場合でも“(本人)”となって括弧はあることに注意。
出来た全体のS式の各括弧に順に番号をつける。

(足立 (猪狩) (上田 (江崎 (木島) ) (大神) (加藤)  )  )
1     2    3 4     5     6    7 8 9   10 11  12 13 14

これをテーブルにすればできあがり。

emp lft rgt
足立 1 14
猪狩 2 3
上田 4 13
江崎 5 8
木島 6 7
大神 9 10
加藤 11 12

S式とXMLが違うだけで、結局同じ事がここに書いてあった。

3-9.XML データを入れ子集合モデルに変換する

http://www.geocities.jp/mickindex/database/db_tree_ns.html#LocalLink-xml_to_set