2

リレーショナル データベースにテーブルの履歴/リビジョンを保持する最善の方法を見つけようとしています。

私はいくつかの調査と読書を行いましたが、変更を追跡するための最良の方法が何であるかはわかりません. 私の主なテーブルについては、追跡するためにリビジョン テーブルに落ち着いたと確信していますが (図を参照)、リレーション テーブルについてはよくわかりません。たぶん、変更を保持する監査証跡テーブルだけでしょうか?

以下のサンプル画像を見て、movies_has_actorsテーブルの履歴を保持する最良の方法は何ですか? リレーションが作成された時点でどの MOVIE Revision_id がアクティブであったかを知る必要があるため、2 つのメイン テーブル (映画、俳優) を単純に処理することはできません。また、どの USER がリレーションを追加したかを追跡したい場合はどうすればよいでしょうか (USER テーブルはサンプル画像にはありません)。リレーション テーブル自体にすべてを保持したくありません。それは、単に巨大になり、クエリが遅くなるからです...![代替テキスト][1]

要約すると、関係テーブルの履歴を保持する最良の方法は何ですか?

画像へのリンク: img115.imageshack.us/my.php?image=44623598nv1.jpg

[1]:イメージ

4

2 に答える 2

3

SQL Server 2008 では、MSDN の CDC (Change Data Capture) CDC と呼ばれる新機能が役に立ちます。CDC は、トリガーやその他のメカニズムを書き込むことなく、テーブル データへの変更を別のテーブルに記録する機能です。チェンジ データ キャプチャは、SQL サーバーのテーブルへの挿入、更新、削除などの変更を記録し、変更の詳細をリレーショナルで利用できるようにします。フォーマット。

Channel9 ビデオ - https://channel9.msdn.com/posts/ashishjaiman/CDC-Change-Data-Capture-SQL-Server-2008/

于 2009-02-02T15:02:26.000 に答える
0

監査テーブルは良い解決策だと思います。SQL Server 2008 を使用している場合は、Change Data Captureを確認してください。これは、自動変更追跡機能です。

于 2009-02-02T15:02:50.007 に答える