부모의 속성 중에 더 작은 그룹으로 분리해서 관리할 필요가 있는 속성이 있을 때, 슈퍼타입 또는 서브타입 단위로 모델링 한다. 그 중 슈퍼타입(전체를 하나의 테이블로 관리)에 정의된 공통 속성과 각 서브타입의 속성을 더하여 각각의 서브타입별로 테이블을 설계하는 방법이 서브타입 단위의 모델링이다.
슈퍼타입 모델링
- 장점: 전체 사원에 대한 검색이 쉽다, 무결성에 유리하다.
- 단점: 서브타입별 속성이 많다면 지나치게 NULL이 많이 발생한다.(공간의 낭비)
서브타입 모델링
- 장점: NULL이 없거나 줄어들고(공간의 낭비가 적다), 정규직 사원과 임시직 사원을 별개로 처리하는 업무가 많을 때 효율이 좋다.
- 단점: UNION 함수를 쓸 때 중복제거 되기 때문에, 사번의 유일성(Unique)을 잘 관리해야 한다. INTERSECT 연산 시 양쪽 테이블에 중복 사원이 안 나오도록 무결성을 유지하는 것이 중요하다. 비효율적인 조인이나 합집합, 교집합이 발생할 수 있다.(속도 저하)
ERwin은 슈퍼타입과 서브타입 간의 변환을 자동으로 해주는 기능을 가지고 있다.
Rollup을 실행하면 서브타입 → 슈퍼타입으로 변환을 시켜주고, Rolldown을 실행하면 슈퍼타입 → 서브타입으로 변환을 시켜준다.
이제 서브타입으로 모델링한 테이블들을 데이터 모델러로 구현해보자. 서브타입이 Exclusive관계와 Inclusive관계로 나뉘어지는 것을 볼 수 있다.
Exclusive 관계 (Disjoint 관계, 상호배제 관계)
여기서 사원은 정규직 또는 임시직 한 곳에만 속할 수 있고, 두 군데에 모두 속할 수는 없다. 즉, 상호배제 관계에서는 하나의 슈퍼타입 엔터티(사원)는 여러 개의 서브타입 엔터티(정규직, 임시직)를 가질 수 없다는 말과 같다.
Inclusive 관계 (상호보완 관계)
상호보완 관계는 서로 혼용될 수 있는 관계로, 슈퍼타입 엔터티(사원)가 여러 개의 서브타입 엔터티(정규직, 임시직)을 가질 수 있다.
'Programming > SQL' 카테고리의 다른 글
[Oracle] sqlplus 화면 크기 관련 명령어 linesize, pagesize (0) | 2019.12.23 |
---|---|
[Oracle] 15.제약 조건(PK, FK, UK, NOT NULL, CHECK) 설정, 조회 쿼리 (0) | 2019.05.07 |
[SQL] 1,2,3차 정규화 (feat. ERwin Data Modeler) (0) | 2019.05.03 |
[SQL] 식별자의 정의와 종류(후보키, 기본키, 대체키, 복합키, 대리키) (0) | 2019.04.30 |
[Oracle] 14. 트랜잭션과 잠금(Exclusive Lock, Share Lock, Dead Lock, Undo Segment) (0) | 2019.04.26 |