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

2024年6月30日 engineering

こんにちは、 @kz_morita です。

今回は、『 達人に学ぶDB設計 徹底指南書 ~初級者で終わりたくないあなたへ 』という本を読んだのでその感想などを書いていきます。

書籍について

達人に学ぶDB設計 徹底指南書 ~初級者で終わりたくないあなたへ 』という名前の本で、翔泳社から出版されています。

目次は以下のようになっています。

第1章 データベースを制する者はシステムを制す
1-1 システムとデータベース
1-2 データベースあれこれ
1-3 システム開発の工程と設計
1-4 設計工程とデータベース

第2章 論理設計と物理設計
2-1 概念スキーマと論理設計
2-2 内部スキーマと物理設計
2-3 バックアップ設計
2-4 リカバリ設計

第3章 論理設計と正規化 ~なぜテーブルは分割する必要があるのか?
3-1 テーブルとは何か?
3-2 テーブルの構成要素
3-3 正規化とは何か?
3-4 第1正規形
3-5 第2正規形 ~部分関数従属
3-6 第3正規形 ~推移的関数従属
3-7 ボイス-コッド正規形
3-8 第4正規形
3-9 第5正規形
3-10 正規化についてのまとめ

第4章 ER図 ~複数のテーブルの関係を表現する
4-1 テーブルが多すぎる!
4-2 テーブル同士の関連を見抜く
4-3 ER図の描き方
4-4 「多対多」と関連実体

第5章 論理設計とパフォーマンス ~正規化の欠点と非正規化
5-1 正規化の功罪
5-2 非正規化とパフォーマンス
5-3 冗長性とパフォーマンスのトレードオフ

第6章 データベースとパフォーマンス
6-1 データベースのパフォーマンスを決める要因
6-2 インデックス設計
6-3 B-treeインデックスの設計方針
6-4 統計情報

第7章 論理設計のバッドノウハウ
7-1 論理設計の「やってはいけない」
7-2 非スカラ値(第1正規形未満)
7-3 ダブルミーニング
7-4 単一参照テーブル
7-5 テーブル分割
7-6 不適切なキー
7-7 ダブルマスタ

第8章 論理設計のグレーノウハウ
8-1 違法すれすれの「ライン上」に位置する設計
8-2 代理キー ~主キーが役に立たないとき
8-3 列持ちテーブル
8-4 アドホックな集計キー
8-5 多段ビュー
8-6 データクレンジングの重要性

第9章 一歩進んだ論理設計 ~SQLで木構造を扱う
9-1 リレーショナルデータベースのアキレス腱
9-2 伝統的な解法 ~隣接リストモデル
9-3 新しい解法 ~入れ子集合モデル
9-4 もしも無限の資源があったなら ~入れ子区間モデル
9-5 ノードをフォルダだと思え ~経路列挙モデル
9-6 各モデルのまとめ


付録 演習問題の解答
索引

感想など

まず、この本を読もうと思ったモチベーションはテーブル設計 (主にマスターテーブル) を行ったときに、うまく言語化できないが使いづらい設計になったためどのあたりに問題があるのか?といった点を明確にしたいという点にありました。

この本で主に良かったのは以下の点です。

  • 正規形についてわかりやすく説明されている
  • バッドノウハウだけでなく、業務上のトレードオフにあたるグレーノウハウが記載されている

まず、正規形については実際のテーブルを例に出しながら説明されていて非常にわかりやすかったです。 まず、正規化前のテーブルに対してこういう問題があり、これをこういう形で正規化するとこういう課題が解決する。といった構成になっていたのでわかりやすいです。 正規形について更新時の問題などに触れながら説明されていました。自分自身も正規形について知ってはいたもの再度見直す良い機会になりました。 おそらく、初めて概念に触れる人でもわかりやすい記述になっているのではと思います。

そして、バッドノウハウ、グレーノウハウですが現場で実際に遭遇するようなケースが挙げられていてとても良かったです。

特にグレーノウハウについて、例えば、サロゲートキーについてや、配列形式のデータを列でもつか行で持つかなど実際に遭遇したことのある課題があり良かったです。 新しくDB設計を行う際や、既存のDB設計を見直すのにこのあたりの知識は非常に役に立ちそうだと思いました。

その他にも、第 9 章の階層構造を持つデータを RDB でどう表現するかという話も面白かったです。 隣接リストモデルや、経路列挙モデルは知っていたのですが、入れ子区間のモデルなどは知らなかったので勉強になりました。

書籍全体について言えることですが、各種設計についてトレードオフをめいきした上で語られていたので非常に信頼ができるなと感じました。 現実の DB 設計を考えるときも常にトレードオフに対して何を重視して選択するかということを行い続ける必要があると思うので、この書籍のようなトレードオフについて明確に書かれている本は非常にありがたいなと思いました。

さいごに

今回は、『 達人に学ぶDB設計 徹底指南書 ~初級者で終わりたくないあなたへ 』という本を読んで感想を書きました。

DB設計についての基本的な考えがしれて良かったです。日頃の設計を行うときのリファレンスとしても使えそうな本でした。

参考文献にあげられていた データベース実践講義 という本も面白そうなので読んでみようと思います。

この記事をシェア