본문 바로가기

Data Modeling21

서브타입 해체하기 지난번에 서브타입에 대해 소개해 드린적이 있습니다. (서브타입 사용하기) 그때 서브타입은 Relational Database에서 구현할 수 없는 개념적인 것이니 언젠가는 없애야 한다고 했었지요. 오늘은 그 해체 작업을 어떻게 하는지 살펴보도록 하겠습니다. 최근에 모델을 보다가 조금 특이한 서브타입 구조를 발견했습니다. 신청처리는 신청 자체를 접수하는 것도 있고, 승인하는 것도 있는데, - 여기까지는 일반적인 서브타이핑이죠 - 그 승인이 신청에 의거하여 발생 하기도 하고, 또 가끔은 그냥 승인 처리만 일어나기도 하는 경우입니다. 약간 사족을 달아보자면, 양쪽이 optional 인 관계는 사용을 지양!해야하는 관계 유형 입니다. 왜냐하면 양쪽이 optional이라는 것은 매우 약한 관계이다보니 서로 관계없는.. 2013. 5. 1.
이력 데이터 관리하기 오늘은 이력관리에 대해서 이야기 해보려고 합니다. 데이터 모델링을 하다보면, 중요한 데이터에 대해서 변경이 일어날때, 이전의 모습이 어땠는지를 기록해 두어야 할 필요가 생기구요. 이때 변경에 대한 이력을 기록하기 위한 데이터 모델을 작성하게 되죠. 이러한 이력을 어떻게 모델링 할 수 있을까요? 일단 데이터의 건수가 많지 않으면서 변경도 그다지 자주 발생하지 않는 경우는 하나의 테이블 내에서 최종 데이터와 이력 데이터를 아래와 같이 간단하게 함께 관리할 수 있습니다. 이전키를 가지기 위해서 자기참조관계를 맺어주게 되구요. 이력을 빼고 최종만 조회하기 위해서 최종여부를 두는 것이 편리합니다. 그런데, 데이터 건수도 많고 변경도 자주 일어나는 경우라면 이력 테이블을 별도로 분리해야 하구요. 사실 이게 훨씬 더.. 2013. 4. 24.
공통 데이터 다루기 요즘 정말 많이 듣는 말은 데이터 중복을 없애 달라는 내용입니다. 데이터베이스를 사용한다고 하면 데이터의 중복을 없애고 공통 데이터를 뽑아 모델링 해달라고 합니다. 그런데, 이렇게 중복을 제거하고 공통화 하는데에도 두가지 정도의 수준이 있을 수 있습니다. 오늘은 이에 대해서 살펴 보겠습니다. 데이터가 중복된 형태는 아래와 같이 나타납니다. 대출 엔터티에도 반납 엔터티에도 신청한 사람의 성명과 회원번호 그리고 연락처가 나타납니다. 컬럼이 중복되니 이것을 공통 데이터 즉 중복제거의 대상으로 뽑을 수 있겠지요. 간단하게 컬럼의 중복 만을 제거하면 아래와 같이 서브타입으로 만들 수 있습니다. 서브타입에 대해서는 (서브타입 사용하기) 라는 이전글을 참고하세요. 이것은 성명과 회원번호가 여러개의 테이블에 산재되어 .. 2013. 4. 18.
서브타입 사용하기 오늘은 서브타입에 관한 이야기를 해보겠습니다. 아래와 같이 생긴것이 서브타입인데요. ( 앗... 무료 툴인 DB Designer 에서는 서브타입 관계가 제공되질 않네요. 그래서 부랴부랴 파워포인트로 그렸습니다. ERwin에만 너무 익숙하다보니 당연하게 있을거라 생각했습니다. 그런데, 데이터베이스에 구현할 수 없는 개념이고 보니 가벼운 도구들에서는 생략할 법도 하다는 생각이 드네요. :-) ) 상위(수퍼타입=대출자) 엔터티가 하위(서브타입=직원,회원)의 몇가지 유형으로 나뉠때 이를 표현하는 방법입니다. 예제에서와 같이 대출자는 직원과 회원이 있구요, 사람은 남자와 여자가 있구요, 동물은 사자와 호랑이... 이쯤되면 아 객체지향의 상속과 유사하다는 점을 떠올리시는 분들이 꽤 있을 것 같습니다. 네 개념상 정.. 2013. 4. 13.