본문 바로가기

이력 데이터 관리 방법

이력 엔터티를 설계하는 10가지 방법 – 여덟 번째 이력 데이터를 설계하는 방법이 이제 곧 마무리될 거 같습니다. 시리즈 글 10개 올리는 게 쉽지 않네요. ㅎㅎ 이력 데이터를 설계하는 유형을 정리하면 크게 아래 세 가지입니다. - 전체 속성을 관리(인스턴스 단위) - 속성 하나 하나를 관리(속성 단위) - 유사한 속성을 묶어서 관리(속성 그룹 단위) 위의 두 가지는 이미 설명드렸고 마지막 유형만 남았습니다. 마지막 유형인 유사한 속성을 묶어서 설계하는 방법은 다시 세 가지로 구분할 수 있습니다. - 마스터에 해당 속성이 존재해 현재 데이터 관리, 속성 그룹의 이력 데이터는 별도의 엔터티에서 관리 - 마스터에 해당 속성이 존재하지 않고, 속성 그룹을 별도 하나의 엔터티를 사용해 현재+과거 데이터를 통합해서 관리 - 마스터에 해당 속성이 존재하지 않고, 속.. 더보기
이력 엔터티를 설계하는 10가지 방법 – 일곱 번째 일곱 번째 방법은 여섯 번째 방법의 확장입니다. 엔터티 한 개만 관리하는 여섯 번째 방법에서 두 개의 엔터티로 확장한 모델이 [그림1] 입니다. [그림1] 고객계좌통합번호 속성은 배타 관계(계좌와 고객 엔터티)를 관리하는 속성입니다. 엔터티번호 속성과 함께 사용해야 어떤 엔터티의 식별번호인지를 알 수 있습니다(파란 속성은 같이 사용하는 쌍을 의미). 계좌 엔터티만이 아니라 다른 엔터티의 이력 데이터도 관리하므로 포괄적으로 속성통합이력 엔터티라고 붙이고요([그림1]처럼 단 두 개의 엔터티라면 ‘고객/계좌속성이력’도 좋음). ‘이력엔터티’라는 엔터티에서는 이력 데이터를 관리하는 대상 엔터티를 관리합니다. 이 방법은 여섯 번째 방법의 단점은 모두 가지고 있으며 더 유연하기 때문에 업무를 파악하기 더욱 어려워진.. 더보기
이력 엔터티를 설계하는 10가지 방법 – 여섯 번째 여섯 번째 방법은 모델링하기 가장 쉬운 방법입니다. 적어도 표면적으로는요. 변경된 모든 속성의 데이터를 하나의 엔터티에서 관리하는 방법입니다. 흔히 종테이블(Vertical Table)이라고 하는데요. 속성 단위로 관리하기 때문에 이력 관리 대상 속성을 코드화해서 관리하는 것이 특징입니다. [그림1] 계좌 엔터티 속성 중에서 역할을 의미하는 계좌관리사원번호 속성은 별도의 엔터티에서 이력 데이터를 관리하기로 하고요(역할에 대해서는 이전 글을 참조 하세요. http://dataprofessional.tistory.com/62). [그림1] 그리고 나머지 속성은 이번에 설명하는 방법인 [그림2]와 같이 관리합니다. [계좌이력속성] #속성코드 속성명 100 계좌명 110 계좌비밀번호 [계좌이력] #계좌번호 #속.. 더보기
이력 엔터티를 설계하는 10가지 방법 – 속성 단위 이력 관리 예제 이번 시간에는 속성 단위로 이력 관리하는 방법을 정리하는 의미로 다양한 예제를 설명드리겠습니다. 처음부터 다시 읽지 않으려면 잘 따라오셔야 합니다. ㅎㅎ 세 번째, 네 번째, 다섯 번째 방법처럼 한 속성만으로 이력 데이터를 설계하는 방법은 역할(Role)을 관리할 때 자주 사용합니다. 실체 엔터티 간 관계(역할)는 주로 별도의 엔터티에서 관리합니다. 계좌 관리 사원을 관리한다면 [그림1]과 같은 모델이 기본입니다. [그림1] 위 모델에서 변경된 과거 관리 사원까지 관리한다면 [그림2]와 같이 됩니다. [그림2] 계좌관리사원 엔터티에서 현재 계좌를 관리하고 있는 사원과 과거에 관리했던 사원을 함께 관리합니다. 현재 데이터도 관리하므로 ‘~이력’이란 단어를 엔터티명에 사용하지 않았고요. 역할을 관리하는 엔터.. 더보기
이력 엔터티를 설계하는 10가지 방법 – 다섯 번째 이력 엔터티를 설계하는 다섯 번째 방법은 간단합니다. 앞의 두 방법의 혼합입니다. -마스터에 해당 속성이 존재해 현재 데이터를 관리하고 이력 데이터는 별도의 엔터티에서 관리 -마스터에 해당 속성이 존재하지 않고 별도의 한 엔터티에서 현재+과거 데이터를 통합해서 관리 -마스터에 해당 속성이 존재하지 않고 별도의 두 엔터티에서 현재와 과거 데이터를 개별로 관리 [그림1]과 같이 현재 비밀번호를 관리하는 엔터티가 있고, 변경된 과거 비밀번호를 관리하는 엔터티가 있습니다. [그림1] 이 모델에서 계좌비밀번호 엔터티는 발생 내역을 관리하는(발생일자 존재) 엔터티이고, 계좌비밀번호이력 엔터티는 변경 이력을 관리하는(변경일자 존재) 엔터티입니다. 최초에 발생한 비밀번호를 관리하는 계좌비밀번호 엔터티는 계속 업데이트되.. 더보기
이력 엔터티를 설계하는 10가지 방법 – 네 번째 이력 엔터티를 설계하는 네 번째 방법입니다. -마스터에 해당 속성이 존재해 현재 데이터를 관리하고 이력 데이터는 별도의 엔터티에서 관리 -마스터에 해당 속성이 존재하지 않고 별도의 한 엔터티에서 현재+과거 데이터를 통합해서 관리 -마스터에 해당 속성이 존재하지 않고 별도의 두 엔터티에서 현재와 과거 데이터를 개별로 관리 비밀번호가 계좌 비밀번호와 홈페이지 비밀번호, ARS 비밀번호가 존재하면 [그림1]과 같이 설계할 수 있는데요. [그림1] 어떤 종류의 비밀번호가 더 생길지 모르니 정규화를 하면 [그림2] 엔터티와 같아질 것입니다. [그림2] [그림2]가 원천 데이터를 설계한 모델입니다. 마스터 엔터티인 계좌 엔터티에는 비밀번호 속성이 존재하지 않고요. 여러 비밀번호를 구분하기 위해 계좌비밀번호 엔터티에.. 더보기
이력 엔터티를 설계하는 10가지 방법 – 세 번째 이력 엔터티를 설계하는 세 번째 방법입니다. 첫 번째, 두 번째 방법은 인스턴스를 대상으로 이력 데이터를 관리했지만 세 번째 방법부터는 개별 속성을 대상으로 이력 데이터를 관리합니다. 개별 속성의 이력 데이터를 관리하는 방법은 다시 아래와 같이 세 가지로 나눕니다. - 마스터에 해당 속성이 존재해 현재 데이터를 관리하고, 이력 데이터는 별도의 엔터티에서 관리 - 마스터에 해당 속성이 존재하지 않고, 별도의 한 엔터티에서 현재+과거 데이터를 통합해서 관리 - 마스터에 해당 속성이 존재하지 않고, 별도의 두 엔터티에서 현재와 과거 데이터를 개별로 관리 [그림1]은 계좌 비밀번호의 이력 데이터를 관리하는 모델입니다. 계좌비밀번호 속성이 마스터 엔터티인 계좌 엔터티에 존재해서 현재 비밀번호를 관리하며, 계좌비밀.. 더보기
이력 엔터티를 설계하는 10가지 방법 – 서론 이력 데이터에 대한 글을 계속 올리고 있는데요. 개요적인 내용은 소개했으니 다른 주제(식별자)로 넘어갈까를 좀 고민했습니다. 느끼신 분들이 있겠지만 엔터티나 관계 등과 같이요. 개인적으로 제가 책을 쓰면서 다른 책과 차별되도록 구성한 장이 정규화와 통합, 이력, 방법론 입니다. 얼마 전에 메일을 한통 받았는데 거의 정확하게 맞추신 분이 있습니다. 각 장의 특징을 조만간 올릴 생각입니다. 군더더기라 생각해서 책에는 생략을 했는데요. 이력 데이터 관리가 전략적인 장이라서 당분간 이력 엔터티 위주로 글을 올리겠습니다. 오늘은 이력 데이터를 관리할 수 있는 10가지 방법의 개략에 대해 쓰려고 합니다. 이 10가지 방법은 실무에서 자주 사용하는 방법을 제 나름대로 구분한 것인데요. 사실 내역 데이터 설계 방법까지.. 더보기