セルコ『プログラマのためのSQLグラフ原論~リレーショナルデータベースで木と階層構造を扱うために』

 

 ジョー・セルコの新しい翻訳本が出ました。
プログラマのためのSQL 第4版 すべてを知り尽くしたいあなたに でも有名なセルコ著/ミック訳 の組み合わせで今回出たのが、「プログラマのためのSQLグラフ原論~リレーショナルデータベースで木と階層構造を扱うために~」です。前著「第4版」で階層構造をリレーショナルデータベースで扱うための工夫について述べられた章がありましたが、本書はその部分だけを取り出し、より詳細に説明を加えたものと言ってよいでしょう。


 今回も「査読」という名の、「公開前の原稿を拝読して気づいた所を指摘する作業」にて、微力ながらお手伝いをさせていただきました。


 読みながら感じたのは、本書に書かれている内容は、多くの人にとって、読んですぐに役に立つといったものではないなということ。SQLを学びたての人がこの本を読んで、このままの設計をするようなものではないと思います。それだけ「リレーショナルデータベースらしくない」考え方が満載なのです。

 と言っても、決してデータベース設計を行う際にまねをしてはいけないバッドノウハウ集という意味ではありません。階層(=親子関係)を持つデータを取り扱うシーンは、実際のデータベース設計の際にも頻繁に遭遇することでしょう。そんなときに、リストによる手法、範囲による手法など、様々な手法による設計の考え方を、本書は教えてくれます。つまり、SQLに対する考え方の「幅」が広がるのです。
 実運用のサービスへの本書内で紹介されている技術の投入は、階層の深さやデータ量に応じた、RDBMSのクセによって採用の可否を判断することになるでしょうが、この「考え方の "幅"」が自分の中で広がることは、DB設計者にとって大きな武器になると確信しています。
 とにかく、私もはじめて本書で紹介されている考え方に触れたときにはビックリしました。というよりも「何言ってんの、こいつ」くらいの衝撃でした(笑)。


 自身のSQLに対する発想の幅を広げたい方に、ぜひお勧めの一冊です。
本書を読み終えた頃には、「ツリーは集合である(集合であらわせる)」という言葉の意味が、スッキリと飲み込めるようになっていることでしょう。