SQL アンチパターン 第 2 版
エスキューエルアンチパターンダイニハン
データベースプログラミングで陥りがちな失敗とその対策
- 著者:
- Bill Karwin / 和田 卓人 / 児島 修(ビル カーウィン / ワダ タクト / コジマ オサム)
- 出版社:
- オライリー・ジャパン
- 出版日:
- 2025年07月11日頃
- ISBN:
- 9784814400744
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
12 年ぶりの改訂! 内容を大幅改訂し新規章が追加!
リレーショナルデータベースを扱うシステム開発には、様々な場面で陥りやすい失敗 (アンチパターン) が存在します。本書では、SQL やデータベース設計を深く掘り下げ、データモデリングや SQL クエリのロジック、データ駆動アプリケーションのコード設計におけるアンチパターンを紹介し、それらを回避するための実践的な方法を解説します。
内容が大幅に改訂され、新規書き下ろしの章や、各章に「ミニ・アンチパターン」が追加されました。
技書の森解説
『SQL アンチパターン 第 2 版』 (Bill Karwin 著、和田 卓人 監訳、児島 修 訳、オライリー・ジャパン、2025 年 7 月刊) は、リレーショナルデータベースを使うシステム開発で陥りやすい失敗を、データモデリング、SQL クエリのロジック、データ駆動アプリケーションのコード設計の 3 つの場面から集め、それぞれを避ける方法を解説した本です。原書は SQL Antipatterns, Volume 1 の第 2 版です。版元の書籍ページでは、書名に「データベースプログラミングで陥りがちな失敗とその対策」が添えられています。版元の紹介文には、第 2 版では内容を大幅に改訂したとあります。版元は、新規書き下ろしの章と 15 のミニ・アンチパターンが加わったと案内しています。
5 部 27 章と付録の構成、論理設計から外部キーのボーナスまで
第 1 章「アンチパターンとは何か?」で、アンチパターンのタイプ、各章の構成、ER 図、サンプルデータベースを説明したあと、本編は 5 つの部です。第 I 部「データベース論理設計のアンチパターン」は第 2 章「ジェイウォーク (信号無視)」から第 9 章「メタデータトリブル (メタデータ大増殖)」まで、第 II 部「データベース物理設計のアンチパターン」は第 10 章「ラウンディングエラー (丸め誤差)」から第 13 章「インデックスショットガン (闇雲インデックス)」まで、第 III 部「クエリのアンチパターン」は第 14 章から第 19 章「インプリシットカラム (暗黙の列)」まで、第 IV 部「アプリケーション開発のアンチパターン」は第 20 章「リーダブルパスワード (読み取り可能パスワード)」から第 25 章「スタンダード・オペレーティング・プロシージャ (さびついた開発標準)」までです。第 V 部「ボーナス: 外部キーのミニ・アンチパターン」は、第 26 章で標準 SQL における外部キーの誤った使い方を、第 27 章で MySQL における外部キーの誤った使い方を扱います。巻末は付録 A「正規化のルール」と索引です。
目的、見つけ方、用いてもよい場合までを並べる各章の型
第 2 章以降の各章は、目的、アンチパターン、アンチパターンの見つけ方、アンチパターンを用いてもよい場合、解決策の順に節を立て、そのうち 15 の章の末尾にミニ・アンチパターンの節が付きます。複数の値を 1 つの列にカンマで区切って入れれば表は 1 つで済みますが、検索も集計も更新も文字列の操作になり、値の妥当性をデータベースが確かめられなくなります。値の組を別の表に分けて結び付ける形は、データ正規化 の考え方です。データベースインデックス は、検索を速くするための仕組みです。第 13 章はその管理の手順を、測定、解析、指名、テスト、最適化、再構築の頭文字を取った MENTOR の原則で示します。SQL インジェクション は、入力の文字列を SQL 文にそのままつなぐことで意図しない命令が実行される攻撃です。
日本語版付録「砂の城」と正規化のルール
日本語版付録として、奥野幹也が書き下ろした『砂の城』があると版元は案内しています。付録 A「正規化のルール」は、第 1 正規形から第 5 正規形までとボイス・コッド正規形を扱います。データベースの本の選び方は データベース本ガイド にまとめています。
論理設計、物理設計、クエリ、アプリケーション開発のアンチパターンと、外部キーのミニ・アンチパターン、正規化のルールまでを、5 部 27 章と付録 A に収めた第 2 版です。
言及した記事 (4 件)
関連記事
設計の引き出しは経験だけでは増えない
実務経験だけでは設計の引き出しに限界があります。なぜ経験だけでは不十分なのか、本が設計力に対して果たす、他で代えにくい役割を論じます。
あの有名 OSS のコードは、この本の影響を受けている
広く使われているオープンソースソフトウェアの設計には、技術書と共通の語彙や原則が残っています。OSS のコードから辿れる影響と、似ているだけの例の見分け方を整理しました。
技術書を読む順番の戦略 - 複数冊を組み合わせて理解を加速させる
技術書を 1 冊ずつ読むのではなく、複数冊を戦略的に組み合わせることで、1 冊では届かない理解の深さと広さに達する方法を解説します。
関連用語
SQL
リレーショナルデータベースを操作するための言語。データの問い合わせと更新を担う
SQL インジェクション
ユーザー入力を通じて不正な SQL 文を注入し、データベースを不正操作する攻撃手法
ORM
オブジェクト指向のコードとリレーショナル DB のテーブルをマッピングするライブラリ
フィーチャーブランチとは - 機能ごとに独立したブランチで開発しマージする Git ワークフロー
機能ごとに独立したブランチを作成し、完成後にメインブランチにマージする Git ワークフロー
トランクベース開発
全開発者が 1 つのメインブランチに頻繁にコミットし、長寿命ブランチを避ける開発手法
入力バリデーション
ユーザー入力を検証し、不正なデータがシステムに入り込むのを防ぐセキュリティの基本