このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

関係データベースの第n正規形もほぼナンセンス、そしてだから…

デイヴィッド・スピヴァックの著作物を読むときに注意しなくてはならないのは、彼が好んで例に出しているものを彼が好んでいるかどうか分からないことです。評価・価値判断にはあえて触れないのかも知れないし、好悪の感情や批判も称賛もほんとに興味ないのかも知れません。

僕は最初、Functorial Data Migration(http://arxiv.org/abs/1009.1166)は、関係(リレーショナル)データモデルを圏論の立場から合理化するものかと思いました。例として出しているのが関係(リレーショナル)データベースだからです。しかし実際は、スピヴァック理論は関係データモデルの諸概念をほとんど無意味化してしまいます。

RDF(Resource Description Framework)もしょっちゅう例に出しているので、RDFを推奨している印象もありましたが、スピヴァック理論からの帰結は「RDFは使い物にならない」です。

スピヴァック本人がこのテのことに言及しないので、余計なお世話ですが、「主キー/外部キーなんてドーデモイイ」、「絵で分かる! 主キー/外部キーのアホらしさ」、「関係データベースの第1正規形はナンセンス」において、関係データベース理論が曖昧で脆弱であることを指摘しました。

主キー/外部キーは(仕掛けとしては必須でも)恣意的で意味的には無駄なものです。第1正規形はそもそも定義がありません。このようなグラグラの基盤の上に第n正規形(n>1)とか言ってみても、情報モデルとして意味があるのかあやしいものです。

誤解を招かないように言っておくと、正規形の議論がいかなる文脈でも無意味ということではありません。メモリ番地がコンピュータが動作する基盤であるのと同様に、主キー/外部キーがデータベースのメカニズムを支えています。メカニズムの構成要素としての主キー/外部キーは極めて重要です。第n正規形の議論も、今となってはメカニズムの文脈で理解すべきでしょう。それならもちろん意味があります。

しかし、メカニズムとは独立であるべき情報構造のモデリングとして第n正規形が出てくるのはどうも変な話です。とはいえ、詳論する気力がないので、簡単な例示にとどめます。以下の図のような情報のモデルを考えます。丸いノードはテーブルまたはデータ型、矢印はカラムだと思ってください。

原寸大の図

スピヴァックの情報モデルは、集合と写像(未定義としてのNULLを許す場合は部分写像)だけで情報構造をモデリングします。つまり、テーブル/データ型とは集合で、カラムは写像です。上記の写像のなかで、ageとofficePhoneNumは、別な写像から合成(写像の結合、composition)で組み立てたほうが良いでしょう。

原寸大の図

二番目の絵について、「関手データモデル入門 3:とても便利なスピヴァック流パス記法」で説明したパス記法を使うと:

  • Employee.age = Employee.birth.calcAge
    従業員の年齢は、従業員の生年月日から年齢を計算
  • Employee.officePhoneNum = Employee.office.phoneNum
    従業員の勤務先電話番号は、従業員の勤務先営業所の電話番号

と定義しています。これにより、写像ageとofficePhoneNumは基本的な写像からは除外されます。除外された写像は点線で描いています。

以上の説明で使っている方法は、「現実の世界の情報構造を集合と写像モデリングしましょう」というものです。そして、他の“より基本的な”写像の合成により得られる写像識別し除外しているだけです。「より基本的な」に関して厳密な定義をしようと思えばそれは可能です(今はしませんが)。メカニズム(ソフトウェア的な実装)に言及しなければ、キーだの正規形だのを持ち出す必要なんてないんですよ。これは、「衝撃的なデータベース理論・関手的データモデル 入門」の「はじめに」でも書いたことです。


さて、スピヴァック理論の既存理論に対する破壊的な側面を取り上げたのですが、こうやって書いてみて、スピヴァック本人がそのようなことを言わない理由がちょっと分かった気もします。これって、建設的じゃないよね。

なので、スピヴァック理論の創造的な側面、つまり既存理論では出来なかったこと、既存理論では到達できない地平に向かって進む話をしましょう。データマイグレーション関手は、スキーマの変更や変換に伴って、データのマイグレーション方法を計算できることを示しています。これについては「関手的データモデルが変える世界」で「まるで夢のよう」と触れています。

関係データベースの第1正規形はナンセンス」の最後と「「グロタンディーク」って言ったらカッコイイのか?」でチラリと触れたように、型システム(プログラミング言語)とデータベースの統合に対してスピヴァック理論は信頼できる枠組みを提供します。「一般関手モデル:相対スキーマと相対インスタンス」は、この話題を扱っています。

関手(ファンクトリアル)データモデルの上に構築された新しい問い合わせ理論は、その一部が実装されるだけでも、データ処理の面目を一新しそうです。

スピヴァック理論を既存理論と対比してみるのはもう終わりにします。それより、スピヴァック理論で何が出来るかを考えたほうが楽しいですからね。