kmizuの日記

プログラミングや形式言語に関係のあることを書いたり書かなかったり。

『C.J.Dateのデータベース実践講義 - エンジニアのためのリレーショナル理論』 雑感(途中)

実はまだ完読してないのだけど、結構刺激的で面白い本なのでブログ再開ついでに紹介してみよう。

まず断っておく必要があるのは、この本は、SQLや特定ベンダのRDBMSの取り扱い方のノウハウ本ではないということ。その意味でこの本を読むことで即座に実践に何かを活用できるかは不明である。彼は関係モデルの祖であるCoddと共同作業をしていた時期があったこともあってか、この本では本来RDBの基礎であるべき(と彼が主張する)リレーショナルモデルをきっちり理解しなければならないという主張で一貫しており、この本のかなりの部分が関係モデルの説明とそれを理解することがいかに実践で役に立つかの説明に費やされている。ある意味、関係モデルの教科書的な本でもあるのだが、彼は随所で非常に強い主張をしているので、それが本書の面白さにつながっている。

たとえば、彼は現在の多くのRDBMS、特にそれらを操作するための言語である(標準)SQLにとても批判的で、テーブル、行、列といったSQLで一般的な用語と関係、タプル、属性というリレーショナルモデルの用語の違いを理解すべきであると口を酸っぱくして説明している(やや誇張気味)。

書籍の中では説明のために必要に応じて(標準)SQLが使われているのだが、その事を断るときですら、いちいちSQLが単純な概念をわざわざ複雑化していることに文句を言いまくる始末。こういう、その分野の専門家による自己主張の強い書籍は読み物としてとても楽しい。

無論、SQLに単に文句つけてるだけではなく、リレーショナルモデルの原理を含めて学ぶところはたくさんあるのだけど、その原理を学ぶことこそが実践につながるのだという彼の主張はとても力強い。本当に実践的なのかどうかについては判断しかねる部分があるけど。

個人的な感想では、既存の製品や言語への強力な批判や実践においてこそ原理を重視する姿勢などは、Bertrand MeyerのOOSE/2ndにおける語りによく似ているように感じた。Meyer程激しくはないけど。

完読していないので固有の論点に関する感想は後日気が向いたら書くが、一つ注意点をば。この本は形式的な事柄を扱う論文ほど厳密ではないが、出てくる用語については概ね最初に定義をしてから話を詳細化していくので、そういう話の進め方に慣れていないとやや読みにくく感じるかもしれない。