概念データモデリング・E-R図 重要度:★★★出題: PM1・PM2
履歴管理・世代管理モデル(有効期間・適用開始日・スナップショット)
りれきかんりせだいかんりもでる / Temporal & Historical Data Modeling
単価・所属組織・契約条件など時間とともに変化する属性について、過去・現在・将来の状態を失わずに管理するための主キー・属性設計パターン。
3行速習ポイント
- マスタに履歴を持たせる場合は、主キーに「適用開始年月日(または世代番号)」を加え、非キー属性に「適用終了年月日」を持たせる
- 取引時点の単価や税率を確定保存する必要がある場合は、トランザクション明細側にも取引時点の属性値(スナップショット)を保持するかを業務要件から判断する
- 状態遷移(予約→チェックイン→チェックアウト、受注→出荷→検収)を管理する場合は、状態ごとの日時属性やサブタイプ・別トランザクションへの分離を使い分ける
図解
図履歴・時系列データモデリングの3パターン
マスタ世代
有効期間(世代管理)モデル
主キー:{ コード, 適用開始日 } + 非キー:適用終了日
↕
時点固定
取引時点スナップショットモデル
受注明細側に受注時点の「販売単価」を非キー属性として保持
↕
状態遷移
イベント連鎖モデル
受注→出荷→検収を発生時点ごとの別エンティティとして分離
概要と本質
午後I・午後IIの概念データモデリングで合否を分ける実践的論点です。「組織改編前の所属履歴も保持したい」「将来の価格改定を事前登録しておきたい」「契約変更の履歴を残したい」といった業務要件が与えられた際、主キーにどの時間属性を追加すべきかを正確に導き出す必要があります。
重要ポイント・コア概念
- 期間履歴モデル:主キーを `{対象コード, 適用開始年月日}` とし、非キー属性に `適用終了年月日` を持たせる(特定日 T の有効行は `適用開始年月日 <= T AND T <= 適用終了年月日` で一意に特定可能)
- 月次・日次集計モデル:主キーに `対象年月` や `履歴年月日` を含める
- イベント連鎖モデル:要求 → 発注 → 入荷 → 検収 のように業務イベントの発生タイミングが異なる場合は、同一テーブルに詰め込まず別々のトランザクションエンティティとして切り出す
午後I・午後II記述試験での攻略ポイント
午後試験で「同じ社員が複数回異動する」「同じコースを複数回受験できる」と記述されていたら、主キーに「配属年月日」や「受験日時(または受験回数)」を含めないと主キー重複になってしまいます。業務記述の「複数回」「履歴」「日ごとに」というキーワードを見逃さないようにしましょう。
午後記述で使える加点キーワード(クリックでコピー)
この用語が出題された過去問を解く(1分演習)
即時アウトプットで定着データベーススペシャリスト 過去問演習で実践力を鍛える