본문 바로가기

데이터 Story/모델링 이론

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

이력 엔터티를 설계하는 네 번째 방법입니다.


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

 

비밀번호가 계좌 비밀번호와 홈페이지 비밀번호, ARS 비밀번호가 존재하면 [그림1]과 같이 설계할 수 있는데요.


[그림1]


어떤 종류의 비밀번호가 더 생길지 모르니 정규화를 하면
[그림2] 엔터티와 같아질 것입니다.



[그림2]
 

[그림2]가 원천 데이터를 설계한 모델입니다.

 

마스터 엔터티인 계좌 엔터티에는 비밀번호 속성이 존재하지 않고요. 여러 비밀번호를 구분하기 위해 계좌비밀번호 엔터티에 비밀번호구분코드 속성이 필요하고요.

 

계좌비밀번호 엔터티에서 관리하는 데이터는 내역 데이터입니다.  그냥 쌓이는 데이터이니까요. 이 엔터티가 내역 데이터라는 건 어렵지 않죠.

 

그런데 바뀐 비밀번호를 엔터티로 어떻게 관리하느냐에 따라 두 가지로 나뉩니다. [그림2] 모델에서 계좌비밀번호이력 엔터티를 추가할 수 있고요. 다음에 설명할 다섯 번째 방법이고 이해하는 데 어렵지 않습니다.

 

나머지 하나가 지금 설명할 방법인데요. 모델 자체는 [그림3]과 같이 어렵지 않습니다. [그림2]의 원천 엔터티에 과거 데이터까지 고려한 모델입니다.

 

[그림3]

 

그런데 [그림3]의 계좌비밀번호 엔터티도 내역 데이터라는 게 다소 혼란스럽습니다(제가요). 계좌의 속성인 비밀번호가 별도의 엔터티에 계속 쌓이는 형식이니까요.

 

계좌비밀번호 엔터티의 입장에서 보면 비밀번호가 일자대로 쌓이는 것이지 변경되는 것은 아니어서 저는 내역 엔터티로 봅니다. 변경 이력 엔터티에서 보이는 업데이트도 없고요.

 

제가 지속적으로 설명했지만 이렇게 구분하는 게 의미가 있습니다. 저도 헷갈릴 때가 있지만 90% 이상은 엔터티가 정확하게 도출됩니다.

 

별도의 한 엔터티에서 현재+과거 데이터를 통합해서 관리하는 방법으로 과거의 데이터만을 관리하는 것이 아니므로 엔터티명에 ‘~이력’이란 단어를 사용하지 않았습니다.

 

[그림3] 모델은 현재의 비밀번호를 조회하기가 다소 불편합니다.

 

비밀번호는 자주 사용되는 속성이라 실무에서는 주로 현재의 비밀번호를 바로 알 수 있도록 설계합니다. 이전에 설명한 세 번째 방법과 다음에 설명할 다섯 번째 방법으로요.

 

자주 사용되지 않는 속성을 대상으로 이 방법을 사용하면 좋습니다. 마스터 엔터티인 계좌 엔터티에도 영향을 미치지 않고, 별도의 이력 엔터티를 관리할 필요가 없어서 편합니다(엔터티 개수가 많아진다는 것은 좋지 않다는 점을 항상 염두에 두어야 합니다).