기록이 힘이다.

[모델링 노트] 06. 이력데이터 본문

IT서적

[모델링 노트] 06. 이력데이터

dev22 2023. 12. 26. 19:33
728x90

주요 엔터티는 개념 모델링 단계에서 이력 엔터티를 고려하는 것이 현실적으로 효율적이다. 원천 데이터를 먼저 명확하게 설계해야 한다는 점을 염두에 두어야 한다. 이는 마치 정규화를 한 후에 비정규화를 하는 것과 같은 이치다. 

 

 실무에서 주로 사용하는 방법으로 논리 모델링이 끝난 이후나 물리 모델링 기간에 이력 데이터를 설계하는 것이다.  필자는 이 방법을 사용하지 않는데, 이럭 데이터 관리 방법에 따라 모델 구조가 바뀔 수 있기 때문이다.

 

또 한가지 중요하게 고려할 점은 모델링 기간이다. 본질 데이터를 먼저 정의하고 이력 데이터를 나중에 정의하는 프로세스는 시간이 오래 걸린다.

 

이력데이터를 설계하는 두 가지 방법은 이력 데이터를 별도의 엔터티에서 관리하는 방법이 있으며, 이력 데이터와 원천 데이터를 함께 관리하는 방법이 있다.

 

이력 데이터를 설계하는  방법

- 엔터티 단위 : 특정 시점의 전체 속성 값을 조회하는 요건이 많을 때 사용, 속성 값만 조회 어려움, 특정 시점의 전체 속성 값 조회

- 속성 단위 : 변경된 속성의 데이터만을 별도로 관리하는 방법, 저장 공간이 가장 절약, 특정한 시점 알기 어려움

- 속성 그룹 단위 : 엔터티의 성격이 분명해지는 장점이 있어 요건에 따라서는 가장 효율적인 방법

 

이력 데이터를 설계하는 첫 번째 방법

- 엔터티 단위 방법은 실체 엔터티와 기준엔터티, 행위 엔터티로 나눠서 설명할 수 있다. 

 

실체 엔터티 방법은 원천 데이터와 변경데이터가 같이 사용될 일이 드물 때 사용한다. 

 

계좌 - 계좌이력

 

그리고 이 방법은 하위 엔터티가 하나라도 존재한다면 사용할 수밖에 없다. 끼치는 영향을 최소화하는 것이다. 

데이터의 중복이 심하게 발생하므로 원칙적으로 사용을 지양해야 한다. 단순이 편이성을 위해 사용하는 것은 바람직하지 않다.

 

기준 엔터티 방법은 현재와 과거 데이터가 자연스럽게 분리된다. 

 

환율 - 환율이력

 

행위 엔터티는 종속 관계가 존재하는 엔터티가 많다. 이 경우 이력 데이터도 원천데이터와 마찬가지로 관계로 연결 되야 한다. 그래야 이력 엔터티 간에도 관계가 제대로 관리된다. 

 

주문 - 주문상품 -주문상품이력

주문 -주문상품 / 주문 - 주문이력

 

설계하기가 쉽지만 데이터 중복이 심해 데이터 저장 공간이 많이 소비된다. 

 

이력 데이터를 설계하는 두 번째 방법

- 하나의 엔터티에 원천 데이터와 변경 데이터를 함께 관리하는 것이다. 이 방법은 실체 엔터티와 기준 엔터티에서 간혹 사용된다. 행위 엔터티에서는 거의 사용되지 않는다.

 

하나의 엔터티에서 원천 데이터와 변경 데이터를 같이 관리하는 주요한 이유는 변경 데이터에 대한 사용 빈도가 높기 때문이다. 

 

이력 데이터를 설계하는 세 번째 방법

속상 단위로 이력 데이터를 설계하는 방법, 변경 데이터를 별도의 엔터티에서 관리하는 방법과 변경 데이터를 원천 데이터와 함께 관리하는 방법이 있다.

 

계좌 - 계좌비밀번호이력

계좌 - 계좌비밀번호 - 계좌비밀번호이력

 

모델링을 정밀하게 해야 해서 모델링하기 어려울 수 있다. 요건부터 정밀하게 분석해야 해서 시간이 오래 걸린다. 중요하게 자주 사용될 때 고려해야 한다.

 

이력 데이터를 설계하는 네 번째 방법

특정 속성의 원천 데이터를 별도의 엔터티에서 관리하면서, 변경 데이터와 원천 데이터를 함께 관리하는 방법이다. 이 방법은 설계할 때 혼란스러울 수 있어 주의해야 한다. 

계좌 - 계좌비밀번호

계좌비밀번호 엔터테이서는 현재 유효한 비밀번호와 변경된 지난 비밀번호를 같이 관리한다. 

 

속성 단위의 이력 모델과 추출 속성

속성 그룹 단위로 이력 데이터를 설계하는 예제

속성별로 하나의 엔터티에서 관리하는 방법은 엔터티가 늘어나는 단점이 있지만, 이 방법은 엔터티도 많이 늘어나지 않는다. 모델로 업무 파악하기에도 비교적 좋아 적절하게 사용하면 효율적인 모델이 된다. 반면에 명확한 기준 없이 속성을 묶으면 원천 엔터티나 이력 엔터티의 성격이 혼란스러워질 수 있다. 성격이 유사하거나 같이 사용하는 속성을 묶어야 한다.

 

이력 데이터를 설계하는 다섯 번째 방법

설계하기 가장 쉬운 방법이다. 하지만 정형화돼서 표면적으로 쉬워 보일 뿐 데이터를 제대로 관리하기는 쉽지 않다.

 

원천 엔터티에서 변경된 속성을 종 테이블 형식의 별도 엔터티에서 통합 관리하는 것이 이 방법의 특징이다.