데이터이야기

DB 노하우, 데이터직무, 다양한 인터뷰를 만나보세요.

일반화(Generalization) 정의

데이터 이야기
작성자
dataonair
작성일
2015-07-09 00:00
조회
11414


일반화(Generalization) 정의



일반화(Generalization) 정의

일반화란 여러 실체유형 간의 공통적인 특성을 파악하는 과정을 말한다. 즉, 일반화는 둘 또는 그 이상의 실체유형 요소간에 서브세트(부분집합)를 정의하는 개념이다.

예를 들어 “사람”이라는 유형(실체유형)은 많은 멤버(실체)를 가지고 있는데, 이 멤버(실체)들을 다른 관점에서 추상화(분류화)하면 “남자”라는 유형(실체유형)과 “여자”라는 유형(실체유형)으로 추상화(분류화) 할 수 있다. “사람”도 유형(실체유형)이고, “남자”, “여자”도 유형(실체유형)인데 이 세 개의 유형(실체유형)간에 “남자” U “여자” = “사람”이 정의될 수 있다. 즉, 전체 집합에서 그 집합의 부분집합을 정의한 것이 일반화인 것이다.

일반화는 트리 구조로 표현될 수 있다. 이 트리에서 루트 유형은 제네릭(Generic) 유형 또는수퍼타입(전체집합)을 나타내고 루트 노드 이외의 유형은 루트 유형의 서브타입(부분집합)임을 의미한다.

dbin_407.jpg

일반화(Generalization)

일반화 역시 현실 세계에 존재하는 실체들을 우리가 그 실체들을 바라보는 관점에 따라서 여러 가지 방법으로 일반화 할 수 있다. 성별이라는 관점에서 “남”, “여”라는 유형(실체유형)을 “사람”이라는 유형(실체유형)으로 일반화 할 수도 있고, 내외국인 구분이라는 관점에서 “내국인”, “외국인”이라는 유형(실체유형)을 “사람”이라는 유형(실체유형)으로 일반화 할 수 도 있는 것이며, 다른 예로 “자동차”, “비행기”, “선박”이라는 유형(실체유형)을 이용하여 유통업을 하는 회사라면 이러한 유형을 “운송도구”라는 유형(실체유형)으로 일반화 할 수 있는 것이며, “자동차”, “비행기”, “선박”이라는 유형(실체유형)을 제조, 판매하는 회사라면 “상품”이라는 유형(실체유형)으로 일반화 할 수 있는 것이다.

일반화가 다른 추상화 개념과 다른점은 제네릭 유형(수퍼타입: 전체집합)에 정의된 모든 특성이 서브세트(서브타입: 부분집합) 유형으로 상속(Inheritance)된다는 것이다. 예를 들어 “사람” 실체유형은 “이름”, “성별”, “생년월일”이라는 속성이 집단화되어 생성된 실체유형이고, “남자”와 “여자”라는 실체유형은 “사람”이라는 실체유형의 서브세트(서브타입: 부분집합)이므로 “남자”, “여자” 역시 “이름”, “성별”, “생년월일”이라는 속성의 집단화로 생각할 수 있다. 이 상속 특성 때문에 일반화는 매우 중요하게 취급된다.

현실 세계에서 개체를 관찰할 때에 우리는 그것을 즉시 좀 더 추상적인 것으로 분류한다. 참새나 독수리를 보면 새로 분류하고, 페라리(Ferrari)를 보면 빠른 자동차로 분류한다. 우리들은 사물을 이미 알고 있는 어떤 유형(Type, Class)으로 분류하는 경향이 있다. 이렇게 분류함으로써 눈앞의 사물에 대해 좀 더 많은 것을 추론할 수 있다. 참새는 원두막에 앉아 있을 수도 있고, 나뭇가지에 앉아 있을 수 있다. 그러나, 우리는 이것이 새라는 사실과 새는 날 수 있다는 사실을 알고 있기 때문에, 참새가 날 수 있다는 것을 안다. 비록 페라리의 엔진을 보지는 않았지만 페라리는 자동차이며 자동차는 엔진을 가지고 있으므로 페라리도 엔진을 가지고 있을 것이다. 일반적 개념의 유형인 참새와 페라리는 일반화의 특성을 상속받는다.

데이터 모델링 언어의 가장 강력한 특징 중 하나는 일반화에 의하여 실체유형을 수퍼타입과서브타입으로 구분하는데 있다. 일반화에 의한 수퍼타입과 서브타입은 데이터 구조를 명료화하는데 사용되는 모델링 언어의 대부분을 차지하며, 실체유형간의 제한된 관계만을 허용함으로써 업무규칙을 보다 명확하게 한다.



일반화 계층(Generalization Hierarchy) 만들기

일반화 계층(Generation Hierachy)이란 공통적인 특성을 공유하는 실체유형의 계층적 그룹핑을 말한다.

이에 대해서는 아래 그림에 나와 있다. “카드매출”(수퍼타입)이 “일시불매출”이거나 “할부매출” 또는 “서비스매출”(서브타입)로 발생한다. 각각 세 개의 서브타입도 “카드매출”이고, “‘카드매출”의 특성을 상속받는다. 세 개의 서브타입 “매출”은 상호 배타적이다. 여기서 상호배타적이라는 말은 카드매출의 어떤 인스턴스가 반드시 일시불매출이거나 할부매출이거나 서비스매출이지, 일시불매출이면서 할부매출일 수는 없다는 것이다.

