관계형 데이터 모델링 프리미엄 가이드 DB구축 (2014년)
슈퍼타입과 서브타입 정의 0 0 60,495

by 구루비스터디 슈퍼타입 서브타입 [2018.06.10]


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


1. 특성

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


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

일반화(Generalization)


각각의 엔티티로 관리할때



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


슈퍼타입/서브타입으로 관리할때



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


상세화(Specialization)


하나의 엔티티로 관리할때



  • 고객 종류에 따른 속성을 알 수 없다.
  • 연락처, 취미, 주요제품 엔티티와의 관계도 전체 집합과 관련이 있는지 특정 고객 종류와 관련이 있는지 알 수 없다.
    • 업무 규칙이 반영이 되어 있지 않다.


슈퍼타입/서브타입으로 관리할때
  • 일반화와 동일하다.


잘못된 서브타입




중첩된 서브타입



  • 물리적으로 이렇게 구현되는 일은 드물지만 개념 모델링이나 초기 논리 모델링 단계에서 간혹 보이는 구조이다.
  • 자연인과 법인에서도 하나 이상의 구분자가 필요하다.
"구루비 데이터베이스 스터디모임" 에서 2014년에 "관계형 데이터 모델링 프리미엄 가이드" 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/3605

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입