본문 바로가기

데이터 Story/모델링 이론

서브타입(Subtypes)이란?

지금까지 통합에 대해 설명했습니다.

오늘부터는 서브타입에 대한 글을 올리겠습니다.

 

그런데 막상 서브타입을 정의하려니 어렵네요. 며칠 째 막혀있었는데, 사실 서브타입 정의 자체는 엔터티 정의와 동일합니다. 슈퍼타입과 한쌍을 이룬다는 게 일반 엔터티와 다른 점입니다.

 

서브타입(Subtypes)이란 서브타입 엔터티(Subtypes Entity)를 말합니다. 서브타입을 엔터티로 인식하는 게 좋습니다. 슈퍼타입(Supertypes)도 마찬가지로 슈퍼타입 엔터티(Supertypes Entity)입니다.

 

엔터티를 일반화(Generalization)하거나 상세화(Specialization)하면 슈퍼타입과 서브타입이 생깁니다. 일반화와 상세화는 아래 글을 참조하세요.

 

일반화(Generalization)와 상세화(Specialization)

 

엔터티를 통합하거나 분리하는 행위의 결과가 서브타입입니다. 도출된 서브타입이 결국 테이블로 변환되는지와는 별개로 과정에 서브타입이 있어야 합니다.

 

서브타입을 보면 차이점을 알기 쉽습니다. 유사한 엔터티에서 공통 속성은 슈퍼타입 엔터티로 가고, 고유 속성은 서브타입 엔터티로 가는데요. 이렇게 설계하면 공통점과 차이점을 보기 쉽습니다.

 

[그림1]은 고객과 관련된 릴레이션입니다.

 

-------------------------------------------------

[그림1]

 

[그림1]에서 위쪽의 그림보다 아래쪽 그림이 이해가 잘 됩니다. 사전 지식이 없는 사람이 봐도 아래 그림이 쉽게 눈에 들어올 것입니다. 있는 그대로 공통점과 차이점을 보여주니까요.

 

[그림2]는 슈퍼타입과 서브타입 구조를 표현한 그림입니다.

 


[그림2]

 

슈퍼타입 속성은 모든 서브타입으로 상속(Inheritance) 되는 공통 속성이며, 슈퍼타입과의 관계는 서브타입에도 해당되는 관계입니다. 반면에 서브타입에는 해당 서브타입에서만 사용되는 고유 속성이 존재하며, 관계 또한 서브타입별 엔터티의 고유한 관계가 됩니다.

 

서브타입과 슈퍼타입은 공통점과 차이점을 보기 위한 유용한 방법입니다. 작게 나눈 세분화된 부분 집합은 전체 집합보다 이해하기 쉬워지고요. 슈퍼타입의 공통 속성과 공통 관계, 서브타입별 고유 속성과 고유 관계가 표현돼 업무 규칙을 모델에 표현하기도 쉽습니다.

 

모델링을 수행할 때 가장 중요한 요소 중의 하나는 모델의 확장성을 고려하는 것인데요. 데이터를 통합하면 서브타입이 도출되며 확장성이 좋아집니다.

 

슈퍼타입·서브타입 도출은 모델링 과정에서 반드시 필요합니다. 가장 효율적인 물리 구조를 결정하기 위해서 거쳐야 하는 모델링의 중요한 과정입니다.