카테고리 없음

[SQL 서버] 다중 히스토리에 대한 테이블 구조

행복을전해요 2021. 1. 7. 06:43

"감사 테이블"을 생성하고 있습니다. 이를 수행하는 방법에는 여러 가지가 있습니다. 그중 몇 가지는 다음과 같습니다.

  1. 소스 테이블에서 관심이있는 모든 열에 대해 적절한 키 필드와 이전 / 이후 필드가있는 테이블을 타임 스탬프와 함께 생성하여 변경시기를 알 수 있습니다.

  2. 적절한 키 필드, 수정 타임 스탬프, 필드 이름 및 이전 / 이후 열이있는 테이블을 만듭니다.

방법 (1)에는 감사 테이블에 많은 필드 가 있다는 문제가 있습니다. 기본적으로 원본 테이블의 모든 필드에 대해 두 개입니다. 또한 소스 테이블의 필드가 하나 또는 두 개만 변경되면 감사 테이블의 대부분의 필드는 NULL이되어 공간을 낭비 할 수 있습니다 (데이터베이스에 따라 다름). 또한 감사 테이블을 처리하기 위해 돌아갈 때 어떤 필드가 변경되었는지 알아 내기 위해 많은 특수 목적 코드가 필요합니다.

방법 (2)에는 원본 테이블에서 변경된 각 필드에 대해 테이블에 별도의 행이 생성 되어 감사 테이블에 많은 행이 생성 될 수 있다는 문제가 있습니다 (각 필드에 대해 하나의 행이 변경됨). 각 필드 변경으로 인해 감사 테이블에 새 행이 기록되기 때문에 여러 행에 동일한 키 값이 있으므로 키에 대해서만 많은 공간을 사용할 수 있습니다.

감사 테이블의 구조에 관계없이이를 유지하기 위해 트리거를 사용하는 것이 일반적입니다.

이게 도움이 되길 바란다.



출처
https://stackoverflow.com/questions/2005873