💕IT 공부하기/데이터베이스

ER모델에 대해 알고계신가요? (3)

수리즘 2022. 9. 5. 09:00
반응형

카디날리티 비율

06. 관계와 관계 타입 (2)

► 1:1 관계

E1의 각 엔티티가 정확하게 E2의 한 엔티티와 연관되고, E2의 각 엔티티가 정확하게 E1의 한 엔티티와 연관되면 이 관계를 1:1 관계라고 합니다. 예를 들어, 각 사원에 대해 최대한 한 개의 PC가 있고 각 PC에 대해 최대한 한 명의 사원이 있다면 사원과 PC의 관계는 1:1 관계입니다.

► 1:N 관계

E1의 각 엔티티가 E2의 임의의 개수의 엔티티와 연관되고, E2의 각 엔티티는 정확하게 E1의 한 엔티티와 연관된다면 이 관계를 1:N 관계라고 합니다. 예를 들어, 각 사원에 대해 최대한 한 대의 PC가 있고 각 PC에 대해 여러 명의 사원들이 있으면 PC와 사원 간의 관계는 1:N 관계입니다. 1:N 관계는 실세계에서 가장 흔히 나타나는 유형입니다.

1:N 관계

► M:N 관계

M:N 관계에서는 한 엔티티 타입에 속하는 임의의 개수의 엔티티가 다른 엔티티 타입에 속하는 임의의 개수의 엔티티와 연관됩니다. 만일 각 사원에 대해 여러 대의 PC가 있고, 각 PC에 대해 여러 명의 사원들이 있다면 사원과 PC 간의 관계는 M:N 관계입니다. M:N 관계의 또 다른 예로는 학생들이 과목들을 수강하는 것입니다. 각 학생들은 여러 과목을 수강하고, 각 과목은 다수의 수강 학생들을 갖습니다.


관계 타입의 카디날리티 비율을 최솟값과 최댓값을 사용하여 좀 더 명확하게 나타낼 수 있으며, ER 다이어그램에서 관계 타입과 엔티티 타입을 연결하는 실선 위에(min, max) 형태로 표기합니다. 어떤 관계 타입에 참여하는 각 엔티티 타입에 대하여 min은 이 엔티티 타입 내의 각 엔티티는 적어도 min번 관계에 참여함을 의미하고, max는 이 엔티티 타입 내의 각 엔티티는 최대한 max번 관계에 참여함을 의미합니다. min = 0 또는 max = ∗ 는 특별한 경우입니다.

min = 0 은 어떤 엔티티가 반드시 관계에 참여해야 할 필요는 없음을 의미합니다. 즉, 선택적으로 참여한다입니다.

max = ∗ 는 어떤 엔티티가 관계에 임의의 수만큼 참여할 수 있음을 의미합니다. 

카디날리티의 최소값 최대값
카디날리티의 몇 가지 유형

► 역할(role)

역할은 관계 타입의 의미를 명확하게 하기 위해 사용됩니다. 특히 하나의 관계 타입에 하나의 엔티티 타입이 여러 번 나타나는 경우에는 반드시 역할을 표기해야 합니다. 역할은 관계 타입의 간선 위에 표시합니다.

► 전체 참여와 부분 참여

참여 제약조건은 전체 참여와 부분 참여로 구분합니다. 전체 참여는 어떤 관계에 엔티티 타입 E1의 모든 엔티티들이 관계 타입 R에 의해서 어떤 엔티티 타입 E2의 어떤 엔티티와 연관되는 것을 말합니다. 만일 어떤 관계에 엔티티 타입 E1의 일부 엔티티만 참여하면 부분 참여라고 말합니다. 특히 약한 엔티티 타입은 항상 관계에 전체 참여를 합니다. 전체 참여는 ER 다이어그램에서 이중 실선으로 표시합니다.

► 다중 관계

