문제

RDBMS, Oracle을 사용하여 새로운 데이터베이스를 설계하는 데 어려움이 있습니다.이 데이터베이스에는 여러 테이블에 걸쳐있을 수있는 특정 레코드 / 문서가 하나 있습니다.

가능한 한 적은 중복을 사용하면이 레코드의 변경 사항을 추적하고 해당 레코드의 변경된 사본을 만들 수있는 간단한 방법을 제공합니다.

document x에서 정확히 time t를 정확히 확인할 수 있기 때문에 텍스트의 변경 사항을 요약 할 수있는 기록 테이블을 원하지 않습니다.그러나 나는 모든 역사 항목에 대해 전체 복사본을 갖고 싶지 않습니다.

모범 사례 또는 패턴 이 작업을 수행하는 방법은 무엇입니까?

git를 모방하는 전략을 사용하여 이것을 해결하는 방법을 알 수 있지만, 나는 그 길을 가기 전에 먼저 의견을 제시했습니다.

도움이 되었습니까?

해결책

Oracle 12C 구체적 으로이 목적을 정확히 제공하는 "시간적 플래시 백 쿼리"라는 새로운 기능이 있습니다.(비슷한 기능은 다른 데이터베이스에서 DB2, SQL Server, Vertica에서 몇 가지 이름을 지정합니다.)

시간 쿼리를 사용하려면

  1. 문서를 나타내는 각 테이블에는 특정 레코드가 유효한 경우 시작 및 종료 날짜 (시간) 및
  2. 를 나타내는 날짜가 나타납니다.
  3. 이를 제자리에서 업데이트하지 않고 오히려 기록의 새로운 버전을 삽입하여 기록 기록의 종료일 만 업데이트하여
  4. 지정된 날짜에 활성화 된 레코드를 반환하는 SELECT whatever FROM mytable AS OF some_date와 매우 많이 보이는 테이블에 대한 쿼리를 발행 할 수 있습니다.

    여기에 자세한 설명 .

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 dba.stackexchange
scroll top