• 일반화(상향식) - 고유한 속성은 서브타입으로 넘기고 공통속성을 가진 슈퍼타입 도출
  • 상세화(하향식) - 슈퍼타입에서 서브타입을 도출
    • 방법은 다르지만 슈퍼타입/서브타입 생성 방법

1. 특성

  • 여러 엔티티에 중복 속성이 존재하면 슈퍼타입을 도출해 중복 속성이 없는 모델로 만든다.
  • 관계 속성을 포함한 슈퍼타입의 모든 속성은 서브타입에 속한다.(상속개념)
  • 서브타입의 고유 속성이나 관계도 슈퍼타입에 속한다.(슈퍼타입+서브타입 = 완전한 인스턴스)
  • 서브타입 엔티티간의 관계는 일반적으로 상호배타적이지만 간혹 포함적일 수 있다.
  • 서브타입 인스턴스는 반드시 그에 해당하는 슈퍼타입 인스턴스가 존재해야 하지만 슈퍼타입 인스턴스에 해당하는 서브타입 인스턴스는 존재하지 않을 수 있다.
  • 서브타입은 슈퍼타입의 하위개념이(부모자식관계) 아니며 부분집합이다.
  • 배타 관계를 발생시키는 엔티티는 통합(일반화)해 슈퍼타입을 도출해야 한다.
  • 직관적이고 이해하기 쉬우며 이후 물리 모델링 단계에서 성능 효율을 고려해 엔티티 구조 구현방법이 결정된다.


2. 예 - 개인고객과 법인고객 엔티티

일반화(Generalization)

각각의 엔티티로 관리할때

  • 엔티티를 필요할 때마다 만들어 사용해 발생하는 현상이며 엔티티 통합에 대한 두려움도 한 원인
  • 같은 속성이 여러번 사용되며(고객번호, 고객명등) 연락처와 두개의 엔티티와 배타 관계를 가짐
슈퍼타입/서브타입으로 관리할때

  • 서브타입을 구분할수 있는 고객구분코드 속성이 관리된다.(구분자)
  • 취미는 개인 서브타입과 관계가 있고 주요제품은 법인 서브타입과 관계가 있다는 것이 가독성 높게 표현된다.
  • 연락처와의 배타관계가 해소된다.


상세화(Specialization)

하나의 엔티티로 관리할때

  • 고객 종류에 따른 속성을 알 수 없다.
  • 연락처, 취미, 주요제품 엔티티와의 관계도 전체 집합과 관련이 있는지 특정 고객 종류와 관련이 있는지 알 수 없다.
    • 업무 규칙이 반영이 되어 있지 않다.
슈퍼타입/서브타입으로 관리할때
  • 일반화와 동일하다.


잘못된 서브타입



중첩된 서브타입

  • 물리적으로 이렇게 구현되는 일은 드물지만 개념 모델링이나 초기 논리 모델링 단계에서 간혹 보이는 구조이다.
  • 자연인과 법인에서도 하나 이상의 구분자가 필요하다.