이전 변경 사항을 추적하려면 프로젝트에서 히스토리 기능을 설정해야합니다.
지금 두 개의 테이블이 있다고 가정 해 봅시다.
NOTES TABLE (id, userid, submissionid, message)
SUBMISSIONS TABLE (id, name, userid, filepath)
예 : 메모에 행이 있고 사용자가 메시지를 변경하려고합니다. 변경 전과 변경 후의 상태를 추적하고 싶습니다.
이러한 각 테이블에 항목을 “오래 한”경우 열을 설정하는 가장 좋은 방법은 무엇입니까? 활성화 된 경우 0 또는 삭제 / 보이지 않는 경우 1
또한 이전 상태, 새 상태,이 ID와 관련된 AUDIT TRAIL
테이블을 보유 하는 기록 ( ) 테이블 을 만들고 싶습니다 .id
id
답변
보시기 바랍니다
http://www.codeproject.com/Articles/105768/Audit-Trail-Tracing-Data-Changes-in-Database
데이터베이스 디자인에서 감사 추적을 작성하는 방법에 대해 잘 읽어보십시오. 데이터베이스를 구현하려면 감사 추적이 필요합니다. 항상 시스템 내에서 데이터베이스 사용자의 조치를 볼 수 있어야합니다.
표준 PTA (point in time) 열을 모든 PTA 관심 테이블에 추가하여 PTA (Point in Time) 시스템에서 변경된 행을 추적 할 수 있습니다.
나는 다음을 제안한다.
DateCreated – the actual date on which the given row was inserted.
DateEffective – the date on which the given row became effective.
DateEnd – the date on which the given row ceased to be effective.
DateReplaced – the date on which the given row was replaced by another row.
OperatorCode – the unique identifier of the person (or system) that created the row.
답변
데이터에서 버전 관리 기능을 설계 할 때 몇 가지 최소한의 요구 사항이 있습니다.
- 각 버전의 데이터는 독립적이며 다른 버전과 독립적이어야합니다. 이것은 현재 버전과 “기록”을 나타내는 플래그 또는 기타 표시기가 없음을 의미합니다. 또한 엔티티를 업데이트한다는 것은 이전 버전을 업데이트 할 필요없이 새 버전 만 삽입하는 것을 의미합니다.
- 내가 행 스패닝 종속성이라고 부르는 것을 피하십시오. 그것이 행의 한 필드 (End_Date)가 다른 행의 다른 필드 (Start_Date)와 동기화되어 있어야하는 곳입니다. 이로 인해 데이터 작업이 더욱 어려워지고 예외적 인 원인이됩니다.
- 현재 버전과 모든 이전 버전은 동일한 테이블에 있어야합니다. 따라서 동일한 쿼리를 사용하여 특정 날짜를 기준으로 과거 데이터를보고 현재 데이터를 볼 수 있습니다.
- 버전이 지정된 데이터의 외래 키는 일반 (버전이없는) 데이터와 동일하게 작동해야합니다.
- 새로운 개발자를위한 학습 곡선이 최소화되도록 디자인은 매우 단순하거나 보편적으로 이해되어야합니다.
다음 은 기술 박람회에서 몇 차례 발표 한 프레젠테이션 슬라이드입니다. 위의 모든 작업을 수행하는 방법을 설명합니다. 더 자세한 내용은 다음 과 같습니다 . 문서에 대해 사과해야합니다. 문서가 진행 중이며 모든 섹션이 완료되지 않았습니다. 그러나 간단한 버전 관리에서 전체 이중 시간 액세스에 이르기까지 모든 것을 구현하는 데 필요한 모든 정보를 제공해야합니다.