第1章 データベースを制する者はシステムを制す
1-1 システムとデータベース
1-2 データベースあれこれ
1-3 システム開発の工程と設計
1-4 設計工程とデータベース
第2章 論理設計と物理設計
2-1 概念スキーマと論理設計
2-2 内部スキーマと物理設計
2-3 データベース単位の冗長構成- レプリケーション
2-4 クラウドにおけるデータベースの冗長構成
2-5 クラウドはいつどんな時利用するべきなのか
2-6 バックアップ設計
2-7 リカバリ設計
第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 統計情報
6-5 インデックス以外のチューニング手段
第7章 論理設計のアンチパターン
7-1 論理設計の「やってはいけない」
7-2 非スカラ値(第1正規形未満)
7-3 ダブルミーニング
7-4 単一参照テーブル
7-5 テーブル分割
7-6 不適切なキー
7-7 ダブルマスタ
7-8 ゾンビマートと多段マート
第8章 論理設計のグレーノウハウ
8-1 違法すれすれの「ライン上」に位置する設計
8-2 代理キー~主キーが役に立たないとき
8-3 列持ちテーブル
8-4 アドホックな集計キー
8-5 多段ビュー
8-6 データクレンジングの重要性
第9章 一歩進んだ論理設計~RDBで木構造を扱う
9-1 リレーショナルデータベースのアキレス腱
9-2 古くて新しい解法~隣接リストモデル
9-3 閉包テーブルモデル
9-4 どちらを使うべきか
付録(演習問題の回答)