EER 이란 Enhanced Entity-Relationship Model로, 상속 관계가 있는 ER을 뜻합니다.

EER 모델의 다이어그램을 EERD라고 하며, 이를 알아보겠습니다.


C++ 기준으로, 클래스의 상속을 생각하면 부모 클래스와 자식 클래스가 있습니다.

자식 클래스는 부모 클래스의 성질을 물려받죠.

EERD 에서도 슈퍼클래스(Superclass)와 서브클래스(Subclass)가 존재합니다.

앞의 글에서 살짝 말했는데, 서브클래스는 슈퍼클래스의 애트리뷰트를 상속받습니다.

위의 그림에서 살펴보면, 서브클래스 "비서"의 객체는 애트리뷰트경력과 더불어 슈퍼클래스 "사원"의 애트리뷰트인 이름, SSN, ... 등을 가지게 됩니다. 왜냐하면 비서 또한 사원이기 때문이죠.

 

아래의 그림을 보겠습니다.

일단 눈에 띄는 것은 부분 참여(Partial)와 전체 참여(Completeness, Total) 입니다.

ERD 때 보았듯 부분 참여는 단일 실선, 전체 참여는 이중 실선을 사용합니다. 그렇다면 무엇이 다를까요?

총 사원이 100명이라고 합시다.

그렇다면 부분 참여인 곳은 비서, 기술자, 엔지니어를 다 합쳐도 100명이 되지 않을 수 있다는 소리입니다. 

반면 전체 참여는, 월급 수령 사원과 시급 수령 사원을 합치면 딱 100명이 된다는 의미입니다.

 

예제를 살펴 보겠습니다.

급여를 월급으로 수령하는 엔지니어가 속하는 Subclass는?

Engineer, Salaried_Employee

급여를 월급으로 수령하는 기술직 관리자가 속한 Subclass는?

Manager, Technician, Salaried_Employee

 

앞서 부분 참여, 전체 참여와 같은 제약 조건을 설명했는데,

이와 같이 EER에서 중요한 제약 조건이 있습니다.

바로 DisjointnessOverlap 입니다. 다음 그림을 보겠습니다.

Disjointness 는 A, B가 따로라면, Overlap은 A면서 B가 가능합니다.

즉, 비서이면서 기술자를 겸직 하는 사람이 있을 수 있다는 뜻이죠.


아래의 EERD를 보겠습니다.

우선 파란색으로 표시한 부분은 방금 보았던 Overlap 입니다.

학교의 구성원으로는 직원, 졸업생, 학생이 있고 직원이면서 학생 출신인 경우가 존재하겠네요.

 

이번에 눈여겨 볼 부분은 다중 상속입니다.

이미 PERSON을 슈퍼클래스로 가지는 서브클래스 EMPLOYEE와 STUDENT가 또 서브클래스를 가집니다.

이렇게 서브클래스가 또 다른 슈퍼클래스가 되는 것다중 상속입니다.


<union>

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기