권순용의 데이터모델링 이야기
이력 관리 엔티티 설계를 확인하자 0 0 99,999+

by axiom 엔티티 Entity 이력관리 [2014.05.11]


정보화 시스템을 구축하면서 지금은 많은 사이트들이 데이터 모델에 대해 매우 중요하게 생각하고 있다. 이는 정보화 시대가 가속화되면서 데이터와 데이터베이스의 중요성이 높아진 결과로 풀이된다. 데이터의 증가와 업무의 복잡도 심화는 이와 같은 데이터 모델의 중요성을 더욱 높이게 될 것이다.

이번 강의에서는 데이터 모델링을 수행하는 과정에서 자주 등장하는 이력 관리에 대해 확인해 보자.

이력 관리는 시작일자와 종료일자라는 2개의 속성을 기준으로 구성하게 된다.

이력 데이터의 개념

시대가 변하면서 데이터는 증가하게 된다. 그 중에서도 이력 데이터의 증가는 상상을 초월하는 속도로 이뤄지고 있다. 이와 같은 이력 데이터에 대한 관리는 지금도 많은 관심을 가지게 하는 항목이다. 그렇기 때문에 데이터 모델링부터 이력 데이터에 대한 관리 방안을 제시해야 할 것이다.

  • [그림1] 이력 엔티티의 이해
  • 이력 엔티티의 이해

이력 데이터의 종류

이력 엔티티(Entity)는 3개로 구성되며 공통점은 부모 엔티티와는 1:M의 관계를 가진다는 것이다. 각각의 경우에 대해 주의사항을 확인해 보자.

  • [그림2] 이력 엔티티의 구성
  • 이력 엔티티의 구성

변경이력

변경이력은 거래에 대한 변경 등에서 발생하는 이력이다. 이와 같은 변경 이력은 최신 데이터를 위주로 데이터를 추출하거나 Unique Identifier 단위로 처리된다.

그렇기 때문에 [그림2]의 예제의 경우 승인번호+변경일자 인덱스가 존재한다면 성능을 보장받으며 최신 데이터를 추출할 수 있을 것이다.

발생이력

정기적으로 발생하는 데이터를 발생이력이라고 한다. 발생이력 엔티티 또한 최신 데이터를 위주로 데이터를 추출하거나 Unique Identifier 단위로 처리된다.

그렇기 때문에 [그림2]의 예제의 경우 고객번호+납부일자+상품번호 인덱스가 존재한다면 성능을 보장받으며 최신 데이터를 추출할 수 있다.

진행이력

진행이력은 어떤 데이터가 현재까지 계속 진행하고 있는 경우다. 이와 같은 진행이력 데이터는 시작일자 속성과 종료일자 속성을 관리해야만 한다. 이와 같이 시작일자 속성과 종료일자 속성을 관리하지 않는다면 문제가 발생하게 된다.

이력 데이터의 고려사항

[그림 3]의 예제는 진행이력 속성에서 종료일자를 관리하지 않는 경우다. 이와 같다면 가장 먼저 종료일자인 ENDDATE 속성을 만드는 작업을 수행해야 한다.

  • [그림3] 종료일자를 관리하지 않는 경우
  • 종료일자를 관리하지 않는 경우

이와 같이 이력 엔티티에서 ENDDATE 속성을 만들기 위해서는 여러 가지 방법을 고려할 수 있으며 [그림 4]의 경우에는 분석 함수를 사용했다. 이와 같이 분석함수를 사용해 ENDDATE 속성을 만들 수 있다.

  • [그림4] ENDDATE 속성을 위한 예제
  • ENDDATE 속성을 위한 예제

결국 [그림 5]의 SQL은 ENDDATE 속성이 존재하지 않아 분석함수를 사용해 PHONE_NUM 값이 '111111'인 데이터의 값을 추출했으며 해당 값을 이용해 ‘20070225’인 일자에서의 PHONE_NUM 값이 ‘111111’인 Data의 상태를 추출하는 SQL이다. 해당 진행이력 엔티티에 종료일자인 ENDDATE 속성이 존재했다면 어떻게 되겠는가?

  • [그림5] 분석함수 이용 예제 SQL
  • 분석함수 이용 예제 SQL

이처럼 이력관리에서는 종료일자에 대한 속성에 의해 많은 영향을 받을 수 있게 된다.

- 강좌 URL : http://www.gurubee.net/lecture/2750

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입