01. ER 모델의 또 다른 표기법
ER 다이어그램의 표기법의 요약본입니다. 수십 개 이상의 애트리뷰트가 엔티티 타입에 연결된 다이어그램을 나타내려면 매우 불편하고 공간을 많이 차지하게 됩니다 실제 기업의 데이터베이스에는 수십 개 ~ 200개 정도의 애트리뷰트들을 갖는 릴레이션들이 흔히 사용되고 있습니다. 순수한 Chen 스타일의 ER 표기법을 채택한 CASE 도구는 거의 없습니다. ERWin 등의 CASE 도구들에서는 새발(crow-feet) 표기법이 흔히 사용됩니다. 새발 표기법에도 여러 가지 변형들이 존재합니다. 새발 표기법에서도 엔티티 타입은 직사각형으로 나타내지만 관계 타입을 의미하는 다이아몬드는 사용되지 않습니다. 관계의 의미나 제약조건 등은 엔티티 타입들을 연결하는 실선 위에 몇 가지 기호를 사용하여 표현합니다. 두 엔티티를 연결하는 실선 위에 위치한 기호들 중에서 안쪽(엔티티에서 먼 쪽)의 기호는 참여 제약조건을 나타내고, 바깥쪽(엔티티에서 가까운 쪽)의 기호는 카디날리티를 나타냅니다.
02. 새발 표기법
![]() |
1:1 관계. 엔티티 A의 각 인스턴스는 엔티티 B의 0 또는 1개의 인스턴스와 연관됨. 엔티티 B의 각 인스턴스는 엔티티 A의 0 또는 1개의 인스턴스와 연관됨. |
![]() |
1:N 관계. 엔티티 A의 각 인스턴스는 엔티티 B의 0개 이상의 인스턴스와 연관됨. 엔티티 B의 각 인스턴스는 엔티티 A의 0 또는 1개의 인스턴스와 연관됨. |
![]() |
M:N 관계. 엔티티 A의 각 인스턴스는 엔티티 B의 0개 이상의 인스턴스와 연관됨. 엔티티 B의 각 인스턴스는 엔티티 A의 0개 이상의 인스턴스와 연관됨. |
![]() |
1:1 관계. 엔티티 A의 각 인스턴스는 엔티티 B의 1개의 인스턴스와 연관됨. 엔티티 B의 각 인스턴스는 엔티티 A의 0 또는 1개의 인스턴스와 연관됨. |
![]() |
1:N 관계. 엔티티 A의 각 인스턴스는 엔티티 B의 1개 이상의 인스턴스와 연관됨. 엔티티 B의 각 인스턴스는 엔티티 A의 0 또는 1개의 인스턴스와 연관됨. |
![]() |
M:N 관계. 엔티티 A의 각 인스턴스는 엔티티 B의 1개 이상의 인스턴스와 연관됨. 엔티티 B의 각 인스턴스는 엔티티 A의 0개 이상의 인스턴스와 연관됨. |
∘ O : 0을 의미 , ∘ | : 1을 의미 , ∘ ⋲ : 이상을 의미
► 1 : 1 관계
엔티티 타입 A는 관계 타입 B를 통해서 엔티티 타입 C와 연결됩니다. 엔티티 타입 A의 각 엔티티는 엔티티 타입 C의 엔티티 0개 또는 1개와 연관됩니다. 엔티티 타입 C의 각 엔티티는 엔티티 타입 A의 엔티티 1개와 연관됩니다. 따라서 엔티티 타입 A는 관계 타입 B에 부분 참여하고, 엔티티 타입 C는 관계 타입 B에 전체 참여합니다. 엔티티 타입 A와 엔티티 타입 C는 1:1 관계를 갖습니다.
► 1 : N 관계
엔티티 타입 C의 각 엔티티는 엔티티 타입 A의 엔티티 0개 또는 1개와 연관됩니다. 엔티티 타입 A의 각 엔티티는 엔티티 타입 C의 엔티티 0개 이상과 연관됩니다. 따라서 엔티티 타입 A와 엔티티 타입 C는 1:N 관계를 갖습니다. 엔티티 타입 A와 엔티티 타입 C는 관계 타입 B에 부분 참여합니다.
► M : N 관계
엔티티 타입 A의 각 엔티티는 엔티티 타입 C의 엔티티 0개 이상과 연관됩니다. 엔티티 타입 C의 각 엔티티는 엔티티 타입 A의 엔티티 0개 이상과 연관됩니다. 엔티티 타입 C의 각 엔티티는 엔티티 타입 A의 엔티티 0개 이상과 연관됩니다. 따라서 엔티티 타입 A와 엔티티 타입 C는 M:N 관계를 갖습니다. 엔티티 타입 A와 엔티티 타입 C는 관계 타입 B에 부분 참여합니다.
► 엔티티 타입과 애트리뷰트의 표기
지금까지의 표기법에서는 애트리뷰트와 엔티티 타입을 각각 타원과 직사각형으로 표현하고, 애트리뷰트를 엔티티 타입과 실선으로 연결하였습니다. 이런 표기법은 공간이 많이 필요합니다. 새발 표기법에서는 엔티티 타입을 나타내는 직사각형을 확장하여 그 엔티티 타입에 속하는 애트리뷰트들을 직사각형 내에 포함시켜 표현합니다. 그러나 새발 표기법에서는 다치 애트리뷰트나 유도된 애트리뷰트, 복합 애트리뷰트들을 구분하는 것이 어렵다는 단점이 있습니다.
03. 데이터베이스 설계 사례 (1)
알고리즘의 각 단계에서 릴레이션으로 사상되는 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에 포함시키는 것은 사용자의 선택에 따릅니다. 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의 역할을 하는 릴레이션으로 선택하는 것이 좋습니다.
► 단계 4 : 정규 2진 1:N 관계 타입
정규 2진 1:N 관계 타입 R에 대하여 N 측의 참여 엔티티 타입에 대응되는 릴레이션 S를 찾습니다. 관계 타입 R에 참여하는 1측의 엔티티 타입에 대응되는 릴레이션 T의 기본키를 릴레이션 S의 외래 키로 포함시킵니다. 모든 N 측 엔티티 인스턴스가 최대한 하나의 1측 엔티티 인스턴스와 관계를 갖기 때문입니다.
► 단계 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의 기본 키는 다치 애트리뷰트와 외래 키의 조합입니다.
위의 방법 7단계를 정확하게 적용하여 ER 스키마를 관계 데이터베이스로 작성하더라도, 바람직하지 않은 특성을 갖는 관계 데이터베이스가 생성될 수 있습니다. 그 이유는 데이터베이스 설계자가 잘못 판단하여 두 개 이상의 엔티티 타입에 속하는 애트리뷰트들을 한 개의 엔티티 타입에 포함시킨 경우가 있을 수 있기 때문입니다. 만일 한 엔티티 타입에 두 개 이상의 엔티티 타입에 속하는 애트리뷰트들이 섞여 있다면 이 엔티티 타입이 사상된 릴레이션은 바람직하지 않은 특성을 나타내게 됩니다.
따라서 논리적 설계의 결과로 생성된 관계 데이터베이스에 정규화 이론을 적용하여 보다 좋은 특성을 갖는 관계 데이터베이스로 정제해야 합니다.
[IT 공부하기/데이터베이스] - 논리적 설계:ER스키마를 관계 모델의 릴레이션들로 사상
논리적 설계:ER스키마를 관계 모델의 릴레이션들로 사상
04. 데이터베이스 설계 사례 (2) 개념적 설계 단계에서 ER 모델을 사용하여 조직체의 데이터베이스 응용을 위한 개념적 스키마를 생성하였으면, 논리적 설계 단계에서는 ER 스키마를 관계 데이터
soonirism.tistory.com
'💕IT 공부하기 > 데이터베이스' 카테고리의 다른 글
물리적 데이터베이스 설계에 대하여(1) (0) | 2022.09.08 |
---|---|
논리적 설계:ER스키마를 관계 모델의 릴레이션들로 사상 (0) | 2022.09.07 |
ER모델에 대해 알고계신가요? (3) (0) | 2022.09.05 |
ER모델에 대해 알고계신가요? (2) (0) | 2022.09.02 |
ER모델에 대해 알고계신가요? (1) (0) | 2022.09.01 |