Skip to main content

History

Overview

履歴管理のテーブル設計。

履歴とは 1.単純に行為・出来事の事実を記録する履歴 2.元の行為・出来事が変更されるので、変更前の状態を記録する履歴 3.継続的な発生を前提にして、行為・出来事の事実を記録する履歴

注意事項

リレーショナルモデルは履歴データが苦手

リレーショナルモデルが苦手とするデータ構造の1つとして履歴データを上げている。

データ容量

履歴を持ったテーブルを扱うと、ディスク容量増加やレコードが増えることによるパフォーマンス低下が発生する。
そして、コーディングが複雑になるという問題もあるため履歴が必要不可欠なテーブルに限定します。
ただし、クラウドでの開発であれば容量もパフォーマンスもプロジェクト規模に合わせて変更できるため制御は可能なため、プログラムの複雑さも共通処理にまとめ緩和は可能。

履歴には2種類の考え方がある

(1)履歴を参照するテーブルの過去情報が、変更されるタイプ(商品名を変更したら過去のトランザクションテーブルの商品名も変更になる) (2)履歴を参照するテーブルの過去情報が、変更されないタイプ(商品名を変更しても過去のトランザクションテーブルの商品名は、取引した時の商品名のままにする) ※上記2つのアプローチの違いは、テーブル構造上は、小さな変更で対応可能です。

usersテーブルの各レコードに対してuser情報を持たせてしまうと、履歴更新のいの際に難しい。