이력 데이터 설계

장우솔·2024년 6월 12일
0

데이터베이스

목록 보기
3/7

이력데이터 정의 및 용도

이력데이터란?

원천 데이터가 변경되기 전 과거 데이터, 원천 데이터에 종속되어있다. (변경이력, 유효하지 않은 데이터)

  • 필요성 : 과거 상태를 추적할 필요가 있기 때문

  • 기준 : 주 식별자에 종속된 속성값이 바뀌면 이력 데이터가 생긴다.

Ex) 주문 수량이나 배송지를 수정한다고 주문번호를 새로 생성하지 않고 이력으로 보고 쌓아둔다. -> 이력 데이터를 별도로 관리한다.

원천 데이터와 이력 데이터를 같이 관리할 땐?

단점 :
어떤 인스턴스가 원천 데이터인지, 변경이력 데이터인지 알 수 없다. 대부분 내역으로 생각해 오용의 소지가 있다.

-> 해당 엔터티가 원천 데이터인지를 먼저 판단해야한다.

- 새로운 주 식별자 값을 생성하면서 데이터를 쌓는 것은 ‘발생내역’이다.
- 주 식별자가 기준이 돼서 주 식별자는 변경되지 않고, 속한 속성값이 변경되는지 판단한다. 

내역데이터란?
예전에 쌓인 데이터지만 변경되지 않음(발생내역)

-Ex) 학력, 졸업년도에 따라 생성된 데이터일 뿐 변경된 데이터는 아니기 때문에 이력 데이터는 아니다. 대체로 가장 최신 데이터를 확인할 수 있다.

-> 변경에 대한 이력 데이터를 설계해야 한다면 ‘변경일자’를 추가한 이력 엔터티를 설계할 수는 있다. 이력과 내역을 한 엔터티에서 동시에 관리하면 어떤 데이터가 유효한지 혼란스러워 바람직하지 않다.

정정데이터란?
실수를 발견했거나 잘못 입력해 수정한 데이터(잘못된 데이터)

관리방법
1. 기존 데이터를 정정해야 하는 데이터로 업데이트 : 정정에 대한 이력관리 하지 않기
2. 정정 엔터티에서 정정된 데이터만 관리하여 이전 데이터를 참고용으로 관리하기
3. 하나의 엔터티에서 변경이력 데이터 관리하면서, 정정 데이터도 함께 관리 + 변경구분코드 속성 추가, 필요하다면 정정일자 속성 추가

-> 정정 데이터와 함께 조회해야 하는 요구 빈번할 때 사용하기 좋다. 데이터 왜곡이 발생하지 않는 장점이 있다.




정정 데이터 예시)







이력데이터 설계 시점

1. 원천 엔터티와 동시에 이력 엔터티 설계

개념 모델링 단계에서 원천 데이터를 설계할 때 이력 엔터티도 고려(검토) 시작한 후, 이력 엔터티는 논리 모델링 단계에서 설계한다.

  • 장점 : 이력 데이터 설계 탓에 원천 엔터티가 받는 영향을 사전에 최소화할 수 있다.
  • 단점 : 원천 데이터 정의되는 시점에 이력 데이터 관리 방안 동시에 생각하기에 원천과 이력 데이터가 뒤범벅일 수가 있다.
    원천 데이터를 먼저 명확하게 설계해야한다.

2. 원천 엔터티 설계 끝난 시점인 논리 모델링 끝난 후 or 물리 모델링 시점

  • 장점 : 본질 데이터 먼저 완전하게 설계한 이후 이력 데이터 고려하기에 본질에 집중할 수 있다.

  • 단점

  1. 이력 데이터 관리 방법에 따라 모델 구조가 바뀔 수 있다. 이런 현상은 내역과 이력을 명확히 구분하지 않은 상태에서 발생한다.
  2. 모델링 기간 늘어남 : 원천 먼저 정의하고 이력 데이터 나중에 정의하는 프로세스는 시간이 오래 걸린다.







이력데이터 설계 방법

<엔터티 성격, 업무요건, 중요도에 맞춰 적절한 방법 사용>

함께 변경된 속성 알아야할 때

‘변경순번’ 속성 값을 만들어 동시에 변경된 속성값을 파악한다.
이처럼 데이터를 관리한다면 변경일자 속성은 주 식별자에 포함될 필요가 없다.

Ex) 판매전표 작성 시 전표 묶음 기준이 ‘거래처코드, 출하창고, 거래유형, 판매일자’였지만, 또다른 기준으로 전표를 업로드 하려면, ‘순번’을 사용해 동일한 전표로 인지시켜주는 것과 같다.

과거 특정 시점 데이터를 조회하는 요건이 많을 때 조회 성능을 높이는 방법

선분이력 사용
: 데이터가 유효한 시작 시점과 종료 시점을 관리하는 방법

<종료일자 사용하는 데 문제점>

  1. 이력데이터를 설계하기 위한 추출속성이라 성능을 향상시키기 위한 속성이지 본질적인 속성은 아니다. 새로운 인스턴스의 시작점을 참조해 이전 인스턴스의 종료시점을 계산해 업데이트 해야한다.

  2. 시작일자와 종료일자를 연결해 선분이 되지 않는다면 데이터 무결성이 깨질 수 있다.

  3. 유효종료일자 속성이 추가되면서 용량을 더 차지하게 된다.







이력데이터 설계 절차

원천 엔터티를 명확하게 설계했다는 가정하에,

  • 이력 관리 요건분석 : 원천 데이터를 변경할 때 변경된 데이터를 저장해야 하는지를 분석

  • 이력관리유형 선택 : 본질 엔터티를 정확히 설계한 후 관리유형 중 하나를 선택

  • 선분이력요건 : 성능을 고려

  • 이력엔터티 주식별자 : 다른 엔터티와의 관계까지 감안해서 결정

profile
공부한 것들을 정리하는 블로그

0개의 댓글