-
EER(Enhanced Entity-Relationship) 모델링전공/데이터베이스 2020. 6. 9. 17:03
EER 다이어그램은 ER 다이어그램에 없던 하위 그룹핑 개념을 나타내기 위해 서브클래스(서브타입)를 사용한다.
상단의 예시를 보면서 설명하겠다.
EMPLOYEE엔터티와 다른 엔터티를 잇는 접점에 d 기호가 존재한다.
여기서 SECRETARY, TECHNICIAN, ENGINEER는 서브클래스가 되며, EMPLOYEE는 슈퍼클래스가 된다.
d는 disjoint를 뜻하고 서로소를 의미한다.
즉, SECRETARY, TECHNICAN, ENGINEER는 서로소 관계에 있으므로 EMPLOYEE의 역할을 셋 중에 무조건 하나만(한 직업만) 가질 수 있다는 뜻이다.
슈퍼클래스와 서브클래스 관계를 표현할 때에는 superclass/subclass 로 표현한다.
즉, EMPLOYEE/TECHNICIAN, EMPLOYEE/MANAGER 이렇게. 딱히 쓸 일은 없을 것 같다.
슈퍼클래스-서브클래스 관계는 'IS-A' 관계라고도 불린다.
왜냐하면 "서브클래스는 슈퍼클래스이다." 라는 명제가 성립이 되기 때문이다.
예를 들면 TECHNICIAN는 EMPLOYEE이다, MANAGER는 EMPLOYEE다 등등.
서브클래스에 속하는 엔터티는 슈퍼클래스 엔터티의 모든 '속성'과 '관계'를 상속받는다. 너무 당연하지.
서브클래스와 슈퍼클래스간의 관계명을 정의하는 것을 Specialization이라고 한다.
데이터 모델링을 할 때의 서브타입들의 서브타입셋과 동일한 개념이다.
위의 슈퍼클래스, 서브클래스 예시에서 Job_type이 specialization이라 말한다.
하나의 슈퍼클래스는 여러 개의 서브클래스가 가질 수 있으므로 여러 개의 specialization이 생길 수 있다.
서브클래스에 속하는 엔터티도 엔터티이기 때문에 아래처럼 다른 엔터티와 관계를 맺을 수 있다.
Specialization과 반대되는 개념으로 Generalization이 있다.
Generalization는 개별 엔터티들에서 공통점을 찾아 하나의 서브클래스-슈퍼클래스 관계로 만드는 것이다.
즉, Specialization은 top-down 방식이고, Generalization은 bottom-up 방식인 것이다.
Specialization과 Generalization의 제약조건에서 정말 중요한 개념이 있다.
앞서 위에도 언급했지만 disjoint와 overlapping이다.
disjoint는 하나의 인스턴스가 하나의 서브클래스 엔터티값만 가져야 하고(ex 직업 중복선택 X),
overlapping은 하나의 인스턴스가 여러 개의 서브클래스 값을 가질 수 있다는 것이다(ex 직업 중복선택O)
그리고 또 중요한 제약조건인 Total과 Partial이 있다.
Total은 슈퍼클래스가 무조건 서브클래스를 가져야 되는 것을 뜻하고, Partial은 선택적인 것을 뜻한다.
Total은 선이 두 개고(=) Partial은 선이 하나다(-)
EMPLOYEE기준 좌측은 선이 하나이므로 partial이고 선들의 접점에 d 라고 표시되어있으므로 partial하고 disjoint하다.
즉, employee는 서브클래스를 가져도 되고 안가져도 되는데, 가진다면 하나만 가질 수 있다.
EMPLOYEE기준 우측은 선이 두개이므로 total이고 선들의 접점에 d 라고 표시되어있으므로 total하고 disjoint하다.
즉, employee는 서브클래스를 꼭 가져야 하고, 가질 때 하나만 가질 수 있다.
그리고 그림 하단에 보면 ENGINEERING_MANAGER과 연결된 ENGINEER, MANAGER, SALARIED_EMPLOYEE들을 볼 수 있다.
이렇게 서브클래스에 속하는 엔터티는 다른 서브클래스에도 속할 수 있다.
이 개념은 lattice(다중상속)라고 하는데, 그냥 이런 게 있다 정도만 알면 된다.
그리고 Catagory라는 개념도 있다.
UNION Type이라고도 불리는데, 간단하게 말하면 데이터 모델링에서의 배타 관계인 것이다.
즉, 여러 개의 슈퍼클래스가 하나의 서브클래스와 연결되어있고, 하나의 슈퍼클래스는 무조건 서브클래스와 연결되어야 한다. 표시는 UNION의 U를 본따 U이다.
'전공 > 데이터베이스' 카테고리의 다른 글
엔터티-릴레이션 모델을 활용한 데이터 모델링 (0) 2020.06.09 DB 개념과 구축 (0) 2020.06.09 데이터베이스 개요 (0) 2020.06.08