MySQL
必要になりそうなので公式サイトのドキュメントに目を通している最中。
だがしかし、「外部キー制約が実装されていません」というのを見てかなりひいた(笑)。正確にはストレージとしてInnoDBという形式を選択しないと外部キー制約が使えないらしい。
トリガとかビューも5で実装したらしいし…
基本的にトランザクションのない格納システムを推奨しているようだし…(これは任意に選択可能。)
私が使うとしたら、とにかくストレージシステムをInnoDBにする必要があるようだ。複雑な更新のあるデータベースで、外部参照制約もロールバックもなしというのは考えられない…。あ、郵便番号データとかを載せる分にはなんの関係もないか(笑)
MySQLの「独特な動作」に関する記述をドキュメントで見ながら、トランザクションというものは、プログラム作成の時に使う明示的なものの他にも色々重要なのだなぁ、と思い知った。MySQLはトランザクションを使用しない事が多いので、「参照整合性」とか「ユニーク制約」とかでひっかかった時の処理が大変そうだ。(いや、基本的にはMySQLが自分で勝手にどうにかするんだが。)
PostgreSQLと比べると、文字コードの指定のタイミング*1とか、テーブルごとにストレージシステムを指定したり*2とか、かなり勝手が違う。
あと、日本語版のマニュアル(http://dev.mysql.com/doc/refman/5.1/ja/index.html)は機械翻訳の間違いとか、誤変換とか、編集時に消し忘れたゴミ*3だとか、色々気になる…
色々覚悟を終了した後、テストサーバーで試してみようとすると…あれ?うごかない?
yumのinstalledリストに載っているので既に入っているんだろうと思っていたのだが…「これはクライアントプログラム」であった(笑)。サーバープログラムをインストールするところからですか。