2011-02-16 11 views
1

현재 저는 여러 항목을 관리해야하는 큰 관리 시스템 (Zend Framework를 사용하는 PHP에서이 질문에 대한 해결책을 찾지 못했습니다)을 수행하고 있습니다. 각 엔트리는 (단일 외래 키를 통해) 일대 다 관계로 2 개의 테이블에 걸쳐 많은 필드와 스팬을 갖는다. 첫 번째 테이블에는 대략 50 개의 필드가 있고 두 번째 테이블에는 30 개의 필드가 있습니다.데이터베이스 항목 수정 내역

이제 사용자 (및 일부 자동화 된 작업)가 작성한 여러 가지 수정 사항에 대한 내역 추적을 구현하는 단계에 있습니다. 각 항목은 부분적으로 또는 전체적으로 이전 값으로 롤백 될 수 있습니다.

CMS Typo3에있는 것과 비슷한 시스템을 사용하려고 생각했습니다. 한 표는

  • entry_table
  • last_modifcation_timestamp
  • last_modification_user entry_id history_id

    • 다음 필드 전체 역사를 관리 할 수 ​​
    • 데이터

    데이터는 "직렬화 될 것이다 "json 또는 xml 형식입니다.

    이 방법을 통해 우려되는 사항은 초과 근무로 인해 기록 테이블의 내용이 기하 급수적으로 증가한다는 것입니다. 이 문제를 극복하기 위해 필자는 매년이 기록을 관리하고 사용자에게 몇 년 전의 기록 데이터를 표시 할 수있는 새로운 데이터베이스를 만들 수 있다고 생각했습니다.

    이 솔루션을 개선하고 구현을 쉽게하는 방법에 대한 조언을 찾고 있습니다. 나를 도울 수있는 조언이나 문서는 환영 할 것입니다.

  • +0

    이전 데이터를 직렬화 할 뿐이고 최신 버전의 데이터가 다른 테이블에 있다고 가정합니까? – Chris

    +0

    @Chris : 예, 저는 (이 프로젝트에서 더 이상 일하고 있지 않았습니다). 가장 최신의 데이터는 원래 테이블에있는 데이터입니다. 시간이 지남에 따라 많은 필드가 변경된 경우에만 부분적인 히스토리를 제공하는 히스토리와 스키마 차이가있을 수 있습니다. –

    +0

    빌드하는 일부 웹 응용 프로그램에서 히스토리 추적/변경을 구현하는 방법을 고려하고 있습니다 (PHP/Zend 프레임 워크). 나는이 아이디어가 흥미 롭다고 생각한다. 궁금한데 복합 재료 ID를 어떻게 처리 했습니까? 복합 ID가있는 표가 하나 있지만 대리 ID 또는 인공 지능 ID를 쉽게 부여 할 수 있습니다. – jmbertucci

    답변

    1

    임계 값을 추가하고 특정 기간보다 오래된 모든 항목을 외부 파일에 제거하거나 덤프합니다.

    관련 문제