by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

슈퍼타입과 서브타입 정의




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

1. 특성

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

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

일반화(Generalization)

  1. 각각의 엔티티로 관리할때
  2. 엔티티를 필요할 때마다 만들어 사용해 발생하는 현상이며 엔티티 통합에 대한 두려움도 한 원인
    1. 같은 속성이 여러번 사용되며(고객번호, 고객명등) 연락처와 두개의 엔티티와 배타 관계를 가짐
  3. 슈퍼타입/서브타입으로 관리할때
    1. 서브타입을 구분할수 있는 고객구분코드 속성이 관리된다.(구분자)
    2. 취미는 개인 서브타입과 관계가 있고 주요제품은 법인 서브타입과 관계가 있다는 것이 가독성 높게 표현된다.
    3. 연락처와의 배타관계가 해소된다.

상세화(Specialization)

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

잘못된 서브타입


중첩된 서브타입

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

문서정보

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.