🐈

[読書メモ] 達人に学ぶDB設計

2024/02/04に公開

概要

  • データベースの3層構造
    • 外部スキーマ
      • テーブル・ビュー
    • 概念スキーマ
      • テーブル定義
    • 内部スキーマ
      • データの物理配置
  • 論理設計 = 概念スキーマの設計
    • エンティティの抽出
    • エンティティの定義
      • エンティティのKeyを決める
      • エンティティの属性を決める
      • エンティティ間の関係を決める
    • 正規化: Normalization
      • 目的:データのCRUDを整合して(一貫性を保って)効率よく行えるようにすること
      • データベースで保持するデータの冗長性を排除するデータ形式
      • 段階
        • 第1正規形
          • 主キーが各列の値を一意に決定できる. 1つのセル(項目)は1つの値にする.
        • 第2正規形
          • 主キーの一部の項目だけに従属するような項目を含めないようにする. 部分関数従属を消す
        • 第3正規形
          • 主キー以外の項目に従属するような項目がないようにする. 推移的関数従属を消す.
        • ボイスーコッド正規形
          • 非キーからキーへの関数従属をなくす
        • 第4正規形
        • 第5正規形
      • 正規化はパフォーマンスとトレードオフ
        • 検索
          • joinが必要になりパフォーマンスの低下
        • 更新
          • 正規化により早くなる
    • ER図の作成
      • 表記法
        • IE表記
        • IDEF1X表記
      • 関連実態 (associative entity)
        • N:Nのリレーションを2つの1:Nに分割する
  • 物理設計 = 内部スキーマの設計
    • テーブル定義
    • インデックス定義
      • 種類
        • B-tree(平衡木)
    • ハードウェアのサイジング
    • ストレージの冗長構成を決める
    • ファイルの物理配置を決める
  • バックアップ・リストア・リカバリ設計
    • バックアップ
      • フル
      • 差分
        • 前回のフルバックアップからのデータを累積的に保持
      • 増分
        • 前回のフルバックアップからのデータの増分を保持
        • リカバリの手順が増える
    • リストア
      • バックアップファイルをデータベースに戻す
    • リカバリ
      • 差分バックアップしていたトランザクションログを適用する
    • ロールフォワード
      • DBに残っているトランザクションログを適用する

参考資料

Discussion