본문 바로가기

변경이력

실체 엔터티의 변경이력 엔터티 설계 원천 엔터티가 실체 엔터티일 때는 변경이력 데이터를 별도의 엔터티에서 관리하도록 설계한다. [그림1] 고객실체 엔터티는 실체인 고객 데이터를 관리하는 실체 엔터티다. [그림1] 만약 고객명 속성이나 전화번호 속성의 변경이력 데이터를 관리할 때, 고객은 실체이기 때문에 아래 모델처럼 별도의 엔터티에서 변경이력 데이터를 관리하도록 설계한다. [그림2] 고객실체 엔터티의 속성 중에서 하나라도 변경되면, 그 시점의 고객실체 엔터티 인스턴스는 고객실체이력 엔터티로 이동한다. 고객실체이력 엔터티는 변경된 과거 데이터이므로 주로 사용되지 않으며, 필요 시에만 참고 용도로 사용하기 위해 보관하는 역할을 한다. 실체 엔터티는 실체에 대한 개별 인스턴스를 관리하는 엔터티다. 실체 엔터티에서 실체의 변경된 데이터까지 관리한.. 더보기
배타 서브타입 설계 서브타입을 설계할 때는 특정 시점을 기준으로 설계하기 때문에 변경이력 데이터를 포함시키지 않고 현재 시점의 데이터로 판단한다. 서브타입이 배타 서브타입인지 중복 서브타입인지는 특정 시점을 기준으로 판단한다. 특정 시점에 어느 하나의 서브타입에만 속하는지(배타 서브타입) 여러 서브타입에 속할 수 있는지(중복 서브타입)에 따라 서브타입의 유형이 정해진다. 따라서 과거 데이터인 변경이력 데이터는 제외하고 현재 시점을 기준으로 판단해서 서브타입 유형을 설계한다. 데이터 성격이나 업무 요건은 서브타입 간에 중복 데이터가 없어야 하는데 변경이력 데이터로 인해 중복된 것처럼 보이는 경우가 있기 때문에 주의해야 한다. 사원은 정규직이거나 임시직이어야 한다는 업무 요건이 있다면, 아래 모델처럼 배타 서브타입으로 설계해야.. 더보기
이력 데이터와 내역 데이터 2 그럼 [그림5] 환율 엔터티는 내역 엔터티일까요? 이력 데이터일까요? 환율은 기준 통화에 대한 상대 통화의 교환 비율인데요. 기본적으로 매일 관리하기 때문에 기준일자를 관리합니다. 원화에 대한 달러의 2월 15일 환율 데이터가 생성되고, 16일 환율도 생성되는 등 주 식별자에 따라 데이터가 생성되니 내역 데이터입니다. 환율을 관리하는 원천 엔터티이니 발생 내역 엔터티입니다. 환율 같은 엔터티를 이력 엔터티로 생각하는 경우가 많습니다. [그림5] 이미 존재하는 15일 환율이 바뀌고, 바뀌기 전 데이터를 관리해야 한다면 [그림6]과 같이 이력 엔터티가 있어야 됩니다. [그림6] 그리고 또 많이 혼돈하는 엔터티가 학력이나 회사경력 같은 엔터티입니다. [그림7]과 같은 고객의 학력을 관리하는 엔터티는 주 식별자.. 더보기
이력 데이터와 내역 데이터 1 지난 글에서 이력 데이터의 성격에 대해 간략하게 설명드렸습니다. 다시 정리하면 변경되는 데이터가 이력 데이터이고요. 쌓이는 데이터는 내역 데이터입니다. 그리고 원천(본질) 데이터인지를 구별하는 것이 중요합니다. 원천 엔터티를 도출하고 이력엔터티를 분석해야 하고요. 발생 내역인 원천 데이터가 변경되면, 변경 전의 데이터를 관리해야 이력 데이터 관리라고 합니다. 저는 ‘변경이력’과 ‘발생내역’이라는 용어로 구분합니다. 지난 번에 언급했듯이 이력이라는 용어는 상당히 애매합니다. 과거 데이터라는 포괄적인 의미를 지니고 있습니다. 영어로 표현하면 Time-Dependent Data, Historical Data 정도가 되는데요… 하지만 데이터 모델에서 말하는 이력은 단순히 쌓여있는 과거의 데이터가 아니라 변경된 .. 더보기