EER(Enhanced Entity-Relationship, 확장 엔티티-관계) 모델은 기존 ER 모델에 여러 확장 개념을 추가한 고수준 데이터 모델입니다. 향상된 ERD(Enhanced ERD)는 복잡한 데이터베이스가 요구하는 사양과 구조적 복잡성을 보다 정교하게 표현할 수 있는 고수준 모델로 널리 활용됩니다.
ER 모델의 기본 개념에 더해, EE-R 모델은 다음과 같은 개념들을 포함합니다.
- 슈퍼클래스(Superclass)와 서브클래스(Subclass)
- 일반화(Generalization)와 특수화(Specialization)
- 카테고리(Category) 또는 유니언(Union) 타입
- 집단화(Aggregation)
이러한 개념들은 EE-R 다이어그램을 작성하는 데 활용되며, 실제 데이터베이스 설계에서 복잡한 현실 세계의 관계를 더욱 명확하게 반영할 수 있도록 도와줍니다.
슈퍼클래스와 서브클래스
슈퍼클래스는 더 세분화된 하위 타입(subtype)으로 나눌 수 있는 엔티티를 의미합니다.
예시: '도형(Shape)'이라는 슈퍼클래스를 생각해볼 수 있습니다.

슈퍼클래스인 도형(Shape)은 삼각형(Triangle), 사각형(Square), 원(Circle)이라는 하위 그룹으로 나뉩니다.
서브클래스는 고유한 속성을 가진 엔티티들의 집합입니다. 서브클래스는 슈퍼클래스로부터 속성과 성질을 상속(inheritance)받기 때문에, 공통 속성을 중복 정의할 필요 없이 계층적인 구조를 효율적으로 표현할 수 있습니다.
일반화와 특수화
일반화(Generalization)
일반화는 여러 하위 엔티티들이 공통으로 가지는 속성이나 성질을 추출하여 하나의 상위 엔티티로 통합하는 과정입니다.

일반화는 상향식(bottom-up) 접근 방식입니다. 예를 들어 자동차(Car), 트럭(Truck), 오토바이(Motorcycle)라는 3개의 하위 엔티티가 있다고 가정해봅시다. 이 세 엔티티는 공통적인 특징을 바탕으로 하나의 슈퍼클래스인 '차량(Vehicle)'으로 일반화될 수 있습니다.
특수화(Specialization)
특수화는 하나의 엔티티 안에서 서로 다른 특성을 공유하는 부분집합을 식별하는 과정입니다. 이는 하향식(top-down) 접근 방식으로, 하나의 상위 엔티티를 더 낮은 수준의 세부 엔티티로 분해해 나갑니다.
앞선 예시에서 차량(Vehicle) 엔티티는 자동차, 트럭 또는 오토바이로 특수화될 수 있습니다. 즉, 일반화와 특수화는 같은 계층 구조를 서로 반대 방향에서 바라보는 상호 보완적인 개념이라 할 수 있습니다.
카테고리(Category) 또는 유니언(Union)
카테고리는 하나의 서브클래스가 둘 이상의 슈퍼클래스와 관계를 맺는 경우를 표현할 때 사용됩니다.

예를 들어 소유자(Owner)는 차량(Vehicle)과 주택(House)이라는 두 슈퍼클래스의 부분집합으로 표현할 수 있습니다. 이처럼 서로 다른 유형의 엔티티를 하나의 개념으로 묶어야 할 때 유니언 타입이 유용하게 사용됩니다.
집단화(Aggregation)
집단화는 전체 객체와 그 구성 요소(component) 사이의 관계를 나타내는 개념입니다.

직원(Employee), 지점(Branch), 관리자(Manager) 사이의 삼진(ternary) 관계인 Works_On을 생각해봅시다. 이러한 상황을 모델링하는 가장 좋은 방법은 집단화를 활용하는 것입니다. 즉, 관계 집합인 Works_On을 더 높은 수준의 엔티티 집합(entity-set)으로 취급하는 것입니다.
이렇게 만들어진 엔티티 집합은 다른 일반 엔티티 집합과 동일한 방식으로 처리할 수 있습니다. 따라서 Works_On과 Manager 사이에 새로운 이진(binary) 관계를 생성하여, 누가 어떤 작업을 관리하는지를 명확하게 표현할 수 있습니다.