본문 바로가기
Programming/SQL

[SQL] 슈퍼타입, 서브타입 - exclusive 관계, inclusive관계

by 고막고막 2019. 5. 3.

부모의 속성 중에 더 작은 그룹으로 분리해서 관리할 필요가 있는 속성이 있을 때, 슈퍼타입 또는 서브타입 단위로 모델링 한다. 그 중 슈퍼타입(전체를 하나의 테이블로 관리)에 정의된 공통 속성과 각 서브타입의 속성을 더하여 각각의 서브타입별로 테이블을 설계하는 방법이 서브타입 단위의 모델링이다.

슈퍼타입 모델링

  • 장점: 전체 사원에 대한 검색이 쉽다, 무결성에 유리하다.
  • 단점: 서브타입별 속성이 많다면 지나치게 NULL이 많이 발생한다.(공간의 낭비)

 

서브타입 모델링

  • 장점: NULL이 없거나 줄어들고(공간의 낭비가 적다), 정규직 사원과 임시직 사원을 별개로 처리하는 업무가 많을 때 효율이 좋다.
  • 단점: UNION 함수를 쓸 때 중복제거 되기 때문에, 사번의 유일성(Unique)을 잘 관리해야 한다.  INTERSECT 연산 시 양쪽 테이블에 중복 사원이 안 나오도록 무결성을 유지하는 것이 중요하다. 비효율적인 조인이나 합집합, 교집합이 발생할 수 있다.(속도 저하)

 

ERwin은 슈퍼타입과 서브타입 간의 변환을 자동으로 해주는 기능을 가지고 있다. 
Rollup을 실행하면 서브타입 → 슈퍼타입으로 변환을 시켜주고, Rolldown을 실행하면 슈퍼타입 → 서브타입으로 변환을 시켜준다.

 

이제 서브타입으로 모델링한 테이블들을 데이터 모델러로 구현해보자. 서브타입이 Exclusive관계와 Inclusive관계로 나뉘어지는 것을 볼 수 있다. 

Exclusive 관계 (Disjoint 관계, 상호배제 관계)

여기서 사원은 정규직 또는 임시직 한 곳에만 속할 수 있고, 두 군데에 모두 속할 수는 없다. 즉, 상호배제 관계에서는 하나의 슈퍼타입 엔터티(사원)는 여러 개의 서브타입 엔터티(정규직, 임시직)를 가질 수 없다는 말과 같다. 

 

Inclusive 관계 (상호보완 관계)

상호보완 관계는 서로 혼용될 수 있는 관계로, 슈퍼타입 엔터티(사원)가 여러 개의 서브타입 엔터티(정규직, 임시직)을 가질 수 있다.