슈퍼/서브타입 데이터 모델 (Extended ER 모델)
업무를 구성하는 데이터의 특징을 공통과 차이점의 특징을 고려하여 효과적으로 표현하는 모델링 방법입니다.
즉, 공통의 부분은 슈퍼타입, 차이가 있는 속성에 대해서는 별도의 서브타입으로 구분하여 업무의 모습을 정확하게 표현할 수 있습니다.
물리적인 데이터 모델로 변환
슈퍼/서브타입의 데이터 모델은 위의 사진처럼 논리적인 데이터 모델에서 이용되는 형태로 주로 분석단계에서 사용됩니다.
따라서, 물리적인 데이터 모델을 설계하는 단계에서는 슈퍼/서브타입 데이터 모델을 3가지 타입 중 하나로 변환합니다.
1:1 타입 (One to One Type)
슈퍼타입과 서브타입 각각을 테이블로 생성합니다.
활용되는 경우
슈퍼타입과 서브타입을 각각 적절히 Access하는 경우
슈퍼타입에 속한 공통속성들만 Access하는 빈도가 높은 경우
업무적으로 변화가능성이 높아 유연성을 확보할 필요가 있는 경우
슈퍼 + 서브타입 (Plus Type)
슈퍼타입을 각각의 서브타입에 추가하여 서브타입별로 테이블 생성합니다.
활용되는 경우
데이터 처리 서브타입을 구분하여 사용함에 따라 공통적인 속성들만 별도로 Access할 필요가 없는 경우
슈퍼타입의 속성개수가 많지 않은 경우
슈퍼타입과 관계를 맺은 엔티티가 거의 없는 경우
All in One 타입 (Single Type)
슈퍼타입에 모든 서브타입의 컬럼을 통합하여 하나의 테이블로 생성합니다.
활용되는 경우
전체 테이블을 같이 Access처리하는 것이 대부분인 경우
서브타입의 속성 개수가 적은 경우(1~2개)
서브타입과 관계를 맺은 엔티티가 별로 없는 경우
업무적으로 변화가능성이 작아 추가적인 서브타입이나 속성 추가의 가능성이 적은 경우
변환시 고려할 점
슈퍼/서브타입에 대한 변환 시 트랜잭션 특성을 고려하지 않고 테이블을 설계하면 성능이 저하될 수 있습니다.
성능이 저하되는 경우
트랜잭션은 항상 일괄로 처리하는데 테이블은 개별로 유지되어 Union 연산에 의해 성능 저하
트랜잭션은 항상 서브타입 개별로 처리하는데 테이블은 하나로 통합되어 있어 불필요하게 많은 양의 데이터 때문에 성능 저하
트랜잭션은 항상 슈퍼+서브타입을 공통으로 처리하는데 개별로 유지되어 있거나 하나의 테이블로 집약되어있어 성능 저하
즉, 트랜잭션의 유형과 데이터 양을 고려하여 변환할 타입을 선택해야합니다.