書籍『SQLアンチパターン』 #sqlap

献本御礼。
本書のレビューに参加できて大変光栄であります。

SQLアンチパターン

SQLアンチパターン

帯には『「転ばぬ先の杖」を知り、リレーショナルデータベースの進化を学ぶ!』とあって、その通りであるなぁと思いますが、個人的には「転んだ後の鞭(ムチ)」として悶絶しながら読むのが断然お勧めです。

今時のアプリケーションを開発する人はRDBMSを避けて通ることはできないはず*1。そして、今までの開発人生でどれだけのDB技術的負債を積み上げてきたことでしょう。本書では、過去のトラウマを直視させられる粒ぞろいのアンチパターンが取り上げられています。

本書におけるアンチパターンは、以下の形式で記述されています。

アンチパターン」でトラウマを抉られて悶絶しているところに、「アンチパターンを用いてもよい場合」でフォローが入り救済される、という下げて上げる式のノンストップ・ジェットコースター的なドラマティック読書が楽しめます。

目次から章タイトルだけを並べてみます。

I部 データベース論理設計のアンチパターン


1章 ジェイウォーク(信号無視)
2章 ナイーブツリー(素朴な木)
3章 IDリクワイアド(とりあえずID)
4章 キーレスエントリ(外部キー嫌い)
5章 EAV(エンティティ・アトリビュート・バリュー)
6章 ポリモーフィック関連
7章 マルチカラムアトリビュート(複数列属性)
8章 メタデータトリブル(メタデータ大増殖)


II部 データベース物理設計のアンチパターン


9章 ラウンディングエラー(丸め誤差)
10章 サーティワンフレーバー(31のフレーバー)
11章 ファントムファイル(幻のファイル)
12章 インデックスショットガン(闇雲インデックス)


III部 クエリのアンチパターン


13章 フィア・オブ・ジ・アンノウン(恐怖のunknown)
14章 アンビギュアスグループ(曖昧なグループ)
15章 ランダムセレクション
16章 プアマンズ・サーチエンジン(貧者のサーチエンジン
17章 スパゲッティクエリ
18章 インプリシットカラム(暗黙の列)


IV部 アプリケーション開発のアンチパターン


19章 リーダブルパスワード(読み取り可能パスワード)
20章 SQLインジェクション
21章 シュードキー・ニートフリーク(疑似キー潔癖症)
22章 シー・ノー・エビル(臭いものに蓋)
23章 ディプロマティック・イミュニティ(外交特権)
24章 マジックビーンズ(魔法の豆)
25章 砂の城

人によってトラウマポイントが当然違ってきますが、個人的には

  • 「4章 キーレスエントリ(外部キー嫌い)」
  • 「5章 EAV(エンティティ・アトリビュート・バリュー)」

あたりが特に悶絶度が高くて楽しめました。

あと、Grails使いとしては、「3章 IDリクワイアド(とりあえずID)」あたりも味わい深いものがありますね。Ruby on Railsの人たちも必読ではないでしょうか。

今まで読んだSQLノウハウ本の中では、以下の2つと並んでトップ3にランクインです。SQLはまだよくわからないという初学者には、まさに「転ばぬ先の杖」として素敵なガイドとなってくれることは間違いないので、安心して購入しましょう。お勧めです。

達人に学ぶ SQL徹底指南書 (CodeZine BOOKS)

達人に学ぶ SQL徹底指南書 (CodeZine BOOKS)

楽々ERDレッスン (CodeZine BOOKS)

楽々ERDレッスン (CodeZine BOOKS)

*1:そろそろ「NoSQLだけで十分だ!」と言う人も出てくるかもしれないですが