ER 모델의 다양한 관계

약한 개체 타입과 식별 관계 타입

약한 개체 타입이란 자신을 식별해 주는 주인 개체 타입이 존재해야 자신이 존재할 수 있는 개체 타입을 말한다.

위와 같은 정의에 의해서 약한 개체 타입은 부분키를 갖게 되고, 식별해주는 개체의 기본키를 자신의 기본키에 포함하므로써 식별됩니다. 개체를 식별하는 것도 하나의 관계인데, 이렇게 개체를 식별해주는 관계를 식별 관계라고 하고, 이전 게시글에서도 언급했듯 이중선을 사용합니다.

하지만 이렇게만 읽으면 이해하기 쉽지 않기 때문에, 예제를 들어 이해해보도록 하겠습니다. 만약 사원과 부양가족이라는 개체가 있고, 두 개체는 ‘부양’이라는 관계를 가진다고 생각해 봅시다. 부양가족은 사원에 의해 식별되므로, 약한 개체 타입이라고 할 수 있습니다. 따라서 ER 모델에서는 다음과 같이 그립니다.

이번엔 릴레이션으로 이 상황을 살펴보겠습니다.

EMPLOYEE는 Empno라는 기본키로 사원들을 식별하고 있습니다. 그러므로 이 Empno는 고유합니다. 그러나 DEPENDENT를 봅시다. 만약 DEPENDENT의 키를 Depname만으로 두면, 그것이 중복될 가능성이 있습니다. 데이터의 무결성을 위해, 어떤 EMPLOYEE가 어떤 DEPENDENT를 부양하는지 알기 위해 DEPENDENT의 기본키에 Empno를 포함시켜야 합니다. 다음과 같이 말입니다.

약한 개체 타입 내용 정리

  • 약한 개체 타입은 자신의 기본키를 이루는 애트리뷰트 중 최소 한 개 이상의 애트리뷰트가 외래키가 되어 식별(주인) 개체 타입의 기본키를 참조하는 개체 타입을 말한다.
  • 따라서 위에서 든 사례 이외에도 다대다 관계 연결을 위한 연관 개체 타입도 해당된다. 기본키가 (각 주인을 참조하는) 외래키를 포함하고 있기 때문이다.
  • 또한 후에 EER에서 다루게 되는 수퍼클래스-서브클래스 관계에서 서브클래스의 기본키는 수퍼클래스의 기본키가 전이되어 온 외래키가 되어 약한 개체 타입이 된다.

전체 참여와 부분 참여

이전 게시글에서 카디날리티에 대한 정보를 다루었는데, (min, max)표기법으로는 최소 카디날리티에 대한 정보를 우리가 얻을 수 있다고 했습니다.
최소 카디날리티가 만약 0이라면, 그 개체는 관계에 참여하지 않을 수도 있는 것입니다. 예를 들면 부서가 지정되지 않은 사원이 있겠지요. 그러나 만약 최소 카디날리티가 0이라면, 그 개체는 관계에 항상 참여해야 합니다. 이를 학과와 학생간의 관계에서 다시한번 알아봅시다.


여기서 최소 카디날리티만을 따져서 비교해 봅시다. 어떤 학과는 학생이 없을 수도 있습니다. 그리고 모든 학생은 학과가 있습니다. 이제 이 두가지의 차이가 비교되나요? 그러므로 여기서 DEPARTMENT는 부분참여이고, STUDENT는 전체참여입니다.

추가적으로, 약한 개체타입은 어떻게 될까요? 약한 개체타입은 무조건 식별해주는 개체를 가져야 존재할 수 있죠? 그러므로 약한 개체타입은 항상 관계에 참여합니다. 그러므로 약한 개체타입은 항상 전체참여입니다.

역할

관계에서 각 개체타입은 역할(role)을 가지게 됩니다. 예를 들어 학생과 교수의 관계를 생각해 보면, 교수는 ‘지도하다’라는 역할을 가지게 되고, 학생은 ‘지도받다’라는 역할을 가지게 되죠. 보통 우리가 쓰는 이진 관계에서는 이러한 역할을 표현해 줄 상황이 별로 없습니다. 직관적으로 이해가 되기 때문입니다. 그러나 일진 관계에서 생각해 보면, 역할을 표기해야만 하는 상황이 생깁니다.

다음과 같은 관계를 봅시다. 만약 역할을 표시하지 않는다면, 어떤 개체가 무슨 일을 하는지 알 수 없습니다. 그러므로 이렇게 역할을 명시해 주어야 합니다. 이 경우 사원은 0명 이상을 감독하고 최소 0명, 최대 1명의 사원으로부터 감독받는다는 관계임을 우리는 알 수 있지요.

추가적으로, 이렇게 관계가 형성되는 것을 재귀적 관계(순환적 관계)라고 합니다.

다중 관계

두 개체 타입 사이에는 한개보다 더 많은 관계 타입이 존재할 수도 있습니다.

즉 다음과 같은 관계가 성립할 수 있는데요, 이런 상황을 자연어로 옮기면 ‘사원은 0개 이상의 프로젝트를 맡고, 프로젝트는 1명 이상의 사원으로부터 제작됩니다.’ 또한 ‘0명 혹은 1명의 사원은 1개의 프로젝트를 관리하고, 1개의 프로젝트는 0명 혹은 1명의 사원으로부터 관리됩니다.’ 라는 관계가 됩니다.