3

P現在、一連のレコードがあり、それぞれに一意のキーがあります。

Key1 value1
Key2 value2
Key3 value3

など、各値は実際には列のセットです。

これらのレコードを変更可能にし、変更履歴を監査ログとして記録する必要があります。

これを行う最善の方法は、次のように変更することだと考えてPいます

Key1 Rev1 value1
Key1 Rev2 value1a
Key2 Rev1 value2
Key2 Rev2 value2a

等々。特定のキーの最新のレコードには、常に最高のリビジョン マーカーがあります。

問題は、これにより、現在のレコードのみを期待するクエリの比較可能性が損なわれることです。Pのような名前に変更し、各キーの最高のリビジョン マーカーのみを選択PCompleteするビューPを作成し、リビジョン マーカーを省略して、元の table をエミュレートすることを考えていますP

私は主にSQLの専門家ではないので:

これは確かな技術ですか?Pベースビューの現在のキーごとに最新の(最大と呼ぶ)行を選択するように新しいビューを設計する最良の方法は何PBaseですか?

サイトポインタは大歓迎です。このタイプのソリューションのベスト プラクティスの方法を見つけるために、Google がどのような用語を使用しているのかわかりません。

注: これは Microsoft SQL Server 2008 R2 です。

4

2 に答える 2

0

次のようなアプローチで試すことができます。

  • PHistory という名前の別のテーブルを作成し、元のテーブルとまったく同じ列に加えて、リビジョン番号 (int) または更新日 (datetime) 用の列を 1 つ追加します。ID 列を主キーとして追加することもできます。

  • メイン テーブルで更新トリガーを使用して、メイン テーブルで更新が行われるたびに、すべての値を P テーブルから PHistorty テーブルにコピーします。

これにより、クエリを作成するときに物事がきれいになります。最新バージョンが必要な場合は常に P テーブルから選択し、リビジョンを確認したい場合は PHistorty から選択します。

于 2013-10-17T10:08:30.877 に答える