두 엔티티 타입 사이에 두 개 이상의 관계 타입이 존재할 수 있습니다. 즉 각 사원은 어떤 프로젝트에서 일하고(work_for), 일부 사원은 어떤 프로젝트의 관리자(manages)이기도 합니다. 프로젝트에서 사원으로 일하는 것과 프로젝트의 관리자는 의미가 완전히 다르므로 하나의 관계 타입으로 두 가지 의미를 나타낼 수 없습니다.

► 순환적 관계

순환적 관계는 하나의 엔티티 타입이 동일한 관계 타입에 두 번 이상 참여하는 것입니다.


07. ER 스키마를 작성하기 위한 지침

지금까지 ER 모델의 기초와 ER 모델을 ER 다이어그램으로 표현하는 것을 배웠습니다. ER 모델이 단순하기는 하지만 ER 스키마 다이어그램을 작성하는 데 여러 가지 문제들이 있습니다. 이런 문제들 중에서 몇 가지를 짚어보고 모델링 과정에 활용할 수 있는 규정들을 알아보겠습니다.

 

먼저 개념적 설계에서는 요구사항 명세로부터 실세계의 개념을 엔티티 타입, 애트리뷰트, 관계 타입 중 어떤 것으로 모델링할 것인가, 무엇이 엔티티와 관계인가, 이런 엔티티와 관계에 관해 어떤 정보를 데이터 베이스에 저장해야 하는가, 엔티티와 관계가 만족해야 하는 제약조건(또는 비즈니스 규칙)은 무엇인가 등을 파악하여 이런 정보를 ER 스키마 다이어그램으로 나타냅니다. 그 다음에 ER 스키마 다이어그램을 관계 스키마로 사상합니다. 엔티티, 엔티티들 간의 관계를 동일한 모델 내에서도 여러 가지 방법으로 정의하는 것이 가능하므로 동일한 작은 세계를 설명하는 ER 다이어그램이 여러 가지 생성될 수 있습니다. 그러므로 다음과 같은 고려 사항들에 대한 결정이 필요합니다.

이런 고려 사항들에 대한 답이 간단하지 않습니다.

 

① 한 객체를 애트리뷰트로 나타낼 것인가 또는 엔티티로 나타낼 것인가?

② 어떤 개념을 관계로 표현할 것인가 또는 엔티티로 나타낼 것인가?

③ 고립된 엔티티를 어떻게 다룰 것인가?

 

► 애트리뷰트 VS 엔티티

엔티티의 개념을 논의했지만 엔티티에 관해 엄격하게 정의하지는 않았습니다. 엔티티 타입과 애트리뷰트를 구분하는 절대적인 기준이 없기 때문에 엄격하게 정의하는 것이 간단하지는 않습니다. 일반적으로 애트리뷰트는 엔티티 타입과 연관된 것으로만 존재할 수 있지만 어떤 상황에서는 애트리뷰트를 엔티티로 볼 수 있습니다.

 

공급자가 엔티티인 것은 명확하지만 공급자 도시가 엔티티인지 또는 공급자 엔티티의 한 애트리뷰트인지 결정해야 합니다. 이런 상황에서 사용해야 할 대략적인 규칙은 다음과 같은 질문들에 대한 답을 생각해보는 것입니다. 

① 도시가 조직체에 관심이 있는 객체인가?

② 도시에 관한 애트리뷰트들을 유지할 필요가 있는가?

③ 도시를 여러 엔티티 타입들이 공유하는가?

 

이들 중에서 하나라도 대답이 '예'라면 도시를 새로운 엔티티로 나타내기 위해서 도시에 관해 좀 더 많은 정보를 확보해야 합니다. 그러나 만일 도시 이름에만 관심이 있다면 도시 공급자 엔티티의 한 애트리뷰트로 취급해야 합니다. 그러므로 하나의 지침으로서, 각 엔티티는 키 애트리뷰트 이외의 별도의 애트리뷰트들을 포함해야 합니다. 만일 한 객체가 식별자 이외에 관심을 가질만한 정보를 추가로 갖지 않는다면 이 객체는 애트리뷰트로 취급해야 합니다.

 

 

 

 

 

반응형