기존 전통적인 ER Model에 추가적인 구조와 함께 확장한 Model.
기존 entity type에서 중복되는 attribute와 특징이 되는 attribute를 나눠 entity type을 나누는 것을 말한다. 상위집단, 하위집단으로 나누는 것이다. UML(Unified Modeling Language)에서 Generalization과 Specialization을 생각하면 된다.
- Supertype에서 분화(Specialization)된 것을 Subtype이라고 한다. Top-Down 방식의 분해(decomposition) 방식이다.
- 각각의 Subtype들의 일반화(Generalization)된 형태를 Supertype이라고 한다. Bottom-Up 방식의 추출(extraction) 방식이다.
위의 예시에서
검진하다
,환자 ID
,이름
과 같은 것은 subtype과 공유되는 attribute, relationship type이다. 반대로 할당되다, 마지막 진료 날짜와 같은 것은 Supertype과 공유되는 것이 아닌 구체적인, 명확한(specific) attribute, relationship type이다.
Supertype이 subtype을 하위집단으로 가질 때, 오로지 하위집단으로만 supertype이 표현되는지 안되는지를 의미한다.
의사에게 환자의 경우, 입원환자와 외래환자로만 표현할 수 있기 때문에 Total Specialization인 두 줄로 표현한다.
탈 것의 경우, 자동차와 버스 말고도 트럭이나 SUV와 같은 것도 있기 때문에, 즉 subtype으로 supertype을 다 표현할 수 없기 때문에 Partial Specialization인 한 줄로 표현한다.
Supertype입장에서 봤을 때, subtype끼리 서로 겹칠 수 있는지 없는지를 의미한다.
환자는 입원환자와 외래환자가 서로 겹치지 않기 때문에 disjoint로 표현한다. 또한, 외래환자와 입원환자로 나눌 수 있기 때문에 total specialization으로 표현되어 있는 것을 확인할 수 있다.
영화는 코메디 장르와 액션 장르가 서로 겹칠 수 있기 때문에 overlap으로 표현한다. 또한, 영화는 코메디, 액션 말고도 공포 등 더 많은 장르가 있어 subtype만으로 표현이 불가능하기 때문에 partial specialization으로 표현되어 있는 것을 확인할 수 있다.
ER Model의 경우 이전에 말을 한 것처럼 필자가 작성한 표기법 외에도 다양한 표기법이 존재한다. 기존에 필자가 사용한 표기법은
Chen Notation
이라고도 불린다. 또한, SQLD 등에서 사용하는 표기법으로는Crow's Foot Notation(까마귀 발 표기법)
이 사용된다. 까마귀 발 표기법에서는 Cardilnality Constraint를 숫자로 표현하는 것이 아닌 entity type을 연결하는 line 끝에 기호들을 추가하여 표현한다.
여러 표기법을 정리한 사이트가 존재하여 하단 참고에 추가를 해두니 관심이 있으면 확인해보자.
참고
https://en.wikipedia.org/wiki/Enhanced_entity%E2%80%93relationship_model
https://vertabelo.com/blog/crow-s-foot-notation/