Xupper技術サポート部のページ

弊社開発手法やXupper(クロスアッパー)の活用法等について、ご説明させていただきます。

マスタの履歴管理パターン(その1)

2006年10月02日 | データモデルパターン

久しぶりにデータモデルの話題です。

ここでは、マスタの履歴管理について、いくつかのパターンを挙げて説明したいと思います。

■履歴保存用のエンティティを追加し管理(パターン1)
商品エンティティのキーに適用開始年月日を保持し、変更があったタイミングでレコードを追加することにより商品の変更履歴を管理します。


【図1】

①ある1レコードについて、ある時点の全ての属性の値を、履歴として管理することになります。
②参照するトランザクション(受注明細)に履歴(商品履歴)の識別子を持たないため、履歴情報が存在する状態で、過去のマスタ情報を参照するためには、受注.受注日と商品履歴.変更日付で検索する等が必要となります。 

■履歴保存用のエンティティを追加し管理(パターン2)
パターン1のバリエーションですが、履歴管理用のエンティティのキーを「履歴管理用SEQ」とします。


【図2】

この場合は、参照するトランザクション(受注明細)に履歴(商品履歴)の識別子を持たないため、履歴情報が存在する状態で、過去のマスタ情報を参照するためには、受注.受注日と商品履歴.変更日付で検索する等が必要となります。

■履歴情報を同一エンティティで管理(パターン3)
同一エンティティ内で履歴管理を行うために、キーに商品コードとは別に変更日付(適用開始日)を持たせます。


【図3】

カレント情報を参照するためにも、受注.受注日と商品.適用開始日で検索する等が必要となります。

■履歴情報を同一エンティティで管理(パターン4)
同一エンティティ内で履歴管理を行うために、自己参照の関係を定義し、変更前のレコードの参照キーを属性として保持します。


【図4】

①変更前と変更後の商品コードが別コードとなります。
②最初の情報を取得するためには、変更後の商品コードが入っていないレコードまで遡ってレコードを特定する必要があります。

次の記事に続く・・・) 

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ビジネスフロー図で参照して... | トップ | マスタの履歴管理パターン(... »
最新の画像もっと見る

コメントを投稿

データモデルパターン」カテゴリの最新記事