ER/Studio 데이터모델링이란 - 8.관계형 테이블 전환
2012.01.04 02:15
1 관계형 테이블 전환
1.1 관계형 테이블로 전환
논리적 데이터 모델링을 통해 산출한 ERD를 관계형 데이터베이스로 구축할 수 있도록 테이블 관계도로 전환한다.
→ 엔티티를 테이블로 전환한다.
→ 주식별자를 PK로 변환한다.
→ 속성은 컬럼으로 변환한다.
→ 관계에 의한 외부 식별자는 FK로 변환한다.
관계에 의한 외부 식별자는 FK로 변환한다.
(1) 1:1 관계
* 부모 엔티티(Mandatory)의 PK가 자식 엔티티의 FK로 변환된다.
(2) 1:N 관계
(3) 재귀적 관계
(4) 슈퍼타입 서브타입 관계
■ 통합 테이블로 변환
서브타입에 있는 모든 컬럼을 슈퍼타입에 하나로 통합하고, 각각의 서브타입 정보를 구분하기 위한 구분 컬럼이 필요하다.
장점 | 단점 |
---|---|
- 데이터 엑세스가 보다 간편 - VIEW를 활용하여 각 서브타입 만을 엑세스하거나 수정 가능 - 수행속도가 좋아지는 경우가 많다 - 서브타입 구분없는 임의 집합의 가공이 용이 - 다수의 서브타입을 통합한 경우 조인(JOIN) 감소효과가 크다 - 복잡한 처리를 하나의 SQL로 통합하기가 용이 |
- 특정 서브타입의 NOT NULL 제한 불가 - 테이블의 컬럼수가 증가 - 테이블의 블럭수가 증가 - 처리시 마다 서브타입의 구분(TYPE) 이 필요해 지는 경우가 많다- 인덱스(INDEX) 크기가 증가 |
구분 컬럼이 없는 경우, 방문접수에 대한 데이터만 보기를 원한다면?
SELECT 접수번호, 신청자성명, 접수일자, 수수료, 방문지점코드, 담당부서 FROM 접수 WHERE 인터넷ID IS NOT NULL AND 수수료납부방법 IS NOT NULL |
구분 컬럼이 있는 경우
SELECT 접수번호, 신청자성명, 접수일자, 수수료, 방문지점코드, 담당부서 FROM 접수 WHERE 접수구분코드 = ‘01’ |
구분컬럼을 이용하면 조건이 매우 간단해짐.
단, 입력하는 Insert문 생성시 접수구분코드 = ‘01’이면 인터넷ID, 수수료납부방법을 NULL처리,
접수구분코드 = ‘02’이면 방문지점코드, 담당부서를 NULL처리 해주어야 한다.
■서브타입 테이블로 변환
서브타입 컬럼에 슈퍼타입에 있는 모든 속성을 포함하도록 구성
장점 | 단점 |
---|---|
- 각 서브타입 속성들의 선택사양 명확 - 처리시마다 서브타입 유형구분이 불필요 - 전체 테이블 스캔시 유리 - 단위 테이블의 크기가 감소 |
- 전체적인, 혹은 서브타입 구분없이 데이터를 처리하는 경우 UNION 이 발생 - 처리속도가 감소하는 경우가 많다 - 트랜잭션 처리시 여러 테이블을 처리하는 경우가 빈번해 진다 - 복잡한 처리의 SQL 통합이 어려워 진다 - 여러 테이블을 합친 VIEW는 조회만 가능하다- UID 유지관리가 어렵다 |
서브타입별로 구분하여 처리하는 업무가 많고, 서브타입 각각이 관리하는 고유 속성의 분포차가 심할 때 권장
■ 각각의 테이블로 변환
슈퍼타입 테이블과 서브타입 테이블간에는 1:1 주식별자 관계에 의해 접수번호가 생성.
접수 테이블에는 접수구분코드가 있어 각각의 레코드가 어느 테이블과 연관되는지 구별하는 구분자 역할을 한다.
장점 | 단점 | |
---|---|---|
- 저장 공간이 상대적으로 적음 - 서브타입 또는 서브타입 각각의 테이블에 속한 정보만 조회하는 경우 문장 작성이 용이 |
- 서브타입 또는 서브타입의 정보를 같이 처리하면 항상 조인이 발생하여 성능 저하 |
여러 가지 경우를 만족할 때 사용한다.
|
테이블정의서 작성