Published: October 2022
https://www.oreilly.com/library/view/sql-antipatterns-volume/9798888650011/
洋書。2023年3月現在、和訳は出ていないと思います。
どんな本?
多くの開発者に読まれたであろう、SQLアンチパターン の第2版です。(第2版なのに “Volume 1“ とは??)SQLの書き方のみならず、テーブル設計時の注意点やアプリケーションでの扱いについてまで踏み込んで書かれた名著です。
初版との違いはいくつかありますが、大まかには以下の点です。
章の終わりに、関連する「ミニアンチパターン」の追加
外部キー作成時のエラーについて解説された パート(2つの章)の追加
削除された章が2つ、追加された章が1つ
身に覚えのあるアンチパターン
私が初版を読んだとき、いくつかのアンチパターンについてはピンとこなかった記憶があります。これは自身の経験の浅さが理由でしたが、今はそれから数年を経て経験もそれなりに増えました。その甲斐あってか(?)、ほぼ全てのアンチパターンが苦々しい記憶と共に理解できました。
またミニアンチパターンとして追加されたトピックたちも「あるある」で、多くの開発者が同じようなアンチパターンを経験するのだなぁと感慨に耽ってしまいますね。同じく新規追加されたパートでの外部キーエラー解説にも、同様の感想を持ちました。
削除、追加された章について
冒頭でも書いたとおり、初版と第2版では章に違いがあります。具体的には、「24章 マジックビーンズ」と「25章 砂の城」が削除され、「25. Standard Operating Procedures」が追加されています。
削除された2つの章は、おそらくどちらも時代に合わないと判断されたのかなと想像しました。つまり、現代においてはアンチパターンでない状況も増えてきたのかなと。そして追加された章では「固定化された解決策を用いてしまう」アンチパターンが紹介されていました。代表としてストアドプロシージャが例に挙げられていましたが、ストアドプロシージャ自体がアンチパターンなのではなく適切な手段を用いましょうと述べられていました。
さいごに
再読も兼ねて第2版を読んでみましたが、新しい発見も多くありました。たとえば「メタデータとデータを混合してはいけない」や「ポカヨケ(の説明)」は数箇所で出てくるのですが、これに気付けたのは収穫だったように思います。
ただ、初版と第2版にとても大きな違いはないように思いました。長年経っても色褪せない初版の偉大さと、データベースという仕組み自体の完成度の高さ(基礎が変わらないこと)が要因でしょうか。もし初版を読んだことがない方であれば、第2版を原著で読むより初版の和訳版を読むほうが良いかもしれません。