1

内部検査アプリ/調査を作成していますが、調査の質問が更新されたときに履歴データの整合性を維持する最善の方法がわかりません。たとえば、管理者が事前に決められた調査の質問を変更する場合、完了した調査の関連データが更新されることは望ましくありません。このようにして、監査が行われると、調査は元のように表示されます。SQL Server を使用しています。

私が自分で思いついたオプションは次のいずれかです

  1. 質問が更新されるたびに新しい「QuestionId」を作成し、既存の質問を非アクティブとしてマークします。
  2. または各「回答」とともに元の「質問」を保存する

以前にリレーショナル データベースでこのようなことをしたことがなく、チュートリアルを見つけるのに苦労しています.何か提案はありますか?

4

1 に答える 1

0


1) data_ID 2
) Data_Original_ID
レコードを作成するたびに Data_ID フィールドにデータが入力されますが、レコードを更新するまで Data_Original_ID は null のままです。
レコードが更新されるたびに、Data_Original_ID 列に元の ID が入力され、変更されません。
ただし、行が更新されるたびに新しい data_ID が割り当てられますが、Data_Original_ID はその値を保持します。 このビュー定義
のような最新のデータのみを表示するビューをユーザーに提供します

CREATE VIEW [dbo].[view_TableView] 
AS 
SELECT a.* FROM TableName AS a   
WHERE (a.Data_Original_ID IS NULL AND a.data_ID NOT IN (SELECT DISTINCT Data_Original_ID 
                                                        FROM TableName 
                                                        WHERE Data_Original_ID IS NOT NULL) 
OR a.data_ID = (SELECT MAX(data_ID) 
                FROM TableName
                WHERE Data_Original_ID = a.Data_Original_ID)
GO
于 2013-10-15T17:01:02.133 に答える