데이터베이스 설계에서 개체-관계(E-R) 모델을 다룰 때 반드시 이해해야 하는 두 가지 핵심 개념이 바로 일반화(Generalization)와 특수화(Specialization)입니다. 이 두 개념은 서로 반대 방향의 사고방식을 가지며, 데이터 모델링의 추상화 수준을 조절하는 데 활용됩니다. 이번 글에서는 두 개념의 정의와 특징, 그리고 실제 예시를 통해 차이점을 명확하게 살펴보겠습니다.
일반화(Generalization)란?
일반화는 여러 개체들이 가진 공통 속성을 묶어 상위 개체 집합을 만드는 과정입니다. 주요 특징은 다음과 같습니다.
하향식(Bottom-up) 접근 방식을 사용합니다.
공통 속성을 통합하므로 스키마의 크기가 줄어듭니다.
일반적으로 여러 개체 집합의 그룹에 적용됩니다.
일반화 과정에서는 상속(Inheritance)이 사용되지 않습니다.
여러 개체 집합으로부터 그룹을 생성하는 프로세스로 정의할 수 있습니다.
둘 이상의 하위 수준 개체 집합의 합집합(Union)을 취하여 더 높은 수준의 개체 집합을 만듭니다.
결과로 생성된 상위 개체 집합에는 대상 개체들의 공통 특징만 포함됩니다.
합집합 연산 대상 개체들 간의 차이점과 유사점은 무시됩니다.
일반화 예시
비둘기, 참새, 까마귀, 멧비둘기는 저마다 다른 특징을 가지지만, 날개·부리·깃털 등 새의 공통 속성을 지니므로 모두 '새(Birds)'라는 상위 개체로 일반화할 수 있습니다.

특수화(Specialization)란?
특수화는 하나의 상위 개체를 역할이나 속성에 따라 세분화하여 하위 개체 집합을 만드는 과정으로, 일반화의 반대 개념입니다. 주요 특징은 다음과 같습니다.
상향식(Top-down) 접근 방식을 사용합니다.
개체를 세분화하므로 스키마의 크기가 늘어납니다.
단일 개체에도 적용할 수 있습니다.
개체 집합 내부에 하위 그룹을 생성하는 프로세스로 정의할 수 있습니다.
일반화의 역방향 연산입니다.
상위 수준 개체의 부분집합을 취하여 더 낮은 수준의 개체 집합을 형성합니다.
하나의 상위 개체를 분할하여 하나 이상의 하위 개체를 만듭니다.
이 접근 방식에서는 상속(Inheritance)을 사용할 수 있습니다. 즉, 하위 개체는 상위 개체의 속성을 물려받습니다.
특수화 예시
모든 사람(Person)은 이름, 생년월일, 성별 등의 공통 속성을 가집니다. 그러나 회사라는 환경에서는 사람이 맡는 역할에 따라 직원(Employee), 고용주(Employer), 고객(Customer), 공급업자(Vendor) 등으로 구분할 수 있습니다. 이처럼 상위 개체 '사람'을 역할 기준으로 세분화하는 것이 특수화입니다.

일반화 vs 특수화 비교 요약
| 구분 | 일반화(Generalization) | 특수화(Specialization) |
|---|---|---|
| 접근 방식 | 하향식(Bottom-up) | 상향식(Top-down) |
| 스키마 크기 | 감소 | 증가 |
| 적용 대상 | 여러 개체 집합 | 단일 개체 포함 가능 |
| 연산 방향 | 하위 → 상위 개체 생성 | 상위 → 하위 개체 생성 |
| 상속 여부 | 사용하지 않음 | 사용 가능 |
정리하면, 일반화는 개별 개체들의 공통점을 모아 추상적인 상위 개체를 만드는 것이고, 특수화는 하나의 상위 개체를 목적에 맞게 세분화하는 것입니다. 두 개념은 같은 E-R 모델을 서로 반대 방향에서 바라보는 관계이며, 실무 데이터베이스 설계에서는 상황에 따라 적절히 선택하여 사용하게 됩니다.