[Database]Supertype, Subtype, 추가된 Constraint 정리

shane·2021년 2월 2일
0

Extended ER Model(Enhanced ER Model)

기존 전통적인 ER Model에 추가적인 구조와 함께 확장한 Model.

Supertype, Subtype

기존 entity type에서 중복되는 attribute와 특징이 되는 attribute를 나눠 entity type을 나누는 것을 말한다. 상위집단, 하위집단으로 나누는 것이다. UML(Unified Modeling Language)에서 Generalization과 Specialization을 생각하면 된다.

  • Supertype : 하나 이상의 entity type에서 공통적으로 뽑히는 entity type. Subtype의 일반화된 버전을 생각하면 된다. 상위집단이라고 생각하면 된다.
  • Subtype : 다른 하위집단들과 별개되는 attribute를 가지는 entity type으로 entity 집합이다. 하위집단이라고 생각하면 된다.
    • Supertype에서 분화(Specialization)된 것을 Subtype이라고 한다. Top-Down 방식의 분해(decomposition) 방식이다.
    • 각각의 Subtype들의 일반화(Generalization)된 형태를 Supertype이라고 한다. Bottom-Up 방식의 추출(extraction) 방식이다.

특징

  • 각각의 subtype들은 supertype의 attribute들과 relation들을 상속받는다.
  • Subtype들은 그들 스스로의 유니크한 attribute를 갖는다.

위의 예시에서 검진하다, 환자 ID, 이름과 같은 것은 subtype과 공유되는 attribute, relationship type이다. 반대로 할당되다, 마지막 진료 날짜와 같은 것은 Supertype과 공유되는 것이 아닌 구체적인, 명확한(specific) attribute, relationship type이다.


Completeness Constraint

Supertype이 subtype을 하위집단으로 가질 때, 오로지 하위집단으로만 supertype이 표현되는지 안되는지를 의미한다.

  • Total Specialization(double line) : 표현이 되는 경우이다.
  • Partial Specialization(single line) : 표현이 안되는 경우이다.

의사에게 환자의 경우, 입원환자와 외래환자로만 표현할 수 있기 때문에 Total Specialization인 두 줄로 표현한다.

탈 것의 경우, 자동차와 버스 말고도 트럭이나 SUV와 같은 것도 있기 때문에, 즉 subtype으로 supertype을 다 표현할 수 없기 때문에 Partial Specialization인 한 줄로 표현한다.


Disjointness Constraint

Supertype입장에서 봤을 때, subtype끼리 서로 겹칠 수 있는지 없는지를 의미한다.

  • Disjoint(d) : 안 겹치고 하나로 표현 가능한 경우이다.
  • Overlap(o) : 두 개 이상의 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/

profile
개발 관련 소통을 좋아하는 백엔드 개발자입니다.

0개의 댓글