なか日記

一度きりの人生、楽しく生きよう。

データベースを使う開発者は一読の価値あり『SQLアンチパターン』 by Bill Karwin

SQLアンチパターン

SQLアンチパターン

11月に突然、カッとなって買った本。カッとなった理由は、この一年を振り返ってみて「データベース設計をはじめ、SQL書いたのっていつが最後だっけ?」な状態に技術者としてよろしくない状態にあるのをひしひしと感じたから。

じゃぁ、どうしよう?実務でSQLに触れることがないなら、せめて本くらいは読んでおこうという感じでこの本を読んだ次第です。

そういえば、オライリーの本を久しぶりに買った気がします。

目次

Ⅰ部 データベース論理設計のアンチパターン
 1章 ジェイウォーク(信号無視)
 2章 ナイーブツリー(素朴な木)
 3章 IDリクワイアド(とりあえずID)
 4章 キーレスエントリ(外部キー嫌い)
 5章 EAV(エンティティ・アトリビュート・バリュー)
 6章 ポリモーフィック関連
 7章 マルチカラムアトリビュート(複数列属性)
 8章 メタデータトリブル(メタデータ大増殖)
Ⅱ部 データベース物理設計のアンチパターン
 9章 ラウンディングエラー(丸め誤差)
 10章 サーティワンフレーバー(31のフレーバー)
 11章 ファントムファイル(幻のファイル)
 12章 インデックスショットガン(闇雲インデックス)
Ⅲ部 クエリのアンチパターン
 13章 フィア・オブ・ジ・アンノウン(恐怖のunknown)
 14章 アンビギュアスグループ(曖昧なグループ)
 15章 ランダムセレクション
 16章 プアマンズ・サーチエンジン(貧者のサーチエンジン)
 17章 スパゲッティクエリ
 18章 インプリシットカラム(暗黙の列)
Ⅳ部 アプリケーション開発のアンチパターン
 19章 リーダブルパスワード(読み取り可能パスワード)
 20章 SQLインジェクション
 21章 シュードキー。ニートフリーク(疑似キー潔癖症)
 22章 シー・ノー・エビル(臭いものに蓋)
 23章 ディプロマティック・イミュニティ(外交特権)
 24章 マジック・ビーンズ(魔法の豆)
 25章 砂の城
Ⅴ部 付録
 付録A 正規化のルール
 付録B 参考文献

読んでみて

冒頭にも書きましたが、久しぶりのオライリー本でした。

各章はいずれも以下の5つで構成されており、約300ページありますがテンポよく読むことができました。

  1. 目的
  2. アンチパターン
  3. アンチパターンの見つけ方
  4. アンチパターンを用いてもよい場合
  5. 解決策

読んでみての感想ですが、ヒヤリとすることも幾つか書かれていて自分にとってはいい勉強になりました。

個人的な開発では「3章 IDリクワイアド(とりあえずID)」はORMフレームワークを使う時にお手軽なのでついついやってしまうことがあります。とりあえずIDにしなくてもできる機能はあるんですけど、ついつい…

「17章 スパゲッティクエリ」も小さいところからコツコツ積み上げていったらいつの間にかすごいのができちゃった(汗)ということもあります。できたときはSQL一発でデータを取得できて「これこそデータベースを使う醍醐味や!」なんて鼻息が荒くなりますが、数日後にメンテする際、数日前の自分の才能に驚愕することになります。

新しいこととして、12章に書かれていたカバーリングインデックスという考え方には「あ、なるほど。そういう手もあるのか」と思ったし、23章のデータベース環境をテストするためのコードを書くというのはやったことなかったけどとても効果が高い(安心感が得られる)ように感じました。

目次を見るとわかるようにレイヤーは違えど、データベースに触れる技術者全般をカバーしています。自分が関連する分野だけでも読んでおくといいんじゃないかと思います。

ある程度経験を積んだ上で読むと納得感が得られやすいし、次に繋げていきやすいんじゃないかと思います。

おしまい。