04. 데이터베이스 설계 사례 (2)
개념적 설계 단계에서 ER 모델을 사용하여 조직체의 데이터베이스 응용을 위한 개념적 스키마를 생성하였으면, 논리적 설계 단계에서는 ER 스키마를 관계 데이터 모델의 릴레이션들로 사상해야 합니다. ER 데이터 모델의 기반으로 한 상용 DBMS가 없으므로, 또한 대부분의 DBMS는 관계 데이터 모델을 기반으로 하기 때문에 ER 스키마를 관계 데이터 모델로 변환해야 합니다. 또한 ER 스키마에는 엔티티 타입과 관계 타입이 존재하지만 관계 데이터베이스에는 엔티티 타입과 관계 타입을 구분하지 않고 릴레이션들만 들어 있습니다.
릴레이션으로 사상할 대상이 ER 스키마에서 엔티티 타입인지 또는 관계 타입인지, 엔티티 타입이라면 정규 엔티티 타입인지 또는 악한 엔티티 타입인지, 관계 타입이라면 2진 관계 타입인지 2진 이상의 관계 타입인지, 관계 타입의 카디날리티가 1:1인지 또는 1:N인지, M:N인지, 애트리뷰트가 단일 값 애트리뷰트인지 또는 다치 애트리뷰트인지 등에 따라 사상하는 방법이 달라집니다.
알고리즘의 각 단계에서 릴레이션으로 사상되는 ER 스키마의 대상
사상할 대상 | 알고리즘의 단계 |
엔티티 타입과 단일 값 애트리뷰트 | 단계 1 : 정규 엔티티 타입 |
단계 2 : 약한 엔티티 타입 | |
2진 관계 타입 | 단계 3 : 2진 1:1 관계 타입 |
단계 4 : 정규 2진 1:N 관계 타입 | |
단계 5 : 2진 M:N 관계 타입 | |
3진 이상의 관계 타입 | 단계 6 : 3진 관계 타입 |
다치 애트리뷰트 | 단계 7 : 다치 애트리뷰트 |
► 단계 1 : 정규 엔티티 타입과 단일 값 애트리뷰트
ER 스키마의 각 정규 엔티티 타입 E에 대해 하나의 릴레이션 R을 생성합니다. E에 있던 단순 애트리뷰트들을 릴레이션 R에 모두 포함시킵니다. E에서 복합 애트리뷰트는 그 복합 애트리뷰트를 구성하는 단순 애트리뷰트들만 릴레이션 R에 포함시킵니다. 엔티티 타입 E에 유도된 애트리뷰트가 있으면 이를 릴레이션 R에 포함시키는 것은 사용자의 선택에 따릅니다. E의 기본 키가 릴레이션 R의 기본 키가 됩니다. 릴레이션의 한 투플은 엔티티 타입의 한 엔티티와 대응됩니다.
► 단계 2 : 약한 엔티티 타입과 단일 값 애트리뷰트
ER 스키마에서 소유 엔티티 타입 E를 갖는 각 약한 엔티티 타입 W에 대하여 릴레이션 R을 생성합니다. W에 있던 모든 단순 애트리뷰트들을 릴레이션 R에 포함시킵니다. 소유 엔티티 타입에 해당하는 릴레이션 기본 키를 약한 엔티티 타입에 해당하는 릴레이션에 외래 키로 포함시킵니다. 약한 엔티티 타입에 해당하는 릴레이션 R의 기본 키는 약한 엔티티 타입의 부분 키와 소유 엔티티 타입에 해당하는 릴레이션을 참조하는 외래 키의 조합으로 이루어집니다. 단계 2까지 마친 후에는 ER 스키마에서 모든 엔티티 타입들이 릴레이션들로 사상되었습니다.
► 단계 3 : 2진 1:1 관계 타입
ER 스키마의 각 2진 1:1 관계 타입 R에 대하여, R에 참여하는 엔티티 타입에 대응되는 릴레이션 S와 T를 찾습니다. S와 T 중에서 한 릴레이션을 선택하여, 만일 S를 선택했다면 T의 기본 키를 S에 외래 키로 포함시킵니다. S와 T 중에서 관계 타입에 완전하게 참여하는 릴레이션을 S의 역할을 하는 릴레이션으로 선택하는 것이 좋습니다. 관계 타입 R이 가지고 있는 모든 단순 애트리뷰트들을 S에 대응되는 릴레이션에 포함시킵니다. 다른 엔티티 타입에 속해 있는 애트리뷰트를 한 엔티티 타입에 포함시키면 애트리뷰트들의 이름이 같아지는 경우가 생길 수 있습니다. 이런 경우에는, 한 릴레이션 내에서 애트리뷰트들의 이름은 서로 달라야 하므로 한 애트리뷰트의 이름을 변경해야 합니다. 두 엔티티 타입의 관계 타입 R에 완전하게 참여할 때는 두 엔티티 타입과 관계 타입을 하나의 릴레이션으로 합치는 방법도 가능합니다.
► 단계 4 : 정규 2진 1:N 관계 타입
정규 2진 1:N 관계 타입 R에 대하여 N 측의 참여 엔티티 타입에 대응되는 릴레이션 S를 찾습니다. 관계 타입 R에 참여하는 1측의 엔티티 타입에 대응되는 릴레이션 T의 기본 키를 릴레이션 S에 외래 키로 포함시킵니다. 그 이유는 모든 N 측 엔티티 인스턴스가 최대한 하나의 1측 엔티티 인스턴스와 관계를 갖기 때문입니다. 이와 반대로, N 측의 릴레이션 S의 기본 키를 1측의 릴레이션 T에 외래 키로 포함시키면 애트리뷰트에 값들의 집합이 들어가거나 정보의 중복이 많이 발생합니다. 관계 타입 R이 가지고 있는 모든 단순 애트리뷰트들을 S에 해당하는 릴레이션에 포함시킵니다.
► 단계 5 : 2진 M:N 관계 타입
2진 M:N 관계 타입을 직접 관계 데이터베이스에 나타낼 수 없으므로 별도의 릴레이션으로 표현해야 합니다. 2진 M:N 관계 타입 R에 대해서 릴레이션 R을 생성합니다. 참여 엔티티 타입에 해당하는 릴레이션들의 기본 키를 릴레이션 R에 외래 키로 포함시키고, 이들의 조합이 릴레이션 R의 기본 키가 됩니다. 또한 관계 타입 R이 가지고 있는 모든 단순 애트리뷰트들을 릴레이션 R에 포함시킵니다. 두 릴레이션의 기본 키를 외래 키로 포함시킬 때 두 기본 키의 이름이 같은 경우에는, 한 릴레이션 내에서 애트리뷰트의 이름은 서로 달라야 하므로 한 애트리뷰트의 이름을 변경해야 합니다. 애트리뷰트 이름을 변경해도 기본 키/외래 키의 특성에 영향을 주지는 않습니다.
► 단계 6 : 3진 이상의 관계 타입
3진 이상의 각 관계 타입 R에 대하여 릴레이션 R을 생성합니다. 관계 타입 R에 참여하는 모든 엔티티 타입에 대응되는 릴레이션들의 기본 키를 릴레이션 R에 외래 키로 포함시킵니다. 또한 관계 타입 R이 가지고 있는 모든 단순 애트리뷰트들을 릴레이션 R에 포함시킵니다. 일반적으로 외래 키들의 조합이 릴레이션 R의 기본 키가 됩니다. 하지만 관계 타입 R에 참여하는 엔티티 타입들의 카디날리티가 1:N:N이면 카디날리티가 1인 릴레이션의 기본 키를 참조하는 외래 키를 제외한 나머지 외래 키들의 모임이 릴레이션의 R의 기본 키가 됩니다.
► 단계 7 : 다치 애트리뷰트
각 다치 애트리뷰트에 대하여 릴레이션 R을 생성합니다. 다치 애트리뷰트에 해당하는 애트리뷰트를 릴레이션 R에 포함시키고, 다치 애트리뷰트를 애트리뷰트로 갖는 엔티티 타입이나 관계 타입에 해당하는 릴레이션의 기본 키를 릴레이션 R에 외래 키로 포함시킵니다. 릴레이션의 R의 기본 키는 다치 애트리뷰트와 외래 키의 조합입니다.
'💕IT 공부하기 > 데이터베이스' 카테고리의 다른 글
물리적 데이터베이스 설계에 대하여(2) (0) | 2022.09.09 |
---|---|
물리적 데이터베이스 설계에 대하여(1) (0) | 2022.09.08 |
ER 모델의 다른 표기법과 새발 표기법 (0) | 2022.09.06 |
ER모델에 대해 알고계신가요? (3) (0) | 2022.09.05 |
ER모델에 대해 알고계신가요? (2) (0) | 2022.09.02 |