유사한 성격의 데이터를 합치는 것 (데이터를 일반화한다.)
데이터 통합은 정규화를 기반으로 이뤄져야 한다.
-> 동질성을 판단하려면 데이터 성격을 규정해야 하고, 정규화를 통해 속성과 엔터티에 대한 명확한 이해가 선행돼야 한다. 비정규형은 중복 데이터를 채택한 모델이므로 기본적으로 데이터 성격이 명확하지 않아 통합하기 어렵다.
목적
“데이터”는 기업 전체의 공동 자산으로 특정 담당자가 사용하기 위한 데이터를 관리하는 것이 아니라 데이터를 통합하여 기업 전체적으로 일관되게 사용하도록 해야한다.
데이터뿐만 아니라 업무도 일반화하여 설계하므로 미래에 발생할 업무에서 확장해서 사용할 수 있다
모델 가독성 증가
수정하기 쉽다. =유지보수 효율성 증가
일반화와 상세화
-> 일반화, 상세화를 하면 슈퍼타입과 서브타입이 생긴다. 일반화, 상세화 모두 결국은 공통과 차이를 보기 위한 것으로 데이터 통합 이다.
주의할 점
성능: 인스턴스 증가로 성능이 나빠질 수 있다는 것을 염두에 둬야 한다.
정체성 희석: 지나친 일반화
• 유사하지 않은 데이터인데 유사하게 선언한 후에 통합을 검토
• 지나치게 일반화하여 통합하면 데이터의 정체성이 희석된다.
Ex: 고객/사원/부서/거래처(개별적인 것) -> 파티(지나친 일반화, 파티에 뭐가 있는지 알 수 없다.
무결성 저하 : Not NULL 제약 생성 못하는 경우
Ex: 외국인을 포함한 고객 엔터티에 주민번호와 같은 식별번호로 관리하는 상황
데이터를 일반화할수록 무결성이 떨어질 수도 있지만, 데이터가 통합되면 특정 속성이 하나만 존재한다는 측면에서 일종의 중복속성이 없어지는 것이므로 무결성이 좋아진다고 볼 수 있다.
<데이터 성격이 유사할 때>
엔터티의 기초 속성이 유사할 때
데이터가 조회 등에 같이 사용될 때
역할을 관리할 때: Ex) 관리사원, 주문사원
대칭적인 업무일 때: Ex) 매출,매입전표
계층관계가 존재할 때: Ex) 본사>부서>팀
공통 속성이 존재할 때
여러 엔터티에 공통 속성이 별도의 데이터 성격을 지닌다면 그 속성만을 분리해 통합한다.
배타관계가 발생할 때
집계 엔터티의 집계 대상이 같을 때
비정규화를 수행할 때
일대일 관계일 때(관계비 불변인지 확인)
두 엔터티 성격이 같은지 검토하고 관계비가 불변인지 검토
업무가 변경될 가능성이 많을 때
데이터 성격이 유사하고, 관리할 속성이 유사하면 주 식별자가 달라도 통합에 문제가 되지 않는다. 통합 엔터티의 주 식별자는 가능하면 통합 대상 엔터티의 주 식별자를 활용하는 것이 좋다.
-> 업무 식별자를 사용해야 데이터를 생성하는 기준이 명확해지기 때문이다.
주의 : 인조 식별자를 주 식별자로 사용한 경우는 다른 성격의 데이터일 수 있으므로 무조건 통합해서는 안된다.
CASE 1 : 주 식별자 속성의 개수가 같을 때
CASE 2 : 주 식별자 속성의 개수가 다를 때
언제?
엔터티를 일반화하거나 상세화하면 슈퍼타입, 서브타입이 생긴다.
서브타입과 부분집합
원소 -> 업무 식별자로 대표되는 하나의 인스턴스
집합 -> 엔터티
부분집합 -> 서브타입
전체집합 -> 슈퍼타입
서브타입 도출 방법
1. 두개 이상의 유사한 엔터티의 공통 속성을 도출하는 방법(일반화)
유사한 성격의 엔터티를 모아서 슈퍼타입을 생성하는 방법
2. 하나의 엔터티에서 유사한 속성끼리 분류하는 방법(상세화)
서브타입 특징
서브타입 인스턴스는 그에 해당하는 슈퍼타입 인스턴스가 존재해야한다. 반대는 아님
슈퍼타입 서브타입은 부모자식 관계X, 상하위 관계X, 동등한 관계O(필요에 의해 분리된 1:1 관계)
슈퍼타입에 서브타입을 식별할 수 있는 속성이 존재해야 한다(구분자코드)
한 엔터티의 최종 서브타입은 그 집합을 가장 잘 표현한 한 개만 존재해야한다.(~에 따라 업무를 수행하는지)
-> 슈퍼타입에 존재하는 속성과 서브타입에 존재하는 속성을 합하면 전체 속성이 돼야한다. 따라서 여러 개의 서브타입이 존재하면 후보 서브타입에 속할 속성은 없게 된다.
서브 타입 용도
데이터가 어떤 종류로 이루어졌는지 한눈에 보여주기 위하여 사용한다. 작게 나눈 세분화된 부분 집합은 전체 집합보다 이해하기 쉽다. 공통 속성과 관계, 고유 속성과 관계가 표현돼 업무 규칙을 모델에 표현하기도 쉽다.
공통점, 차이점을 보기 좋고 데이터 부분집합이 명확해진다.
확장성을 좋게 한다.-> 상품 확장을 대비한 서브타입 모델을 만들 수 있다.
배타 서브타입
서브타입 간에 중복이 발생하지 않는다. 서브타입들의 인스턴스 개수를 합하면 슈퍼타입 인스턴스의 개수가 된다
중복 서브타입
서브타입끼리 겹치는 부분이 존재하는 서브타입으로 하나의 슈퍼타입 인스턴스가 두 개 이상의 서브타입 인스턴스와 관계가 존재할 수 있다.
-> 판단 기준 : 특정 시점
완전 서브타입
슈퍼타입 모든 인스턴스가 하나의 서브타입 인스턴스와의 관계가 존재, 슈퍼타입에 인스턴스가 생성될 때 서브타입에도 인스턴스가 생성된다.
불완전 서브타입
슈퍼타입에만 인스턴스가 존재하고 서브타입에는 인스턴스가 존재하지 않는 서브타입, 고유속성 존재X
중첩 서브타입
서브타입 내부에 서브타입이 다시 존재하는 경우
슈퍼타입, 서브타입 관계 요약
1. 서브타입별로 엔터티 분할
서브타입마다 별도의 엔터티를 만든다
2. 슈퍼타입 엔터티 하나로 통합
3. 슈퍼타입 엔터티와 개별 서브타입 엔터티로 분할
-> “조회에 대한 사용자 결합도”에 따라 결정