12.4 이력 관리 모델 유형

엔터티 하나로 현재와 과거 데이터 관리

  • 데이터 모델을 관리하기도 편하며 개발하기에도 편하고 데이터를 생성시키기도 편하다는 장점
  • 왼쪽 모델은 하위(자직) 엔터티를 가질 수 없으므로 모델의 확장성이 떨어진다.


하위(자식) 엔터티와 관계가 끊어진 릴레이션- 잘못된 경우


주문 이력 엔터티와 릴레이션 - 바른경우


엔터티 하나로 관리되는 경우

  • 이런 종류의 엔터티는 대부분 하위(자식) 엔터티와 참조 무결성(RI) 관계가 성립하지 않는다.
  • 엔터티에서 과거와 현재 데이터를 관리할 때는 엔터티명에 '~이력'을 시용하지 않는 것이 일반적이다
  • (과거의 데이터를 별도로 관리할 때만 엔터티명에 '~이력' 을붙인다 )


두 개의 엔터티에서 현재와 과거 데이터 별도로 관리

  • 보험계약 엔터티에 현재상태만 존재하므로 과거 내역을 같이보려면 UNION등의 비효율 발생


변경 속성을 별도의 엔터티로 관리

  • 계좌비밀번호 이력 엔터티에서는 과거의 비밀번호만을 관리한다.
  • 데이터 값은 중복되지 않더라도 데이터 모델의 속성 중복이 발생
  • 현재의 비밀번호가 거의 일방적으로 사용된다는 점에선는 바람직하다.

  • 특정 시점의 비밀번호가 무엇이었는지를 조회히는 요건이 있을때 유리
  • 변경일자 대신 시작일자,종료일자 속성(선분이력)으로 효율적으로 조회할수있다.


모든 변경 속성을 하나의 통합 엔터티로 관리

  • 코드컬럼은 속성코드와 속성명으로 데이터 일치 필요
  • 성능 문제 발생하면 snap shot방식을 이용.


유사한 변경 속성들을 묶어서 별도의 엔터티로 관리

  • 보험계약 이력을 날짜변경속성과 금액관련속성을 분리
  • 변경된 속성조회도 쉽고 모델의 확장성도 좋아진다.
  • 엔터티가 늘어나는 단점이 존재.


정리