이력 데이터란?
이력관리
이미 존재하는 인스턴스의 속성 값이 변할 때 기존 값(이력/스냅샷 데이터)를 관리하는 것
이력/내역
이력 | 내역 |
---|
변경되는 데이터(변경이력) | 발생하는 데이터(발생내역) |
UPDATE 수반 | INSERT 수반 |
계약이력, 주문이력 | 주문내역, 거래내역, 로그인기록 |
※ 이력/내역 데이터 판단 기준 : 업무나 데이터 성격이 아니라 데이터 자체가 변경되는지 여부
이력/내역 모델
내역 데이터를 관리하는 모델 | | 보안카드 발급시 마다 보안카드 엔터티에 데이터가 생성되므로 내역 엔터티 |
---|
이력 데이터를 관리하는 모델 | | 보안카드 재발급시 고객 엔터티의 관련된 변경 이전 데이터를 보안카드이력 엔터티에 생성하므로 이력 엔터티, 보안카드이력 엔터티에 현재 시점 데이터를 중복 관리할 수 있음(비정규화) |
---|
내역 데이터에 대한 이력 데이터를 관리하는 모델 | | 데이터 성격을 명확하게 정의한 바람직한 모델, 실체 엔터티는 현재 상태의 데이터만을 관리하려는 경향이 있음 |
---|
이력 데이터로 관리할지에 대한 판단
- 데이터를 무조건 통합하려는 것과 같은 경향이 이력 관리에도 존재
- 이력 데이터의 필요성과, 관리 수준에 대한 명확한 판단 필요
- 대부분 업무에서 이력 데이터를 보관하는 것은 중요 함
- 예) 고객의 현재 보험료와 구성 상품 같은 현재 상태 뿐 아니라, 과거 특정 시점의 상태와 미래 임의 시점의 정보가 필요 하기도 함.
이력 데이터 관리 여부 판단 시점
- 핵심 엔터티를 도출하는 개념 모델링 단계에서 시작 (필자, 이력 관리 대상 여부 결정)
- 이력 데이터 고려 이전에 본질 데이터가 먼저 확고해져야 하나, 물리 모델링 단계에서 고려시 모델 구조가 바뀔 수 있어 바람직 하지 않음 (다른 엔터티가 영향을 받는 등)
- 이력 관리 방법, 이력 엔터티의 주 식별자 등 상세한 방법은 논리 모델링에서 결정
이력 데이터 관리 선정 기준
- 데이터가 시간의 흐름에 따라 변할 수 있는가? (변해야 함)
- 특정 데이터의 과거 상태를 추적할 필요가 있는가? (있어야 함)
- 없더라도 시간의 흐름에 따라 데이터가 변할 수 있다면 이력을 관리할 수 있는 모델 고려
- 가급적 중요 엔터티는 이력 데이터 관리 요건이 생길 것을 대비