서브타입 이해하기 위해서는 부분집합을 이해해야 함.
전체집합인 슈퍼타입을 부분집합으로 나눈 것이 서브타입이기 때문이다.
엔터티는 집합이다. 서로 명확하게 구별되는 데이터의 집합이 엔터티다.
집합은 원소로 이뤄져 있고, 이원소는 업무 식별자로 대표되는 하나의 인스턴스를 의미한다.
이런집합개념은 모델링의 근간이 되는 중요한 개념이다.
전체집합에서 개인고객에 해당하는 인스턴스만을 묶은 것이 개인고객 부분집합
서브타입은 이렇게 인스턴스를 기준으로 묶은 부분집합을 의미
개인 ·법인 고객 서브타입은 고객의 종류이면서 고객이라는 집합을 구성하는 부분집합
서브타입은 슈퍼타입 엔터티와 일대일 관계에 있는 엔터티를 의미
부분집합은 엔터티의 전체집합 중에서 일부 집합을 의미
부분집합은 개념적인 범주를 나타내는 용어지만, 서브타입은 실제적인 엔터티를 나타낸 용어
서브타입은 어떻게 도출되는가?
서브타입이 존재하는 엔터티는 소수다. 하지만 중요한 엔터티이기 떄문에 서브타입으로 구분
통합할 수 있고, 상세화 할 수 있는 엔터티라면 반드시 서브타입으로 도출해야 함
물리모델에서 하나의 엔터티로 합쳐지거나 개별엔터티로 분할되더라도 모델링 과정 중에는 서브타입을 도출해야 함
도출방법은 2가지
첫번째 두개이상의 유사한 엔터티에서 공통속성을 도출하는 방법 : 엔터티 통합하는 행위
유사한 속성 고객번호 고객명을 분리해 슈퍼타입 생성,고유한 속성은 서브타입으로
슈퍼타입 엔터티에는 서브타입을 구분할 수 있는 속성으로 관리해야 함(고객유형코드)
고객유형코드는 서브타입 구분자라고 하는데 슈퍼타입의 인스턴스가 어떤 서브타입과 연관되어 있는지 구분하는 슈퍼타입 엔터티의 고유속성
두번째 복잡한 하나의 엔터티에서 유사한 속성끼리 분류하는 방법 : 엔터티를 상세화 논리화 하는 행위
옆에 모델은 모델링 과정 중의 모델이라면 서브타입이 보이지 않아 바람직하지 않은 모델이다. 서브타입을 도출할 수 있는 엔터티인데도 불구하고 서브타입없이 고유속성이 도출되지 않았고 관계가 상세하게 표현되지 않았음.
복잡해 보이는 엔터티 분석할때는 주요 속성부터 분석해야함
고객엔터티의 고객유형코드 속성이 주요속성인데, 이 속성으로 개인 ·법인 고객이라는 걸 알수 있음
주요 속성을 분석한 후 속성을 하나씩 분석하면서 개인 ·법인에만 해당하는 고유속성 찾게됨
유사한 성격의 엔터티를 모아서 슈퍼타입을 생성하는 방법이 일반화
복잡합 엔터티를 분해해서 서브타입을 생성하는 방법이 상세화
왜 서브타입을 사용하는가?
데이터가 어떤 종류로 이뤄졌는지 한눈에 보여주기 위함
서브타입을 도출하여 데이터를 입체화함
부분집합이 보이기 때문에 엔터티 정의도 큰틀에서 정해짐
모델구조는 이해하기 쉽고, 엔터티 정의와 가독성등이 좋아져 당사자 간의 커뮤니케이션을 돕는다.
서브타입 모델에서는 고객의 종류가 개인과 법인 이라는 것을 추측하지 않고 명확히 알수 있음
집합의 종류도 명확해지고 서브타입별 공통속성과 고유속성도 명확해진다.
모델이 확장되어 고객 종류별 관계도 알수 있음.
업무규칙이 어느정도 표현돼 모델에 대한 가독성이 외에도 업무 규칙에 대한 이해력도 높아짐
'관계형데이터모데링노트 요약' 카테고리의 다른 글
서브타입과 코드 (0) | 2023.10.30 |
---|---|
한 엔터티에 여러개 서브타입 존재시 (0) | 2023.10.30 |
서브타입과 슈퍼타입 (0) | 2023.10.29 |
주식별자가 다른 엔터티 통합 (1) | 2023.10.28 |
데이터 통합과 합체 (0) | 2023.10.28 |