오늘은 DB모델링 중 슈퍼타입과 서브타입 관계에 대해 알아보겠습니다.

 

먼저 정의를 알아봅시다.

- 슈퍼타입 엔티티 : 상호 배타적인 더 작은 그룹으로 분할 시킬 수 있는 엔티티를 의미한다.
- 슈퍼타입 내의 분해된 그룹을 서브타입 엔티티라고 한다.

 

다시 설명하면 슈퍼타입과 서브타입은 각각의 실체에 공통되는 속성들을 모아놓은 엔티티를 슈퍼타입으로, 개별적인 속성들을 따로 분리해서 각각의 서브타입으로 정의할 수 있습니다.

 

 

예를 들어 사원 엔티티가 있고, 회사 내에 정규직 사원과 임시직 사원이 있을 수 있습니다.

정규직 사원은 연봉으로, 임시직 사원은 월급이나 수당으로 급여내역이 정의된다고 할 때 하나의 엔티티로 해당 데이터들을 다룬다면 
정규직은 월급과 수당에, 임시직은 연봉에 NULL값이 입력될 것입니다.

사원 엔티티 예시

이를 슈퍼타입과 서브타입 관계를 형성한다면
슈퍼타입 엔티티에는 공통되는 속성들을, 서브타입에는 개별적인 속성들을 따로 분리해 정의할 수 있다.

슈퍼타입과 서브타입 관계

또한 슈퍼타입과 서브타입 관계의 종류에는 대표적으로 아래 3가지가 있습니다.

 

1. 각각의 테이블로 분리(Identity)

Identity 예시


위 예시와 같은 식별 관계이며 슈퍼타입과 서브타입 각각을 테이블로 생성

- 슈퍼타입에 속한 공통속성들만 접근하는 빈도가 높은 경우
- 유연성을 확보해야하는 경우

 

 

2. 하나의 테이블로 합치기(Rollup)

Rollup

슈퍼타입에 서브타입의 모든 컬럼을 통합하여 하나의 테이블로 생성

- 전체 테이블에 같이 접근하는 경우가 대부분일 때
- 서브타입의 속성 개수가 적은 경우(2개 이하)

 

 

3. 여러 개의 테이블로 분리(Rolldown)

Rolldown

 

슈퍼타입을 각각의 서브타입에 추가하여 서브타입별로 테이블 생성.

- 공통적인 속성들만 별도로 접근이 필요한 경우

- 슈퍼타입의 속성개수가 적은 경우

- 슈퍼타입과 관계를 맺은 엔티티가 거의 없는 경우

 

 

반응형

'데이터베이스' 카테고리의 다른 글

[DB] 인덱스(Index)  (0) 2022.12.13

+ Recent posts