新著が出ます:『達人に学ぶDB設計 徹底指南書』

 3/16 に新著が出ます。タイトルは『達人に学ぶDB設計 徹底指南書』。名前からピンと来た方もいるかもしれませんが、『達人に学ぶ SQL徹底指南書』の続編に当たります。本の装丁も同じ轟木亜紀子さんにお願いしたので、シリーズものっぽく仕上がっています(写真は文末の Amazon へのリンク参照)。

 本書も、前回の SQL 編と同様、初級者から中級者へステップアップするためのコツやノウハウを詰め込んだ盛りだくさんな内容になっています。ただし、正規化や ER 図の描き方や、インデックスの仕組みやバックアップといった論理・物理両面における設計の基礎についてもカバーしているので、初級者であっても置いてけぼりにすることのないよう配慮したつもりです。

 ただ、DB 設計というのは非常に広範囲な内容を含むので、イメージが湧かない、という方もいるでしょう。そこで以下に、本書の章構成と前書きを示しますので、購入するかどうか、判断の指針にしていただければと思います。

 
【章構成】

  1. データベースを制する者はシステムを制す
  2. 論理設計と物理設計
  3. 論理設計と正規化 〜なぜテーブルは分割する必要があるのか?〜
  4. ER図 〜複数のテーブルの関係を表現する〜
  5. 論理設計とパフォーマンス 〜正規化の欠点と非正規化〜
  6. データベースとパフォーマンス
  7. 論理設計のバッドノウハウ
  8. 論理設計のグレーノウハウ
  9. 一歩進んだ論理設計 〜SQL木構造を扱う〜

 
 本書の「はじめに」は以下の通り。

*  *  *

 本書は、リレーショナルデータベースにおける設計についての書籍です。「データベース設計」と一口に言っても、その内容は多岐にわたります。このジャンルの書籍は、大きく以下の3種類に分類できます。

  1. 論理設計
  2. 物理設計
  3. 実装設計

 1 は、いわゆる正規化やER図といった道具を使ったデータのモデル設計です。一般的に「データベース設計」と聞いて、多くの人が思い浮かべる分野がこれかもしれません。
 2 は、サーバーやストレージといった物理的なハードウェアレベルの設計です。データベースも究極的にはこうしたハードウェアの上で動作するため、物理設計も重要です。
 3 は、特定のデータベース製品を前提に、具体的な構築の手順や方法を解説したものです。データベース製品によってアーキテクチャに違いがあるため、実際にシステムを構築する段には、製品に寄りそって考える必要があります。「○○で作るデータベースサーバー」とか「○○実践パフォーマンスチューニング」といったタイトルの本(○○はデータベース製品)は、このカテゴリに属します。

 上記の分類に従えば、本書がカバーするのは、1 論理設計と2 物理設計です。書籍によっては、1 と2 を分離して、どちらか一方にフォーカスするものも珍しくありません。ですが、本書ではこの両者を同時に考えていくスタイルを取っています。章立ての便宜として、論理設計と物理設計に分ける構成にはなっていますが、片方が主題の章にも必ずもう一方が顔を出してきます。

 その理由は、論理と物理、二つのレベルの設計を同時に考えたほうが理解しやすいから――ではありません。むしろ、片方を学ぶ間はもう一方のことは忘れたほうがわかりやすいぐらいです。本書が両者を同時に考える理由は、この二つのレベルの間に、強いトレードオフの関係が成立しているからです。

 トレードオフ。日本語に訳すと「あちらを立てればこちらが立たず」。すなわち、論理設計をきれいに行なおうとすると物理設計が犠牲になり、物理設計を優先すると論理設計が犠牲になる。

 実のところ、トレードオフは別にデータベース設計だけに使われる言葉ではなく、システム開発全般、ひいては仕事からプライベートから、私たちの生活すべてにおいて当てはまる原理です。米国の経済学者マンキューは次のように言っています。

 意思決定に関する最初の原理は、「無料の昼食(フリーランチ)といったものはどこにもない」ということわざに言い尽くされている。自分の好きな何かを得るためには、たいてい別の何かを手放さなければならない。意思決定は、一つの目標と別の目標のトレードオフを必要とするのである。

 みなさんは本書を通じて、望ましい論理設計とは何か、望ましい物理設計とは何かを学んでいくことになります。しかし本書の目的は、単にそれを理解してもらうだけにはとどまりません。さらに、望ましい論理設計を達成しようとするとき、犠牲になるものは何か、望ましい物理設計を諦めなければならないのは、どのような理由によるのか、といったトレードオフを学びます。

 エンジニアの本当の仕事は、それを知った後に始まるのです。

 それでは、始めましょう!

*  *  *

 
 本書が、現場の最前線で日々様々なトレードオフに頭を悩ませている DB エンジニアの皆様のお役に立てば幸いです。

 3/17追記サンプルコード正誤表がアップされました。