반응형
[DB] 데이터베이스 ER모델 (1) - 엔티티, 엔티티 타입, 애트리뷰트
목차
1. 논리적 설계 단계
2. ER - 릴레이션 사상 알고리즘 (7단계)
(1) 논리적 설계 단계
: ER 스키마를 관계 데이터 모델의 릴레이션들로 사상합니다.
데이터베이스 관리를 위해 선택한 DBMS의 데이터 모델을 사용하여 논리적 스키마를 생성한다.
ER 스키마에는 엔티티 타입과 관계 타입이 존재하지만,
관계 데이터베이스(논리적 스키마)에는 릴레이션들만 있습니다. ( 관계를 외래 키(FK)를 통해 나타낸다.)
릴레이션으로 사상할 대상이 ER 스키마에서
(1) 엔티티 타입인지, (만약 엔티티 타입이라면 정규 엔티티 타입인지 또는 약한 엔티티 타입인지? ) /
(2) 관계 타입인지, ( 만약 관계 타입이라면 2진 관계인지 3진 관계인지 순환적 관계인지) /
(3) 관계 타입의 카디날리티가 1:1인지 또는 1:N 인지 또는 M:N인지 /
(4) 애트리뷰트가 단일 값 애트리뷰트 인지 또는 다치 애트리뷰트인지
확인하면서 각 사상하는 방법에 따라 사상한다.
※ 릴레이션의 한 투플 = 엔티티 타입의 한 엔티티
(2) ER모델을 릴레이션들로 사상하는 7단계 알고리즘
✔ 1단계 : 정규 엔티티 타입과 단일 값 애트리뷰트
1) ER 스키마의 각 정규 엔티티 타입 E에 대해 하나의 릴레이션 R을 생성한다.
2) E에 있던 단순 애트리뷰트들을 모두 릴레이션 R에 포함시킨다.
3) E에서 복합 애트리뷰트(ex, 주소)는 그 복합 애트리뷰트를 구성하는 단순 애트리뷰트들만 릴레이션 R에 포함시킨다.
4) E의 기본 키가 그대로 릴레이션 R의 기본키가 된다.
✔ 2 단계 : 약한 엔티티 타입과 단일 값 애트리뷰트
1) ER 스키마에서 소유 엔티티 타입 E를 갖는 약한 엔티티 타입 W에 대하여 릴레이션 R을 생성한다.
2) W에 있던 모든 단순 애트리뷰트들을 릴레이션 R에 포함시킨다.
3) 소유 엔티티 타입에 해당하는 릴레이션의 기본키를 릴레이션 R에 외래키로 포함시킨다.
4) 릴레이션 R의 기본키는 약한 엔티티 타입의 부분 키와 소유 엔티티 타입에 해당하는 릴레이션을 참조하는 외래 키의 조합으로 이루어진다. ( 즉, PK = 부분키 + 외래 키(소유 엔티티 타입의 기본키) )
✔ 3단계 : 2진 1:1 관계
1) ER 스키마의 각 2진 1:1 관계 타입 R에 대하여, 참여하는 엔티티 타입에 대응되는 릴레이션 S와 T를 생성한다.
[S와 T 둘다 부분 참여인 경우 / 반대로도 가능 ]
2) S와 T 중에서, 한 릴레이션을 선택하여, 만일 S를 선택했다면 T의 기본 키를 S에 외래 키로 포함시킨다.
[S만 전체 참여 / T는 부분 참여인 경우]
2-2) 관계 타입에 완전하게(전체) 참여하는 릴레이션 S에 T의 기본키를 외래 키로 포함시킨다.
[S와 T 둘다 전체 참여인 경우]
2-3) 두 엔티티 타입과 관계 타입을 하나의 릴레이션으로 합친다.
3) 관계 타입 R이 가지고 있는 모든 단순 애트리뷰트들을 릴레이션 S에 포함시킨다.
✔ 4단계 : 정규 2진 1:N 관계 타입
1) 2진 1:N 관계 타입 R에 대하여 N 측의 참여 엔티티 타입에 대응되는 릴레이션 S를 찾는다.
2) R에 대하여 참여하는 1측의 엔티티 타입에 대응되는 릴레이션 T의 기본 키를 S에 외래 키로 포함시킨다.
*) N측의 릴레이션 S의 기본 키를 1측의 릴레이션 T에 외래 키로 포함시키면 애트리뷰트에 값들의 집합이 들어가거나 중복 값이 생길 수 있음
3) 관계 타입 R이 가지고 있는 모든 단순 애트리뷰트들을 릴레이션 S에 포함시킨다.
EX)
한 부서에 n명의 직원이 소속될 수 있고, 한 직원은 한 부서에만 소속될 수 있다.
N측은 직원 엔티티 타입이다.
만약 1측의 릴레이션에 N 측의 기본 키를 외래 키로 추가하게 되면 위와 같이 집합 값을 같은 오류를 범할 수 있다.
✔ 5단계 : 2진 M:N 관계 타입
1) 2진 M:N 관계 타입 R에 대해서는 릴레이션 R을 생성한다.
2) 참여 엔티티 타입에 해당하는 릴레이션들의 기본 키를 R에 외래 키로 포함시키고, 이들의 조합이 R의 기본 키가 된다.
3) 관계 타입 R이 가지고 있는 모든 단순 애트리뷰트들을 릴레이션 R에 포함시킨다.
✔ 6단계 : 3진 이상의 관계 타입
1) 3진 이상의 각 관계 타입 R에 대하여 릴레이션 R을 생성한다.
[ M:N:L 관계 타입인 경우 ]
2) R에 참여하는 모든 엔티티 타입에 대응되는 릴레이션들의 기본 키를 R에 외래키로 포함시킨다.
( 외래키들의 조합이 R의 기본키가 된다.)
[ 1:M:N 관계 타입인 경우]
2-2) 카디날리티가 1인 릴레이션의 기본 키를 참조하는 외래 키를 제외한 나머지 외래키들의 모임이 릴레이션 R의 기본 키가 된다.
3) 관계 타입 R이 가지고 있는 모든 단순 애트리뷰트들을 릴레이션 R에 포함시킨다.
✔ 7단계 : 다치 애트리뷰트
1) 각 다치 애트리뷰트에 대하여 릴레이션 R을 생성한다.
2) 다치 애트리뷰트에 해당하는 애트리뷰트를 R에 포함시키고, 다치 애트리뷰트를 갖는 엔티티 타입, 관계 타입에 해당하는 릴레이션의 기본 키를 R에 외래 키로 포함시킨다.
3) R의 기본 키는 다치 애트리뷰트와 외래 키의 조합이다.
[DB] 데이터베이스 설계 - 요구사항 수집과 분석, 개념적 설계, 논리적 설계, 물리적 설계
반응형
'CS > Database' 카테고리의 다른 글
[DB] 데이터베이스의 원칙과 ACID, RDBMS와 NOSQL의 차이점 이해하기 (0) | 2023.10.09 |
---|---|
[DB] 데이터베이스 정규화란, 함수적 종속성, 이행적 종속성 - 제1정규화, 제2정규화, 제3정규화, BCNF (0) | 2022.10.09 |
[DB] 데이터베이스 ER모델(2) - 관계와 관계 타입 / 전체 참여, 부분참여, 다중 관계, 순환적 관계란 (0) | 2022.09.27 |
[DB] 데이터베이스 ER모델 (1) - 엔티티, 엔티티 타입, 애트리뷰트 (0) | 2022.09.27 |
[DB] 데이터베이스 설계 - 요구사항 수집과 분석, 개념적 설계, 논리적 설계, 물리적 설계 (0) | 2022.09.26 |