yojikのlog

yojikのブログです

SQLアンチパターンを読んだぜ!

どうしようもない僕に献本が降りてきた!

SQLアンチパターン

SQLアンチパターン


ありがとうございます。

結論を先に述べると、すごく読みやすくてためになる本です。

RDB使ったシステムを作っている人、特に長年やって人ならば必ず遭遇したことがあるアンチパターンのカタログです。アンチパターンが発生しやすい状況、悪影響や解決方法なども述べています。若い人は現実のシステムで失敗する前に予習できるので、絶対買ったほうがよいでしょう。「この問題!進研ゼミでやったところだ! 」

自分は論理設計のアンチパターンのあたりがお気に入りです。アンチパターンポリモーフィック関連」や「エンティティ・アトリビュート・バリュー」や「マルチカラムアトリビュート」をクラステーブル継承や従属テーブルをつかって回避するのはかなり好きです。*1

本書にはアンチパターンを適用しても良い状況の説明もあって好感が持てます。この本では自然キー(大抵は複合主キーとなる)を推奨しているのですが、ORマッパー利用を前提とすれば、擬似キーを主キーにすることを認めています。この本は単なる「べからず集」ではなく「パターン本」だからです。コンテキストや制約が異なれば導かれる解法も異なるというわけです。

また、後半に出てくるアンチパターン「モデルがアクティブレコードそのもの」に対する解法「モデルがアクティブレコードを持つようにする」については、最近のDCIとの関係でもう少し深く考えてみたいところです。「Entiryが複数コンテキストから使われることによって肥大化する」はDCIが解決しようとする問題の一つだと思うのですが、新しいパラダイムを導入するまでもなく、このパターンを導入すれば済むようなケースも多いんじゃないかと思います。こちらに関しては後日別エントリで。

*1:自分に口を出す権限があれば、いつだってやりたい。OOでいう継承や集約を利用したパターンと利用感覚が似ている