본문 바로가기

데이터 Story/모델링 매뉴얼

실체 엔터티의 변경이력 엔터티 설계

원천 엔터티가 실체 엔터티일 때는 변경이력 데이터를 별도의 엔터티에서 관리하도록 설계한다.

 

[그림1고객실체 엔터티는 실체인 고객 데이터를 관리하는 실체 엔터티다.

 

[그림1]

 

만약 고객명 속성이나 전화번호 속성의 변경이력 데이터를 관리할 때, 고객은 실체이기 때문에 아래 모델처럼 별도의 엔터티에서 변경이력 데이터를 관리하도록 설계한다.

 

[그림2]

 

고객실체 엔터티의 속성 중에서 하나라도 변경되면, 그 시점의 고객실체 엔터티 인스턴스는 고객실체이력 엔터티로 이동한다.

 

고객실체이력 엔터티는 변경된 과거 데이터이므로 주로 사용되지 않으며, 필요 시에만 참고 용도로 사용하기 위해 보관하는 역할을 한다.

 

실체 엔터티는 실체에 대한 개별 인스턴스를 관리하는 엔터티다. 실체 엔터티에서 실체의 변경된 데이터까지 관리한다면, 이미 실체 자체를 의미하는 것이 아니라서 엔터티의 정의가 달라진다.

 

실체 엔터티에서는 실체의 존재 자체를 관리해야 하므로 실체 엔터티의 인스턴스 개수와 실제 실체의 개수가 같아지도록 관리하는 게 바람직하다.

 

없어진 실체에 대해서는 해당 인스턴스를 삭제하지 않기 때문에 인스턴스 개수와 현재 존재하는 실체의 개수가 달라질 수 있지만, 이를 감안해서 존재했던 실체의 개수와 엔터티의 인스턴스 개수는 일치해야 한다.

 

대부분의 데이터가 그렇지만 특히 실체를 관리하는 데이터는 현재의 최종 데이터를 주로 사용하기 때문에 변경된 과거 데이터를 함께 관리하지 않는다. 자주 사용하지 않는 데이터를 실체 엔터티에 포함시키는 것은 효율적이지 않다.

 

더구나 실체 엔터티는 하위 엔터티가 많기 때문에 실체 엔터티에 변경이력 엔터티를 포함시키면 하위 엔터티와의 관계 때문에 데이터를 관리하기 복잡해진다.

 

만약 실체 엔터티임에도 불구하고 변경이력 데이터를 최종 데이터와 함께 자주 사용하거나, 변경된 인스턴스에 대해서도 하위 인스턴스와 관계가 필요하다면 실체 엔터티에 변경이력 데이터를 포함시킬 수 있다.



'데이터 Story > 모델링 매뉴얼' 카테고리의 다른 글

개별 엔터티로 설계해야 하는 코드  (0) 2017.04.10
코드로 설계 or 엔터티로 설계  (0) 2017.04.07
관계 엔터티 설계  (2) 2017.03.09
배타 서브타입 설계  (0) 2017.02.16
실체 엔터티 설계  (0) 2016.12.29