Extended E-R model: 두 판 사이의 차이
| 39번째 줄: | 39번째 줄: | ||
==Generalization== | ==Generalization== | ||
Specialization은 하나의 entity set을 하위 수준의 entity set으로 세분화하며 설계하는 top-down 설계방식이다. 이에 반대되는 개념이 Generalization이며, bottom-up 설계 방식이 사용된다. 이 방식에서는 여러 entity set들을 공통된 특성을 기반으로 더 높은 수준의 entity set으로 통합하면서 설계를 한다. | |||
예를 들어, 초기에 instructor entity set과 student entity set이 존재한다고 하자. 이때 instructor는 속성으로 를 가지고, studnet가 | |||
==각주== | ==각주== | ||
[[분류:데이터베이스 시스템]] | [[분류:데이터베이스 시스템]] | ||
2025년 3월 29일 (토) 03:57 판
상위 문서: Entity Relationship Model
개요
기본적인 E-R(Entity-Relationship) 모델은 대부분의 데이터베이스 특징을 모델링할 수 있지만, 더 정교한 개념을 표현하기 위해 확장된 개념이 필요할 때가 있다. Extended Entity-Relationship Model(EER)은 이러한 한계를 보완하기 위해서 사용된다. 이러한 EER은 아래의 개념들을 통해서 더욱 정교한 데이터베이스를 구축할 수 있도록 한다.
- Specialization
- Generalization
- Higher- and Lower-Level Entity Sets
- Attribute Inheritance
- Aggregation
위 개념들을 아래에서 설명하기 위해서 University 데이터베이스를 중심으로 설명한다. 대학교 내 다양한 사람들을 모델링하기 위해 person entity를 정의하며, 해당 entity에는 ID, name, street, city와 같은 attribute(속성)들이 포함된다.
Specialization

Specailization이란, 하나의 entity set을 보다 세부적인 하위 그룹들로 나누는 것을 의미한다. 이때, 하위 그룹들로 나누기 위해서는 entity set 내의 일부 entity가 특정 속성을 가지지만 다른 entity들은 해당 속성을 가지지 않아야 한다. 이를 통해서 같은 범주들에 속하는 entity들 사이의 차이를 명확하게 기술할 수 있다.
예를 들어서 person entity set을 살펴보자. 대학교의 person은 student와 employee라는 두개의 하위 그룹으로 구분될 수 있을 것이다. employee는 person의 속성에 더하여 salary 속성이 추가로 부여된다. 또한 student는 person의 속성에 추가로 tet_cred라는 속성이 추가로 부여된다. 이와 같이 specialized된 entity set이 원래의 entity set의 모든 속성들과 모든 relationship participation을 상속받는 것을 attribute inheritance라고 한다.
이때 secialization은 계층적으로 적용되어 이미 specailized된 entity set에도 다시 적용될 수 있다. 예를 들어서 employee entity set은 instructor과 secretary로 다시 specialized될 수 있다. 이때 instructor는 추가로 rank 속성을 가지며, secretary는 추가로 hours_per_week 속성을 가진다. 이렇게 specialized된 entity은 다른 entity set과 추가적인 relationship을 가질 수 있다. 예를 들어 각각의 secretary는 특정한 instructor를 보조하는 relationship을 가질 수 있다.
specialization은 오른쪽 그림과 같이 hollow arrow head로 표현된다. 이때 해당 화살표는 specialized된 entity에서 상위의 entity로 향하며, 이 관계를 ISA관계라고 한다. 예를 들어, 'instructor "is a" employee'와 같이 표현한다.
이때, specialization은 두가지 유형으로 나뉜다. Overlapping Specialization과 disjoint specialization이 바로 그것이다. Overlapping specialization은 한 entity가 여러개의 하위 그룹에 속할 수 있는 경우이다. 예를 들어 person에서 specialized된 employee와 student이 바로 그것이다. 그 이유는 어떤 person이 student이지만, 근로나 조교 활동 등을 통해서 employee에도 동시에 소속될 수 있기 때문이다. 이 경우, 다중 화살표를 사용하여 이를 표현한다.
Disjoint specialization은 한 entity가 여러개의 하위 그룹 중 단 하나에만 속할 수 있는 경우이다. 예를 들어 employee에서 specialized된 scretary와 instrouctor이 바로 그것이다. 그 이유는 instructor는 scretary가 될 수 없으며, 그 반대도 마찬가지이기 때문이다. 이 경우, 단일 화살표를 사용하여 이를 표현한다.
Representing Secialization via Schema
두가지 방법이 존재한다.
- 상위 엔터티와 하위 엔터티 각각 스키마 분리
- 상위 entity set에 대해 하나의 schema를 만든다.
- person(ID, name, street, city)
- 하위 entity set마다 별도의 schema를 만들고, 상위 entity set의 primary key와 local attribute를 포함시킨다.
- student(ID, tot_cred), employee(ID, salary)
- 장점: data redundancy가 없다.
- 단점: specialized된 entity set을 조회하기 위해서는 상위 entity set의 속성까지 참조해야 하므로 복잡성과 조회 시간이 증가한다.
예를 들어, employee에 대한 정보를 조회할 때, person과 employee 두 테이블을 조인해야 한다.
- 상위 entity set에 대해 하나의 schema를 만든다.
- 모든 entity마다 완전한 schema를 만든다.
- 각 entity set마다 스키마를 만들고, 상속된 속성까지 포함시킨다.
- person(ID, name, street, city)
student(ID, name, street, city, tot_cred)
employee(ID, name, street, city, salary)
- person(ID, name, street, city)
- 장점: specialized된 entity set을 조회할 때에도 해당 entity set의 schema만을 조회하면 된다.
- 단점: data redundancy가 발생한다. 예를 들어, student이자 employee인 경우 name, street, city가 중복 저장된다.
- 각 entity set마다 스키마를 만들고, 상속된 속성까지 포함시킨다.
Generalization
Specialization은 하나의 entity set을 하위 수준의 entity set으로 세분화하며 설계하는 top-down 설계방식이다. 이에 반대되는 개념이 Generalization이며, bottom-up 설계 방식이 사용된다. 이 방식에서는 여러 entity set들을 공통된 특성을 기반으로 더 높은 수준의 entity set으로 통합하면서 설계를 한다.
예를 들어, 초기에 instructor entity set과 student entity set이 존재한다고 하자. 이때 instructor는 속성으로 를 가지고, studnet가