패스트캠퍼스 강의와 이기적 기본서를 기반으로 공부합니다.
슈퍼/서브타입 논리 데이터 모델
출처: t.ly/9iVN
- Worker=직원이라는 엔터티는 슈퍼 타입
- worker의 하위분류인 관리/교사/스탭은 서브타입
- 부모 자식 관계가 나타남
- 슈퍼-서브타입간 관계는 배타적 관계 or 포괄적 관계
- 공통의 부분을 슈퍼타입 엔터티로 모델링
- 공통으로부터 상속받지만 차이가 있는 부분에 대해서는 서브타입 엔터리로 구성
- 분류는 데이터 양과 트랜잭션 유형에 따라 달라짐
슈퍼타입 single type / all in one type |
테이블 한 개 슈퍼 타입과 서브 타입을 한 개의 테이블로 도출 테이블 개수가 제일 적음 - 조인 성능이 좋고 관리가 편리 확장성 나쁨 입출력 성능이 나쁨 |
서브타입 plus type / super+sub type |
각각의 서브타입 테이블 조인 발생, 관리 어려움 |
개별타입 OnetoOne type / 1:1 타입 |
슈퍼 타입과 서브 타입을 개별 테이블로 도출 확장성 좋음 테이블 개수가 제일 많음 |
모델 변환의 중요성
- 트랜잭션은 항상 슈퍼타입으로 처리한다면, 테이블이 개별타입으로 유지될 때 UNION 연산에 의해 성능이 저하될 수 있음
PK/FK 칼럼 순서와 성능
테이블에 발생되는 트랜잭션 조회 패턴에 따라 PK/FK 칼럼 순서 조정이 필요
PK가 2개라면, 물리 데이터 모델일 때 기본키가 되어 index를 자동으로 만듦
→ 인덱스 선두 칼럼에 대한 조건이 없을 경우 인덱스 전체 혹은 테이블 전체를 읽어서 성능 저하