2013-10-15 2 views
1

내부 검사 앱/설문 조사를 만들고 설문 조사 질문이 업데이트되었을 때 과거 데이터 무결성을 유지하는 가장 좋은 방법이 무엇인지 확신하지 못합니다. 예를 들어, 관리자가 사전 설문 조사 질문을 수정하기 위해 들어가면 완성 된 설문 조사에서 관련 데이터를 업데이트하지 않기를 바랍니다. 이렇게하면 감사가 끝나면 설문은 원래대로 보입니다. SQL Server를 사용하고 있습니다. 설문 조사 데이터베이스에서 데이터 무결성을 유지하는 가장 좋은 방법

필자는 내 자신에 가지고 올 수있는 옵션

질문이 업데이트되는 새로운 "QuestionId"때마다 생성 및 비활성 기존 질문을 표시하거나

  1. 있습니다.
  2. 각 "대답은"나는 관계형 데이터베이스 전에이 같은 일을하지 않은

와 함께 원래의 "문제"를 저장하고 튜토리얼을 찾는 데 문제가 있어요 .. 어떤 제안? 나는 두 개의 열,
1) DATA_ID
2) Data_Original_ID
당신이에 Data_ID 필드가 채워됩니다 기록을 만들 수 있지만 기록을 업데이트 할 때까지 Data_Original_ID가 null 남아있는 모든 시간을 추가 할

+0

같은 최신 데이터 뭔가를 볼 수있는 사용자에게보기를주십시오. 결국 "이전"질문에 대한 참조를 새로운 값으로 업데이트 할 때 저장할 수 있으며 "버전 번호"를 늘리면 나중에 질문 기록을 더 쉽게 검색 할 수 있지만 물론 데이터베이스의 디자인에 따라 달라집니다. –

답변

0

나는 같은 것을 할 것입니다.
레코드가 업데이트 될 때 Data_Original_ID 열에 원래 ID가 채워지고 변경되지 않습니다.
그러나 행이 업데이트 될 때마다 새 data_ID가 할당되지만 Data_Original_ID는 해당 값을 유지합니다.
내가 당신의 옵션 1 좋은 생각과 같은 말을이
보기 정의

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 
+0

좋습니다 기본적으로 제안 된 것과 비슷한 것을했습니다. 각 항목의 버전 관리를 구현합니다. – user2883390

관련 문제