概要

データモデリングと設計 (Data Modelling & Design)

DAMA-DMBOK 2nd Edition — Chapter 5: Data Modeling and Design

出題割合: 11%(約11問)— 最重要トピック


1. データモデリングとは

定義: データ要件を発見・分析・スコープ設定し、それを明示的な形式(データモデル)として表現するプロセス。

データモデルは組織のデータ資産を正確に表すための「設計図」。


2. データモデルの種類と抽象化レベル

3層モデル(最重要)

レベル 名称 別名 対象者 内容
最上位 概念モデル(Conceptual) CDM ビジネスステークホルダー ビジネスエンティティと関係のみ
中間 論理モデル(Logical) LDM データアーキテクト・アナリスト 属性・データ型・正規化含む
最下位 物理モデル(Physical) PDM DBA・開発者 テーブル・カラム・インデックス等
概念モデル → 論理モデル → 物理モデル
(What)      (How-abstract) (How-concrete)

概念モデル(Conceptual Data Model)

論理モデル(Logical Data Model)

物理モデル(Physical Data Model)


3. データモデリング記法

Entity Relationship Diagram (ERD)

カーディナリティ(多重度)

記号 意味
`
` O`
`} `
}O 0以上(オプション多数)

IE記法(Information Engineering)とバーカー記法

UML(Unified Modeling Language)


4. 正規形(Normalization)

正規形 条件
1NF 繰り返しグループなし・原子値のみ
2NF 1NF + 部分関数従属の除去(複合キーの場合)
3NF 2NF + 推移的関数従属の除去
BCNF 3NF + すべての決定子が候補キー
4NF BCNF + 多値従属の除去
5NF 4NF + 結合従属の除去

試験では 1NF〜3NF/BCNF が特に重要


5. データモデリングのスキーマ設計パターン

リレーショナルDWH設計(OLAP向け)

スキーマ 特徴
スタースキーマ ファクトテーブル + 非正規化ディメンション。シンプルで高速
スノーフレークスキーマ ファクトテーブル + 正規化ディメンション。整合性高いが複雑
Galaxy/Constellation 複数ファクト + 共有ディメンション

ディメンショナルモデリング(Kimball方式)

Slowly Changing Dimension (SCD)

タイプ 対処法
SCD Type 1 上書き(履歴なし)
SCD Type 2 新行追加(履歴保持 → 有効日付で管理)
SCD Type 3 旧値カラム追加(限定的な履歴)

6. データモデリングの技法

前方設計(Forward Engineering)

要件定義 → 概念モデル → 論理モデル → 物理モデル → DDL生成

逆設計(Reverse Engineering)

既存DB → 物理モデル読み取り → 論理モデル → 文書化

データモデルのレビュー観点


7. モデリングツール

ツール 特徴
ERwin エンタープライズ向けモデリングツール
PowerDesigner (SAP) 広機能・企業向け
ER/Studio Embarcadero製
draw.io / Lucidchart 軽量・クラウド型
DbSchema 物理DB可視化

8. 試験で頻出の概念

サロゲートキー vs ナチュラルキー

種類 説明 利点
ナチュラルキー ビジネス上の意味を持つキー(例: 社員番号) 意味が明確
サロゲートキー システムが生成する意味のないキー(例: ID = 1, 2, 3) 安定・変更に強い

データドメイン(Data Domain)

属性が取れる値の集合。制約条件として機能。 例: 性別ドメイン = {M, F, Unknown}

データ型のカテゴリ


試験ポイント


Specialist試験 深掘り

データモデルの品質評価(Specialist頻出活動)

モデル品質の5次元:

次元 説明 評価方法
完全性(Completeness) 全ビジネス概念がモデル化されているか ビジネス要件との対照
正確性(Accuracy) ビジネスルールが正確に表現されているか ビジネスStewardのレビュー
一貫性(Consistency) 命名規則・データ型・パターンが統一されているか 自動チェックツール
簡潔性(Conciseness) 冗長な要素がないか(過剰設計を避ける) アーキテクトのレビュー
安定性(Stability) ビジネス変化に対して変更しやすい設計か 変更履歴の分析

Data Vault モデリング(Specialist試験で出題)

Kimball/Inmonに次ぐ第3のDWHモデリング手法。

構成要素:

Hub: ビジネスキーを格納(例: customer_hub → customer_natural_id)
Link: Hubの関係を格納(例: order_customer_link → order_hub + customer_hub)
Satellite: 属性・履歴を格納(例: customer_name_sat → 全変更履歴)

Data Vaultの利点:

使いどき:

高度な正規形(Specialist試験対象)

4NF(第4正規形):

問題(3NF): employee_skill_language
  | emp_id | skill    | language |
  | E001   | Python   | English  |
  | E001   | Python   | Japanese |
  | E001   | Java     | English  |
  | E001   | Java     | Japanese |  ← Pythonに日本語を追加するとJavaも追加が必要

解決(4NF): 2テーブルに分割
  employee_skill: emp_id + skill
  employee_language: emp_id + language

5NF(第5正規形)/ PJNF:

Temporal Data Modeling(時制データモデリング)

SCD Type 2 のさらに高度な概念:

Valid Time(有効時間): ビジネス上の事実が真であった期間 Transaction Time(取引時間): DBにレコードが存在した期間

-- Bi-temporal テーブル(両方の時制を管理)
CREATE TABLE customer_bitempoural (
    customer_id         INT,
    name                VARCHAR(100),
    
    -- Valid Time
    valid_from          DATE,           -- この情報がビジネス上いつから有効か
    valid_to            DATE,           -- この情報がビジネス上いつまで有効か
    
    -- Transaction Time
    recorded_at         DATETIME,       -- DBにいつ書き込まれたか
    superseded_at       DATETIME        -- この行がいつ上書きされたか(NULLは現在)
);
-- 使用例: 「6月1日時点でのDBを、7月1日時点で参照する」

用途: 「過去に間違ったデータが入力されて後日修正された場合でも、修正前の状態に遡れる」必要がある規制業務(銀行・保険・法律)

データモデリングガバナンス

Specialist試験では「モデリングプロセスのガバナンス」も問われる。

モデル変更の管理プロセス:

変更要求(Change Request)
    ↓
Impact Analysis(影響分析)
  → 下流の物理テーブルへの影響
  → 依存するアプリケーション・ETLへの影響
  → データ品質ルールへの影響
    ↓
ステークホルダーレビュー
  → Business Steward(ビジネス要件の確認)
  → Technical Architect(設計整合性の確認)
    ↓
承認・実装・テスト
    ↓
モデルのバージョン管理(Git等でモデルを管理)

アンチパターン: 開発者がモデルを勝手に変更して後からDBを変更する。これはガバナンス違反。モデルが「設計図」として機能するには変更プロセスが必須。