2012-07-17 3 views
0

테이블이 있는데, 예를 들어 orders (id, name, product, ...)이고 트리거를 작성하는 로그 테이블이 있습니다 :`orders_log (id, ts, order_id, name, product , ...)Mysql ManyToMany 관계 로그

ordersservice (ID, 이름, 가격, 웹 양식을 추가하거나 서비스를 삭제할 수 있습니다 축복하는, ...) 축복하는 테이블 orders_services (ORDER_ID, SERVICE_ID)

사용자를위한 ManyToMany 관계를 가지고 주문에 대해서는이 작업에 대한 로그를 저장하고 주문을 편집 할 때 사용자에게 표시해야합니다.

이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 나는 하나 이상의 manyToMany 관계를 가지고 있고, one to oneTo 관계는 orders 테이블을 가지고있다. mysql을 사용하고 있습니다. 감사합니다

답변

0

나는 트리거를 기반으로 시스템을 구현하려했지만 성가신 것을 발견하고 포기했습니다.

원본 필드와 트랜잭션 ID가 포함 된 섀도우 테이블의 행을 복사 한 저장 프로 시저를 기반으로 한 시스템에서 부분적으로 성공했습니다. 나는 date/user와 같은 정보와 관련된 트랜잭션 id를 가진 별도의 테이블을 유지했다. 이 시스템을 사용하여 작업 세트에 고유 한 트랜잭션 ID를 할당하고 나중에 이러한 섀도우 테이블을 쿼리 할 수있었습니다.

현재 자바로 작업 중입니다. 감사 로그는 클래스 이름이 들어있는 테이블, 객체의 ID를 식별하는 일부 위치, 날짜 + xml 텍스트에서 XStream을 사용하여 객체를 직렬화하여 구현됩니다. 나는 이것이 당신의 객체 모델과 함께 기록 된 정보가 커짐에 따라 감사 로그를위한 좋은 해결책이라고 생각한다. 후속 xml 간의 diff를 기반으로하는 변경 사항으로 보고서를 작성하는 것도 쉽습니다.

관련 문제