Computer >> 컴퓨터 >  >> 프로그래밍 >> SQL

확장 엔티티-관계(EER) 모델 완벽 정리: 핵심 개념부터 다이어그램까지

EER(Enhanced Entity-Relationship, 확장 엔티티-관계) 모델은 기존 ER 모델에 여러 확장 개념을 추가한 고수준 데이터 모델입니다. 향상된 ERD(Enhanced ERD)는 복잡한 데이터베이스가 요구하는 사양과 구조적 복잡성을 보다 정교하게 표현할 수 있는 고수준 모델로 널리 활용됩니다.

ER 모델의 기본 개념에 더해, EE-R 모델은 다음과 같은 개념들을 포함합니다.

  • 슈퍼클래스(Superclass)와 서브클래스(Subclass)
  • 일반화(Generalization)와 특수화(Specialization)
  • 카테고리(Category) 또는 유니언(Union) 타입
  • 집단화(Aggregation)

이러한 개념들은 EE-R 다이어그램을 작성하는 데 활용되며, 실제 데이터베이스 설계에서 복잡한 현실 세계의 관계를 더욱 명확하게 반영할 수 있도록 도와줍니다.

슈퍼클래스와 서브클래스

슈퍼클래스는 더 세분화된 하위 타입(subtype)으로 나눌 수 있는 엔티티를 의미합니다.

예시: '도형(Shape)'이라는 슈퍼클래스를 생각해볼 수 있습니다.

확장 엔티티-관계(EER) 모델 완벽 정리: 핵심 개념부터 다이어그램까지

슈퍼클래스인 도형(Shape)은 삼각형(Triangle), 사각형(Square), 원(Circle)이라는 하위 그룹으로 나뉩니다.

서브클래스는 고유한 속성을 가진 엔티티들의 집합입니다. 서브클래스는 슈퍼클래스로부터 속성과 성질을 상속(inheritance)받기 때문에, 공통 속성을 중복 정의할 필요 없이 계층적인 구조를 효율적으로 표현할 수 있습니다.

일반화와 특수화

일반화(Generalization)

일반화는 여러 하위 엔티티들이 공통으로 가지는 속성이나 성질을 추출하여 하나의 상위 엔티티로 통합하는 과정입니다.

확장 엔티티-관계(EER) 모델 완벽 정리: 핵심 개념부터 다이어그램까지

일반화는 상향식(bottom-up) 접근 방식입니다. 예를 들어 자동차(Car), 트럭(Truck), 오토바이(Motorcycle)라는 3개의 하위 엔티티가 있다고 가정해봅시다. 이 세 엔티티는 공통적인 특징을 바탕으로 하나의 슈퍼클래스인 '차량(Vehicle)'으로 일반화될 수 있습니다.

특수화(Specialization)

특수화는 하나의 엔티티 안에서 서로 다른 특성을 공유하는 부분집합을 식별하는 과정입니다. 이는 하향식(top-down) 접근 방식으로, 하나의 상위 엔티티를 더 낮은 수준의 세부 엔티티로 분해해 나갑니다.

앞선 예시에서 차량(Vehicle) 엔티티는 자동차, 트럭 또는 오토바이로 특수화될 수 있습니다. 즉, 일반화와 특수화는 같은 계층 구조를 서로 반대 방향에서 바라보는 상호 보완적인 개념이라 할 수 있습니다.

카테고리(Category) 또는 유니언(Union)

카테고리는 하나의 서브클래스가 둘 이상의 슈퍼클래스와 관계를 맺는 경우를 표현할 때 사용됩니다.

확장 엔티티-관계(EER) 모델 완벽 정리: 핵심 개념부터 다이어그램까지

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

집단화(Aggregation)

집단화는 전체 객체와 그 구성 요소(component) 사이의 관계를 나타내는 개념입니다.

확장 엔티티-관계(EER) 모델 완벽 정리: 핵심 개념부터 다이어그램까지

직원(Employee), 지점(Branch), 관리자(Manager) 사이의 삼진(ternary) 관계인 Works_On을 생각해봅시다. 이러한 상황을 모델링하는 가장 좋은 방법은 집단화를 활용하는 것입니다. 즉, 관계 집합인 Works_On을 더 높은 수준의 엔티티 집합(entity-set)으로 취급하는 것입니다.

이렇게 만들어진 엔티티 집합은 다른 일반 엔티티 집합과 동일한 방식으로 처리할 수 있습니다. 따라서 Works_On과 Manager 사이에 새로운 이진(binary) 관계를 생성하여, 누가 어떤 작업을 관리하는지를 명확하게 표현할 수 있습니다.