DATOR


서브타입의 이해 엔터티


 업무 규칙의 표현(http://www.dator.co.kr/jslee/93221)에서 언급했듯이 많은 유형의 업무 규칙은 서브타입을 사용하여 데이터 모델에 표현해야 한다. 그런데 데이터 모델을 물리 데이터 구조를 만들기 위한 중간 단계로만 생각해서 그런 것이 아닌가라고 생각할 정도로 많은 데이터 모델링 관련 서적이나 교육에서 서브타입을 별로 중요하게 다루고 있지 않은 것이 현실이다.  (데이터 모델링의 필요성에 대하여 :  http://www.dator.co.kr/encore/textyle/620387)

 

 서브타입이 약간 복잡하다고 느끼는 이유는 서브타입을 표현하기 위해서 알아야 하는 개념이 4개나 되기 때문이다. 조금만 생각해보면 그리 어려운 것은 아니므로 충분히 이해할 수 있을 것이다.

1. 서브타입 : 약간 무리가 있는 표현이긴 하지만 간단히 표현해 서브타입은 인스턴스들의 집합인 엔터티라는 전체집합에서 일부의 인스턴스들만 모아놓은 부분집합이다.  하나의 엔터티에 무수히 많은 부분집합을 만들 수 있는데, 이렇게 만들어진 부분집합들을 가리키는 용어가 서브타입인 것이다.

 

 서브타입2.JPG

 

2. 서브타입명 :  하나의 엔터티에서 만들어진 서브타입 각각에 부여한 이름을 말한다.  각각의 서브타입에 부여한 이름은 그 서브타입이 어떤 인스턴스들의 집합인지를 잘 나타낼 수 있는 용어로 붙인다. 예를 들어, 고객엔터티에서 개인고객 인스턴스만 모아놓은 서브타입에는 '개인'이라는 서브타입명을 부여하고 법인고객 인스턴스만을 표현하기 위해 '법인'이라는 서브타입명을 부여할 수 있다.

3. 서브타입세트 : 서브타입세트를 설명하기 전에 서브타입 즉 엔터티의 부분집합을 표현하는 기준을 먼저 설명해야 한다. 고객엔터티를 개인고객과 법인고객의 2개의 부분집합으로 나누어 표현했는데, 이 때 사용된 기준은 '고객유형'이라는 고객의 특성으로 구분한 것이다. 고객엔터티를 '고객등급'이라는 기준으로 '일반고객', '우대고객', 'VIP고객'이라는 서브타입을 도출할 수도 있다. 이렇게 하나의 기준으로 도출된 서브타입의 모임, 예를 들어 고객유형기준으로 구분한 개인고객과 법인고객이라는 2개의 서브타입을 합쳐서 표현하는 용어가 서브타입세트이다. 따라서 고객등급을 기준으로 구분한 일반고객, 우대고객, VIP고객 서브타입들도 하나의 서브타입세트가 된다.

4. 서브타입세트명 : 서브타입을 도출하기 위해 사용된 기준이 되는 속성을 말한다. 3번의 설명에서 나오는 '고객유형'이나 '고객등급'이 서브타입세트명의 예이다. 그런데, 서브타입을 표현하기 위한 속성이 반드시 물리적으로 존재할 필요는 없다는 점도 기억해야 한다. 서브타입은 업무 규칙의 표현을 위해 사용하는 개념으로 반드시 물리모델에 컬럼으로 만들어야 한다는 제한사항은 없으므로 컬럼은 만들지 않으면서 서브타입을 표현해야 한다면 아래 그림의 과 같이 표현할 수도 있다. ERwin에서는 속성의 특성을 Logical only를 선택하면 된다.

 

아래 그림은 위 표에 나타난 서브타입들을 대표적인 모델링 툴인 DataWare DA와 ERwin을 사용해 나타낸 것이다. 그림에서 '고객'이라는 단어가 이 엔터티의 명칭인 것과 같이 '개인', '법인', '일반', '우대', 'VIP'는 서브타입의 명칭이 된다. 또, 파란색 박스에 들어있는 '고객유형'이라는 단어는 개인 서브타입과 법인 서브타입으로 구성된 서브타입셋트의 명칭이고, 노란색 박스에 들어있는 '고객등급'은 일반, 우대 및 VIP 서브타입으로 구성된 서브타입셋트의 명칭이 된다. 아래 두 개의 모델에는 각각 1개의 엔터티와 5개의 서브타입, 2개의 서브타입셋트가 표현되어 있다.

 

    서브타입2가지4.JPG

 

* 위의 설명에서 주의할 점은 서브타입의 전체집합이 반드시 엔터티일 필요는 없다는 것이다. 하나의 서브타입을 전체집합으로 하는 하위 서브타입도 정의할 수 있으며 이 때에 전체집합을 가리키기 위해 '슈퍼타입'이라는 용어를 사용한다. 즉, 엔터티에 서브타입을 생성하면 엔터티가 슈퍼타입이 되고, 하나의 서브타입에 하위 서브타입을 정의하면 상위 서브타입은 슈퍼타입이 된다.

 

TAG

Leave Comments