본문 바로가기

데이터 Story/모델링 이론

이력 엔터티를 설계하는 10가지 방법 – 다섯 번째

이력 엔터티를 설계하는 다섯 번째 방법은 간단합니다. 앞의 두 방법의 혼합입니다.


-마스터에 해당 속성이 존재해 현재 데이터를 관리하고 이력 데이터는 별도의 엔터티에서 관리
-마스터에 해당 속성이 존재하지 않고 별도의 한 엔터티에서 현재+과거 데이터를 통합해서 관리
-마스터에 해당 속성이 존재하지 않고 별도의 두 엔터티에서 현재와 과거 데이터를 개별로 관리

 

[그림1]과 같이 현재 비밀번호를 관리하는 엔터티가 있고, 변경된 과거 비밀번호를 관리하는 엔터티가 있습니다.


[그림1]

 

이 모델에서 계좌비밀번호 엔터티는 발생 내역을 관리하는(발생일자 존재) 엔터티이고, 계좌비밀번호이력 엔터티는 변경 이력을 관리하는(변경일자 존재) 엔터티입니다.

 

최초에 발생한 비밀번호를 관리하는 계좌비밀번호 엔터티는 계속 업데이트되고요. 변경 시점에 이전 비밀번호는 계좌비밀번호이력 엔터티에 인서트됩니다.

 

계좌비밀번호이력 엔터티는 변경된 과거 데이터만을 관리하므로 엔터티명에 ‘~이력’이 붙었습니다. 이미 계좌비밀번호 엔터티가 있으니 더욱 적절하고요.

 

이 방법은 현재와 과거 데이터를 분리하는 세 번째 방법과 개념적으로 유사합니다. 그렇지만 계좌 비밀번호는 업무에서 많이 사용된다는 점에서 계좌 엔터티에 포함되는 모델(세 번째 모델)이 더 현실적입니다. 보안 때문에 엔터티를 분리해야 된다면 [그림1] 모델처럼 사용해야 하겠고요.

 

현재와 과거 데이터를 같이 관리하는 네 번째 방법에 비해 엔터티가 하나 늘어서 관리하기 상대적으로 어려워지고요.

 

데이터를 성격에 따라 분리했으므로, 즉 비밀번호라는 데이터를 별도의 엔터티에서, 과거와 현재로 분리해서 관리하므로 데이터 성격은 가장 명확해집니다. 지금까지 설명드린 방법에 비해 확장성이 좋아진다는 것을 의미합니다.

 

엔터티의 성격이 명확해지면 모델을 보고 업무를 파악하기 더욱 쉬워지고 커뮤니케이션에 많은 도움을 준다는 장점이 부가적으로 존재합니다.

 

반면에 속성의 명확한 정의가 선행돼야 하므로(속성별로 원천·이력 데이터를 분석하고 설계해야 하므로) 모델러에게는 힘든 방법입니다. 모델링 기간도 늘어나고요.

 

별도의 엔터티에서 하나의 속성 값 데이터를 관리한다는 것은 해당 데이터가 그만큼 중요하다는 것을 의미합니다. 데이터가 중요하게 자주 사용될 때 고려해야 합니다. 중요하지 않은 요건에 남발하면 속성별로 하나의 이력 엔터티가 생길 수 있어 꼭 필요하다고 판단될 때만 적용해야 합니다.

 

이상으로 변경된 하나의 속성만을 설계하는 방법(세 번째, 네 번째, 다섯 번째)까지 설명했습니다.