ER 스키마를 관계 모델 릴레이션으로 사상하기
논리적 설계 단계에서 ER 스키마를 관계 데이터 모델의 릴레이션들로 사상한다.
ER 스키마에는 엔티티 타입과 관계 타입이 존재하지만 관계 데이터베이스에는 엔티티 타입과 관계 타입을 구분하지 않는다.
릴레이션으로 사상할 대상이 ER 스키마에서 엔티티 타입인지 또는 관계 타입인지, 엔티티 타입이라면 정규 엔티티 타입인지 또는 약한 엔티티 타입인지, 관계 타입이라면 2진 관계인지, 3진 이상의 관계인지 등에 따라 사상하는 방법이 달라짐
ER 모델을 릴레이션들로 사상하는 7개의 알고리즘 단계가 있음.
단계 1. 정규 엔티티 타입과 단일 값 애트리뷰트
엔티티 타입 E에 대해 릴레이션 R을 생성함
E에 있던 단순 애트리뷰트들은 릴레이션 R에 모두 포함시킴
E에서 복합 애트리뷰트는 그 복합 애트리뷰트를 구성하는 단순 애트리뷰트들만 R에 포함시킴
E의 기본 키가 릴레이션 R의 기본 키가 됨
단계 2. 약한 엔티티 타입과 단일 값 애트리뷰트
소유 엔티티 타입 E를 갖는 약한 엔티티 타입 W에 대해 릴레이션 R을 생성함
W에 있던 단순 애트리뷰트들은 릴레이션 R에 모두 포함시킴
소유 엔티티 타입에 해당하는 릴레이션의 기본 키를 R의 외래 키로 포함시킴
릴레이션 R의 기본 키는 R의 부분 키와 외래 키의 조합으로 이루어짐
단계 3. 2진 1:1 관계 타입
2진 1:1 관계 타입 R에 대하여, R에 참여하는 엔티티 타입에 대응되는 릴레이션 S와 T 찾음
S, T 중 하나를 선택한다. 만약 S를 선택했다면 T의 기본 키를 S의 외래 키로 포함시킨다.
이 때 완전하게 참여하는 릴레이션을 선택하는 것이 좋다.
R이 가지고 있는 모든 단순 애트리뷰트들을 S에 포함시킨다.
두 엔티티 타입 모두 R에 완전하게 참여할 때에는 두 엔티티 타입과 관계 타입을 하나의 릴레이션으로 합칠 수도 있다.
단계 4. 정규 2진 1:N 관계 타입
N측의 참여 엔티티 타입에 대응되는 릴레이션 S를 만든다.
1측의 엔티티 타입에 대응되는 릴레이션 T의 기본 키를 S에 외래 키로 포함시킨다.
이 때 반대로 하면 (S의 기본 키를 T에 외래 키로 포함시키면) 애트리뷰트 값들의 집합이 들어가거나 중복이 많이 발생하게 된다.
R이 가지고 있는 모든 단순 애트리뷰트들을 S에 포함시킨다.
단계 5. 2진 M:N 관계 타입
관계 타입에 대한 릴레이션 R을 생성함
참여 엔티티 타입에 해당하는 릴레이션의 기본 키를 릴레이션 R에 외래 키로 포함시킴
이들의 조합이 R의 기본 키가 됨
R이 가지고 있는 모든 단순 애트리뷰트들을 S에 포함시킴
단계 6. 3진 이상의 관계 타입
관계 타입에 대한 릴레이션 R 생성
R에 참여하는 모든 엔티티 타입에 대응되는 릴레이션들의 기본 키를 R에 외래 키로 포함시킴
R이 가지고 있는 모든 단순 애트리뷰트들을 S에 포함시킴.
일반적으로는 외래 키들의 조합이 R의 기본 키가 됨
엔티티 타입들의 카디널리티가 1:N:N인 경우에는 카디널리티가 1인 릴레이션의 기본 키를 참조하는 외래 키는 제외한 외래 키들의 조합이 R의 기본 키가 됨. (1인 릴레이션은 없어도 되므로)
단계 7. 다치 애트리뷰트
각 다치 애트리뷰트에 대하여 R 생성
다치 애트리뷰트에 해당하는 애트리뷰트를 R에 포함시킴
다치 애트리뷰트를 애트리뷰트로 갖는 엔티티 타입이나 관계 타입에 해당하는 릴레이션의 기본 키를 R에 외래 키로 포함시킴.
R의 기본 키는 다치 애트리뷰트와 외래 키의 조합
'CS > DB' 카테고리의 다른 글
[DB] 화일 조직 (0) | 2022.05.19 |
---|---|
[DB] 물리적 데이터베이스 설계 (0) | 2022.05.16 |
[DB] ER 모델 (0) | 2022.05.14 |
[DB] 데이터베이스 설계 개요 (0) | 2022.05.13 |
[DB] SQL 사용법(2) (0) | 2022.04.26 |