본문 바로가기

데이터 Story/모델링 이론

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

데이터 통합과 관련된 용어로 일반화(Generalization)와 상세화(Specialization)가 있습니다.

이에 대해 간략하게 언급하겠습니다.

 

많은 분야에서 사용하는 용어일텐데, 이번 글에서는 데이터 모델링에서 사용하는 의미로 한정하겠습니다.

일반적인 용어를 공개적으로 설명하는 것은 용기가 필요하니 약간의 장치가 있어야죠. ㅎㅎ

 

모델링에서 일반화한다는 것은 데이터 통합을 의미합니다.

유사한 것을 묶는 것을 일반화라고 합니다.

원래 유사한 것을 묶을 수도 있고, 인위적으로 유사하게 만들어 묶을 수도 있습니다.

 

정의를 어떻게 하냐에 따라 유사한 것일 수도 있고, 유사하게 만든 것일 수도 있습니다(이 부분이 데이터 통합도 어렵게 하고 이에 대한 설명도 어렵게 하죠).

 

사전에서 찾은 '일반화하다'의 뜻은 아래와 같습니다.

 

"개별적인 것이나 특수한 것이 일반적인 것으로 되다. 또는 그렇게 만들다"

 

뜻 자체로만 보면 묶는다는 개념이 없는 거 같은데요.

그냥 만드는 것으로 끝난다면 의미가 없을 거 같습니다(모델링에서요).

 

예를 들어, 미국에서 태어나 서울에서 일시적으로 살고 있는 외국인을 고객으로 볼 것인지에 대해서요.

외국인 고객을 넓게 보면 고객으로 볼 수 있습니다. 이게 일반화이고요.

 

이미 고객이라는 데이터가 있을테니 외국인 고객은 고객에 흡수됩니다. 통합되죠.

외국인 고객을 고객이라고 일반화하고 고객 데이터에 속하지 않게 할 수는 없습니다.

고객 데이터에 속하지 않게 하려면 고객이라고 일반화하지 않아야죠.

 

이해 되시나요? 가끔 예가 더 어려울 때가 있습니다. ㅎㅎ

데이터를 일반화하면 자연스럽게 통합이 된다는 것입니다. 자연히 묶게 됩니다.

 

일반화는 상세한 것에서 출발해 일반적(포괄적)인 것을 도출합니다.

상향식(Bottom-Up) 방법과 유사합니다.

 

주민번호 있는 개인, 사업자번호 있는 사업자나 법인, 외국인번호 있는 외국인, 우리회사의 사원이나 관계사 등은 자연인(自然人)과 법인(法人)으로 일반화할 수 있습니다.

자연인과 법인은 고객으로 한번 더 일반화할(묶을) 수 있습니다.

 

일반화의 상대 개념은 상세화(Specialization)입니다. 특수화라고도 하고요.

저는 차별화가 더 와 닿는데, 혼란을 일으킬 거 같아 제 책에서도 무난하게 상세화라고 했습니다.

 

상세화는 하향식(Top-Down) 방법으로써 차이를 도출하는 것이 주요 행위입니다.

 

고객이라는 일반적인 개념에서 자연인 고객, 법인 고객 등으로 더 구체적으로 따져서 다른 점을 강조합니다.

뭉뚱그린 개념에서 구체적인 개념으로 만드는 것이죠.

 

엔터티를 일반화하거나 상세화하면 슈퍼타입(Supertype)과 서브타입(Subtype)이 생깁니다.

결과적으로 슈퍼타입과 서브타입이 없을 수는 있지만, 모델링 중에는 반드시 도출해야 합니다.

 

데이터 통합과 일반화, 서브타입은 유사한 개념입니다.

 

일반화와 상세화 모두 결국은 차이점을 보기 위한 것입니다.

묶었지만 차이도 볼 수 있는 게 데이터 통합입니다.