두번째 방법 : 서브타입을 슈퍼타입에 통합하여 하나의 엔터티로 만드는 것
슈퍼타입에 통합하는 것이어서 엔터티 명은 슈퍼타입과 같이 동일한 명으로 한다.
슈퍼타입의 주식별 속성도 그대로 주식별자로 한다.
슈퍼타입 속성도 그대로 사용하고 서브타입에 존재하던 고유속성도 모두 슈퍼타입엔터티에 추가한다.
주의할 점 : 서브타입을 구분하는 사원유형코드 속성이 반드시 존재해야 한다는 것!!!
사원이 정규직일때 계약직고유속성이었던 시급여 추가수당 계약기간값은 null값이 되고,
계약직일때는 정규직고유속성인 월급여 연차휴가 과정번호 속성이 null 값이 된다.
통합모델 단점인 모델만으로는 업무규칙을 알 수 없고, 값을 관리하기 힘들기 때문에 check 제약조건으로 관리 할수 있다.
check 제약 조건은 서브타입이 업무적으로 서로 강 결합 관계일 때 사용가능하다.
고유속성이 적을때 사용하면 좋다. 대부분의 업무가 하나의 서브타입에서 수행될 때, 즉 하나의 서브타입에 대한 업무가 중요하고 속성도 많다면 주요 서브타입에 나머지 서미타입을 통합한 이 모델을 사용할 수 있다.
서브타입에서 관리하는 데이터가 중요한 데이터 이거나, 서브타입별 데이터양이 소구일때 통합모델 사용가능
그러나 서브타입별 속성이 지속적으로 늘어날 가능성이 있다면 이모델은 주의해서 사용!!!!
서브타입일때 통합모델을 사용하면 혼란을 줄일 수 있다.
하나의 엔터티로 사용하기 때문에 엔터티 성격이 분명해 질 수 있고, 데이터 관리하는 방법에 혼선이 없을 수 있다.
장점
- 슈퍼타입과 서브타입 엔터티의 조인이 발생하지 않아 조회쿼리가 단순해지며 성능이 좋아질 때가 많다.
- 엔터티 수가 감소해 관리가 용이
- 복잡한 관계가 없어져 모델이 단순해지기 때문에 ERD 관리하기 수월하다
- 전체 서브타입을 검색할 때 union 사용하지 않아 성능측면 유리하다
단점
- 엔터티 속성개수가 많아져 크기 증가할 수 있다
- 널값이 존재하는 속성이 많이진다.
- 정규직 사원이나 계약직 사원에 대한 업무가 추가되거나 변경되면 애플리케이션에 끼치는 영향이 커진다.
- 업무규칙을 모델에 표현하기 어렵다.
- 공통속성만을 조회하는 요건이 빈번하거나 조회범위가 넣으면 I/O 가 많아져 성능이 나빠진다.
- 엔터티 정체성이 희석될 수있다.
데이터는 가능한 통합하는 것이 원칙이다. 핵심적인 엔터티가 아니라면 하나의 엔터티로 통합하는 것이 바람직하다.
중요엔터티라면 세번째 방법과 비교하여 어떤유형으로 할지 고민해봐야 한다.
선택기준은 하나의 서브타입별 고유속성이 많이 존재하는 지? 지속적으로 늘어날 가능성이 있는지?
'관계형데이터모데링노트 요약' 카테고리의 다른 글
서브타입 모델의 물리 모델 변환 - 슈퍼타입서브타입 개별생성(배타관계) (1) | 2023.11.06 |
---|---|
서브타입 모델의 물리모델 변환-슈퍼타입서브타입 개별생성 (0) | 2023.11.05 |
서브타입 모델의 물리모델 변환-서브타입별로 엔터티 분할 (0) | 2023.11.04 |
슈퍼타입&서브타입 물리모델 변환 (0) | 2023.11.04 |
완전 서브타입과 불완전 서브타입 (1) | 2023.11.03 |