본문 바로가기

분류 전체보기

용어에 대해서 용어에 대해 잠깐 얘기하려 합니다. 심도있게 논의하고 싶지만 아직 역량이 안 돼 간략하게요. 용어를 얼마나 중요하게 인식하는지 개인차는 있겠지만, 중요하다는 것에는 모든 사람이 동의할 것입니다. 저는 대단히 중요하게 생각합니다. 간혹 설명으로 이해 못 했던 게 용어를 보고 이해하는 경우가 많고요. 설명으로 이해한 것과 용어로 받아들인 게 달라지면 뒤죽박죽돼 결국 이해하지 못한 게 되기도 하고요. 용어는 대개 약속이라 정하면 그만일 듯 하지만 딱 맞지 않는 약속은 정하지 않는 게 좋다고 생각합니다. 개인적으로 새로운 용어를 만들어내는 걸 별로 좋아하진 않는데요. 책임이 따르는 일이기 때문에 매우 신중하고, 사실은 경계하는 것 중의 하나입니다. 특별히 과시용으로 만드는 것을 스스로 경계하고요. 하지만 기존에.. 더보기
이력 엔터티를 설계하는 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개 중에서 두 번째 방법입니다. 현재와 과거 데이터를 두 개의 엔터티에서 별도로 관리하는 방법인데요. 현재 데이터를 관리하는 엔터티에는 현재 데이터만 존재하고요. 변경된 과거 데이터는 이력 엔터티에서 관리합니다. 하나의 엔터티에서 현재와 과거 데이터를 관리하는 첫 번째 방법과 달리 두 종류(현재 데이터와 과거 데이터)의 데이터가 같이 사용될 일이 별로 없을 때 사용합니다. 그리고 하위(자식) 엔터티가 하나라도 존재할 때 사용합니다. 모델은 [그림1]과 같습니다. 엔터티명을 ‘고객이력’이라고 붙인 이유는 과거의 데이터를 관리하기 때문이기도 하며 이미 ‘고객’이라는 엔터티명이 사용되었기 때문입니다. [그림1] 고객이력 엔터티는 고객 엔터티의.. 더보기
1995년 황당 에피소드 1995년. 저에게는 의미있는 해였는데 그때 얘기를 가끔 쓸 생각입니다. 그때 찍은 안나푸르나와 마차푸차레 사진을 이미 소개드렸고요. 정말 강추입니다. 이번엔 제가 겪었던 황당한 에피소드(또는 닭짓)입니다. 지명 이름은 기억나는대로 적었습니다. 95년에 호주로 어학연수를 가장한 배낭여행을 갔습니다. 주변에선 제가 처음이었는데, 그 당시 막 유행하려던 때였던 거 같아요. 연수를 가장한 배낭여행이요. 다들 그랬을 겁니다. 케언즈라는 아담한 항구 도시에서 어학연수 끝내고 시드니로 가게 됐는데요. 배냥 여행의 시작이었죠. 케언즈와 시드니는 거리가 상당한데요. 시드니에서 케언즈로 버스를 타고 온 모든 경험자의 강력한 만류에도 불구하고 저는 버스를 선택했습니다. 가장 큰 이유는 돈 때문이었지만 경험해 보고 싶었어요.. 더보기
프로젝트를 마치며 오늘 또 하나의 프로젝트를 끝마쳤습니다. 어떤 프로젝트든 끝나고 나오면 항상 미련이 남습니다. 이번에도 일상적인 미련이 남습니다. 일을 남기고 나와서 더욱 그렇네요. 개인적인 문제로 완전히 끝내지 못했는데… 남은 사람이 귀찮아지죠. 모델링 프로젝트는 항상 아쉬움이 남습니다. 끝을 보고 나와야 마음이 편한데 항상 찝찝해요. 이번엔 개인적으로 좀 늘어진 거 같아요. 사실은 많이… 개인적인 성향과는 맞지 않는 프로젝트였어요. 커뮤니케이션의 중요성도 다시 실감했고요. 다음주에 프로젝트를 시작하는데 부담이 큽니다. 도저히 늘어질 거 같지 않은 프로젝트. 체력이 고갈된 거 같아 더욱 걱정이 앞서는데 약의 힘을 빌어보려고요. 아마 잘 될 거에요. 명쾌할 것이라 기대합니다. 늘어진 열정을 일으켜 몇 년 동안 신나는 토.. 더보기
이력 엔터티를 설계하는 10가지 방법 – 첫 번째 이력 엔터티를 설계하는 첫 번째 방법은 하나의 엔터티에서 과거와 현재(미래)의 데이터를 함께 관리하는 것입니다. [그림1] 수수료율 엔터티에는 계좌의 종류에 따라, 어떤 방법으로 거래했는지에 따라 달라지는 수수료율을 관리합니다. 이 엔터티는 현재의 수수료율뿐만 아니라 과거의 수수료율도 함께 관리합니다. [그림1] 이 경우 변경 일자를 관리하게 되는데요. [그림1]과 같이 변경일자 속성이든 입력일자•시작일자 속성이든요. 이력 엔터티 시리즈 글에서는 편의상 변경일자 속성을 일괄적으로 사용하겠습니다. 사실 변경일자 속성이 적절한지는 아직도 고민 중입니다. 현재 인스턴스에 대해서는 입력 일자가 과거 인스턴스에 대해서는 변경 일자가 명확한데, 합치게 되니 어떤 게 더욱 적절할지 고민입니다. 이 고민은 엔터티를 이.. 더보기