DATOR


21. 이력이란 기본 카테고리


개체 엔티티를 이야기를 하다가 갑자기 왠 이력?  이럴 수 있겠지요.

 

이력은 무엇이고

어떤 엔티티가 이력엔티티를 자식을 가질까요?

 

이력은 속성의 변경 데이터입니다.

이 정의를 잘 모르는 분이 많습니다.

그저 엔티티의 한 로우를 어느 시점에 복사해 놓은 것이 이력이라고 생각하는 거지요. 

 

엔티티의 특정 속성의 변경 내용을 관리하는 것이 이력엔티티입니다.

이 정의대로 라면 엔티티 속성 중 변하는 속성 개 수 만큼  이력엔티티를 만들어주어야 합니다.

너무 많이 만들게 되지요.

 

그리고 또 하나

특정 시점의 그 속성값 뿐만 아니라 그 시점의 다른 속성정보도 알려면

이력과 메인 엔티티와 조인하고 다른 이력엔티티와도 모두 조인을  해야하기 때문에

너무 힘들어 엔티티의 한 속성이 변하면 그 시점의 전체로우를 모두 복사하는

스냅샷 이력이라는 편법이력관리를 하게 되는 겁니다.

 

이런 이력관리의 종류와 장단점은 나중에 논하기로 하고

오늘은 그러면 어떤 데이터들이 이력 관리를 필요로하는가 입니다.

 

다시 정의로 돌아가면

속성의 변경 내용을 기록하는 것이 이력이라고 했습니다.

속성의 변경이 있는 엔티티들은 이력엔티티가 필요하게 됩니다.

그러면 속성의 변경이 있는 엔티티란?

 

행위엔티티를 설명할 때 특징은

어떤 특정 순간에 한 행위라고 했습니다.

그래서 시간이 식별자에 포함된다고 했지요.

따라서 행위는 특정 순간의 정보라  정보가 변할 기간을 가지고 있지 않습니다.

행위 엔티티는 이력 자체가 불가능하다는 것입니다.

만일 입력을 잘못한 것을  수정해서 발생하는 이력은 예외입니다.

 

이력을 가지는 엔티티는 개체엔티티들입니다.

개체는 그  개체가  업체와 관련이 있는 기간은 계속 존재하기 때문입니다.

예를 들어 고객은  업체와 고객관계가 유지되는 한 계속 존재하면서

고객의 속성인  나이, 직업, 학력... 등이 변하게 됩니다.

 

그럼 개체만 이력을 가질까요?

행위엔티티 중에 다른 유형이 존재합니다.

앞에서 배운 계정입니다.

계약이 발생한 후  계약이 특정기간 존재하면서

고객을 대행하는 행위의 주체 역할을 하는 것이 계정이라고 했습니다.

즉 계정은 특정기간 존속하기에 존속기간에 이것들이 보유한 속성이 변할 수 있습니다.

결론적으로 계정은 개체와 성격이 유사하게 됩니다.

행위의 주체인 개체의 자격을 얻는 것이죠.

 

이력엔티티.

아무 엔티티나 시간 지나면 복사해서 추가하는 것이 아닙니다.

 

특정시간 존속하는

개체엔티티와 개체엔티티화 된 행위엔티티들만 소유하는 것입니다.

 

 

 

 

 

 

 

Tag :

Leave Comments