dbin_408.jpg

일반화 계층



일반화(Generalization) 시기 결정

위에서 일반화에 의한 수퍼타입과 서브타입은 데이터 구조를 명료화하는데 사용되는 모델링 언어의 대부분을 차지하며, 실체유형간의 제한된 관계만을 허용함으로써 업무규칙을 보다 명확하게 한다. 라고 하였다.

여기서는 이러한 내용에 근거하여 일반화 시기를 언제 결정하는 지에 대한 설명을 하도록 하겠다.

시기 결정

일반화 시기 결정의 첫째는 실체유형이 공통적인 속성 집합을 가지고 있는 경우이다. 간단히 말하면 속성의 명확화를 위해서 일반화를 하는 경우라 할 수 있다. 위에서 예로 들은 카드매출의 경우도 각각의 매출에 대한 공통의 속성과 각각의 서브타입에서 관리하는 개별 속성을 표현 함으로써 업무를 좀 더 명확하게 표현하고 있는 것이다.

또 다른 예로 우리가 가장 많이 보는 고객 실체유형을 예를 살펴 보도록 하겠다. 아래 그림 일반화 ? 속성의 명확화를 보면 왼쪽 고객은 개인과 법인의 구분 없이 속성이 나열되어 있다. 이 조직의 업무규칙은 고객이 개인과 법인만 발생하는 것인데 이 고객 실체유형을 보면 어떤 속성이 개인에 대한 속성이고, 어떤 속성이 법인에 대한 속성인지를 명확히 알기가 어렵다. 업무 파악이 약간 애매한 이러한 실체유형을 개인과 법인 고객으로 일반화 함으로써 즉, 개인과 법인이 공통적으로 갖는 속성과 개인과 법인 각각의 개별 속성을 도식화 함으로써 우리는 업무를 좀 더 명확하게 이해할 수 있게 되는 것이다.

dbin_410.jpg

일반화 - 속성의 명확화

일반화 시기 결정의 둘째는 실체가 공통적인 관계의 집합을 갖는 경우이다.

dbin_411.jpg

일반화-관계의 명확화

그림 일반화 ? 관계의 명확화를 보면 재무증서, 공채평가, 공채평가이력 세 개의 실체유형이 있는데, 일반화하기 이전의 모델에서 업무를 설명하면 모든 재무증서에 대하여 공채평가이력을 하는 것으로 표현되어 있다. 하지만 업무를 제대로 파악해 보니 재무증서에서 공채평가이력을 생성하는 것은 사채만이라는 업무 규칙이 파악되어 관계를 명확히 하고자 일반화를 수행한 것이다.

일반화 시기 결정의 셋째는 두개의 실체유형간 관계가 양쪽 선택 관계인 경우이다.

dbin_412.jpg

일반화-양쪽 선택 관계의 명확화

일반적으로 논리 데이터 모델링을 진행할 대 양쪽 선택 관계가 발생하면, 될 수 있으면 한쪽 필수 관계로 일반화를 해 줄 것을 권고한다. 왜냐하면 데이터 모델은 실체유형 간에 데이터의 종속성(선후 발생 규칙)을 표현하는 것인데, 양쪽 선택 관계인 경우는는다.

상기의 일반화 ? 양쪽 선택 관계의 명확화를 보면 법인과 고객 실체유형이 있는데 양쪽 선택 관계에 있어서 고객에 인스턴스를 하나 추가할 때 법인의 인스턴스가 필요할 때도 있고 필요 없을 때도 있다는 것이 왼쪽의 업무 규칙이다. 현업과의 업무 협의를 통하여 고객이 법인고객인 경우는 반드시 법인 실체유형에 먼저 인스턴스가 있어야 한다는 업무 규칙을 확인 한 후 표현한 데이터 모델이 오른쪽에 표현된 모델이다.

이렇게 일반화는 업무규칙이 애매 모호할 때 이러한 업무규칙을 명확하게 표현하기 위한 기법인 것이다. 아래는 상기의 업무규칙을 ER-Win에서 정보공학 방법론 표기법으로 표현한 것이다.

dbin_413.jpg

일반화-양쪽 선택 관계의 명확화

넷째 일반화 시기 결정에 대해서는 약간 논란의 여지가 있는 것으로 이는 다음에 설명하기로한다. 왜냐하면 일반화를 수행하는 것이 이렇게 업무를 명확화 하는데 매우 중요한 기법이지만, 너무 과도하게 일반화를 하면 잃어 버릴 수 있는 사항이 있기 때문이다. 또한 일반화를 수행하는 목적이 매우 추상화(일반화) 수준이 높은 실체유형을 통하여 데이터 통합이나 유연성, 확장성이 높은 데이터 모델을 그축할 수도 있는데 이에 대해서는 다음에 논하기로 하겠다.



출처 : 한국데이터베이스진흥원

제공 : 데이터 전문가 지식포털 DBguide.net