いつ読むか?

  • イミュータブルデータモデルを理解したいとき
  • イミュータブルデータモデルの原典を参照したいとき

読書メモ

核心

UPDATE を排除してシステム複雑性を下げる設計手法

エンティティ分類

  • リソース: 属性に日時を持たない(顧客、商品など)
  • イベント: 行われた時刻を記録(注文、支払いなど)

イベント設計の原則

  • 日時属性は1つだけ → INSERT ONLY を実現
  • 複数日時が必要 → ロングタームイベントパターンで分割

リソース設計の原則

  • 更新日時を持たせたくなったら → 隠れたイベントがある証拠
  • 削除フラグ → 業務イベント(退会、廃止など)として抽出

避けるべきパターン

  • 全テーブルに登録日時・更新日時を一律付与
  • 「マスタ」「トランザクション」という曖昧な分類
  • 削除フラグの多用

実践ポイント

  • 非依存関係には交差エンティティを挿入して NULL を避ける
  • 現在状態と変更履歴を明確に分離