kent備忘ログ

お仕事と趣味生活と

達人に学ぶDB設計 徹底指南書を読んで

前回のSQL教本に続き、「達人に学ぶDB設計 徹底指南書」を読んだので、所感をまとめました。

良かったところ

 テーブル設計が前回の本より詳細にクローズアップされ、実務上の問題や論点を取り上げながらイラストや表を使用し、わかりやすく解説されていました。

 具体的には第1章から第5章までを使い、論理設計におけるテーブルの第1正規化〜第5正規化までを解説(一般的には第3正規化まで行えばほとんどのケースでカバー出来ます)
 物理設計に関しても、運用するテーブルやインデックスの大きさに応じたハードウェアの選定方法から、運用時のバックアップ体制の種類や方法などについても解説されています。

 各章末に掲載された練習問題も、DMLDDLに関する一問一答式ではなく、設問に提示されたテーブルの設計上の問題点や改善点を挙げることに論点を置いています。
 一方で既存のデータベース運用に見られる、作者からすれば考えつかない信じられないような設計や、設計者に依存してしまってバグが発生しやすい論理設計をパターン別に紹介しています。

また、これらの解説の中でとりわけ反復して挙げていることがあり、

だということです。
 これは実務においてもデータの整合性を優先させるか・データの検索や更新時の動作を優先させるかの妥協点を見出す上でヒントになると思いました。


学んだこと

第1章〜第2章

  • システム設計とデータベースについて
  • 3層スキーマDOAPOAの違い
  • 論理設計とエンティティの定義と正規化
  • 物理設計とテーブル・インデックス定義
  • ハードウェアのサイジングと運用時のバックアップ体制

第3章〜第4章

  • 正規化詳細解説(第1正規形〜第3正規形、第4正規形〜第5正規形)
  • ER図詳細解説(IE記法とIDEF1X記法)

第5章〜第6章

  • 相反する正規化とパフォーマンス(検索時と更新時)
  • インデックスと統計情報

第7章〜第8章

第9章


難しかったこと

 今回は前回と違い、クエリ文をひと通り理解しており、実務でSQLを扱ったことがある中級者以上向けになっています。
 書籍の冒頭から、前回難しいと感じていたテーブル設計の概要説明から始まり、概念設計・論理設計と正規化・物理設計へと踏み込んだ内容です。

 また、第6章から先は実務でデーターベースを運用する際、どのような設計で運用することがベストになるかを解説していますが、論点となるケースが利用者が何千・何万と存在する巨大なサービスのデータベースの場合も有りました。
 何も運用したことのない現状ではあまりイメージがピンとこないですが、一方で、実際に実務で行き詰まりそうになった際はこういったケーススタディを読み返して問題解決の糸口にしたいと思いました。

 その他に関しては、第1刷発行が2012年と10年以上前である為当たり前ですが、全編を通して物理設計がローカルでの環境構築が論点となっており、クラウド環境を利用した場合実務上の設計における解説が少ないです。
 基本的な考え方はローカルで環境を整える場合と変わらないと思いますので踏襲しつつ、近年執筆された書籍や信頼できるネット記事を参考にしたいと思います。