우리는 우리가 스냅 샷 원하는 데이터를 포함 별도의 데이터베이스 테이블을 작성하여 한 번 이런 짓을하지만, 비정규, 즉 모든 기록은 없습니다 참조 수도 있고 수도 더 이상 존재하지 않는 아이디의를 이해하는 데 필요한 모든 데이터를 포함. 또한 각 행에 날짜를 추가했습니다.
그런 다음 영향을받은 모든 테이블에 대한 조인을 수행 한 특정 삽입 또는 업데이트에 대한 트리거를 생성하여 스냅 샷 테이블에 삽입했습니다.
이 방법을 사용하면 사용자의 데이터를 특정 시점으로 복원하는 내용을 작성하는 것이 쉽습니다.
당신은 테이블이있는 경우 :
사용자 :
id, firstname, lastname, department_id
부서 :
id, name, departmenthead_id
사용자 테이블의 스냅 샷은 다음과 같이 수 :
user_id, user_firstname, user_lastname, department_id, department_name, deparmenthead_id, deparmenthead_firstname, departmenthead_lastname, snapshot_date
그리고 뭔가를 쿼리 이케
INSERT INTO usersnapshot
SELECT user.id AS user_id, user.firstname AS user_firstname, user.lastname AS user_lastname,
department.id AS department_id, department.name AS department_name
departmenthead.id AS departmenthead_id, departmenthead.firstname AS departmenthead_firstname, departmenthead.lastname AS departmenthead_lastname,
GETDATE() AS snapshot_date
FROM user
INNER JOIN department ON user.department_id = department.id
INNER JOIN user departmenthead ON department.departmenthead_id = departmenthead.id
이 스냅 샷의 각 행을 보장 부서 또는 부서 헤드는 그 동안 변경된 경우에도, 시간에 그 순간 마찬가지입니다.
SQL Server 2005 또는 2008. 그러나이 유형의 문제에 대한 솔루션이 내장 된 다른 RDBMS가 있다면 그에 대해 듣고 싶습니다. Thx – saille