오늘은 DB모델링 중 슈퍼타입과 서브타입 관계에 대해 알아보겠습니다.
먼저 정의를 알아봅시다.
- 슈퍼타입 엔티티 : 상호 배타적인 더 작은 그룹으로 분할 시킬 수 있는 엔티티를 의미한다.
- 슈퍼타입 내의 분해된 그룹을 서브타입 엔티티라고 한다.
다시 설명하면 슈퍼타입과 서브타입은 각각의 실체에 공통되는 속성들을 모아놓은 엔티티를 슈퍼타입으로, 개별적인 속성들을 따로 분리해서 각각의 서브타입으로 정의할 수 있습니다.
예를 들어 사원 엔티티가 있고, 회사 내에 정규직 사원과 임시직 사원이 있을 수 있습니다.
정규직 사원은 연봉으로, 임시직 사원은 월급이나 수당으로 급여내역이 정의된다고 할 때 하나의 엔티티로 해당 데이터들을 다룬다면
정규직은 월급과 수당에, 임시직은 연봉에 NULL값이 입력될 것입니다.
이를 슈퍼타입과 서브타입 관계를 형성한다면
슈퍼타입 엔티티에는 공통되는 속성들을, 서브타입에는 개별적인 속성들을 따로 분리해 정의할 수 있다.
또한 슈퍼타입과 서브타입 관계의 종류에는 대표적으로 아래 3가지가 있습니다.
1. 각각의 테이블로 분리(Identity)
위 예시와 같은 식별 관계이며 슈퍼타입과 서브타입 각각을 테이블로 생성
- 슈퍼타입에 속한 공통속성들만 접근하는 빈도가 높은 경우
- 유연성을 확보해야하는 경우
2. 하나의 테이블로 합치기(Rollup)
슈퍼타입에 서브타입의 모든 컬럼을 통합하여 하나의 테이블로 생성
- 전체 테이블에 같이 접근하는 경우가 대부분일 때
- 서브타입의 속성 개수가 적은 경우(2개 이하)
3. 여러 개의 테이블로 분리(Rolldown)
슈퍼타입을 각각의 서브타입에 추가하여 서브타입별로 테이블 생성.
- 공통적인 속성들만 별도로 접근이 필요한 경우
- 슈퍼타입의 속성개수가 적은 경우
- 슈퍼타입과 관계를 맺은 엔티티가 거의 없는 경우
'데이터베이스' 카테고리의 다른 글
[DB] 인덱스(Index) (0) | 2022.12.13 |
---|