複数のテーブルをスパンするレコードへの変更を追跡する方法
-
28-09-2020 - |
質問
RDBMS、Oracleを使用して新しいデータベースを設計するという課題があります。このデータベースでは、複数のテーブルにまたがる可能性がある特定のレコード/文書が1つあります。
できるだけ重複しているので、このレコードに加えられた変更を追跡し、そのレコードの変更されたコピーを作成する簡単な方法を提供します。
テキストの変更を合計する history テーブルは、document x
を正確に検索する方法を正確に取得できます。しかし、私はすべての履歴エントリのどちらかのフルコピーを持っていません。
ベストプラクティスやパターンこれを達成する方法は?
time t
を模倣する戦略を使用してこれを解決する方法があるかもしれませんが、私がその道を行く前に最初に意見を望んでいました。
解決
Oracle 12Cでは、特に「Temporal Flashback Queries」という新しい機能があり、この目的に役立ちます。(他のデータベースには類似の機能があります.DB2、SQL Server、vertica、vertica、vertica)
時間的なクエリを有効にするには:
- 自分の文書を表す各テーブルには、特定のレコードが有効(アクティブ)、 がある場合の開始日と終了日(時間)を示す一対の日付があることを確認してください。
- 履歴レコードを更新しないことで、むしろ新しいバージョンのレコードを挿入して、履歴レコードの終了日だけを更新してください。
その後、SELECT whatever FROM mytable AS OF some_date
のように見えるテーブルに対してクエリを発行することができます。これは、指定された日付でアクティブになっていたレコードを返します。
所属していません dba.stackexchange