SQLの美しさと強さ:SQLで木と階層構造のデータを扱う

「リレーショナル・データベースの世界」に、SQLで木と階層構造のデータを扱う(入れ子集合モデル)を追加。予想通り大作になってしまった。これでもまだ半分ぐらいだけど、ちょっとここで一息入れよう。

 入れ子集合モデルというのがどんなモデルか、という詳細はリンク先の解説を読んでいただくとして、これは初めて知るとき体が震えます。こんな発想があるのか・・・と溜息交じりの賛嘆が出るぐらい・・・何と言うか、美しい。

 このモデルの実用性についてはまだ賛否あって、特にパフォーマンス面での弱点が指摘されていますが(『The Art of SQL』参照。この辺りの内容もいずれ追加します)、でもそういう世俗的な話を超越して、このモデルを知ることは DB エンジニアとしての人生を豊かにしてくれると思います。純粋に理論的にも勉強になるし、私の個人的な思い込みかもしれないけど、一種美的な価値まで備えている。

 しかも驚いてしまうのは、このアイデア自体が既にドナルド・クヌースの教科書『The Art of Computer Programming』の第1巻に現れているということ。灯台もと暗しとは言うけれど、世界の秘密を解く鍵は本当に誰もがいつも通る道に落ちている、ということを実感させる話です。こういうソースも包み隠さず明記するセルコ導師もさすが。

 しばらくはこの入れ子集合モデルの解説を拡充する予定ですが、それが終わったら、一応「隣接リストモデル」と「経路列挙モデル」も解説するか・・・。まだまだ先の終わりの見えない案件です。