관계형데이터모데링노트 요약

서브타입 모델의 물리 모델 변환 - 슈퍼타입서브타입 개별생성(배타관계)

mitomi 2023. 11. 6. 21:42
반응형
SMALL

슈퍼타입과 서브타입의 관계가 서브타입으로 상속된 일대일인 물리모델

슈퍼타입과 서브타입의 관계가 서브타입으로 상속된 일대일인 물리모델

이 모델은 중복서브타입이나 불완전 서브타입 등 모든 서브타입에 대해서 데이터를 관리 할 수 있다.

모델 구조가 직관적이라 실무에서 주로 사용되는모델이다.

그러나 서브타입은 서로 배타적이어야 하며 모든 서브타입의 합집합이 전체 집합이 되어야 한다는 일반적인 정의를 표현하는  최적의 모델은 아니다.

 

서브타입인 배타 서브타입과 완전 서브타입을 강제로 제약할 수 있는 모델

서브타입으로 인해 슈퍼타입에 배타관계가 발생한 물리모델

슈퍼타입·서브타입 논리 모델을 그대로 물리 엔터티로 생성한 후 서브타입 엔터티의 주식별자를 슈퍼타입 엔터티로 상속

슈퍼타입 엔터티로 상속되고, 배타관계가 발생한점이 위에 모델과 다르다.

서브타입 간에 상호 배타적이라는 제약은 슈퍼타입에 발생한 배타관계가  제어

서브타입의 전체 인스턴스 합이 슈퍼타입이 된다는 제약은 서브타입에서 슈퍼타입으로 관계를 상속함으로써 제어

데이터가 개인고객 엔터티에 먼저 발생하므로 결과적으로 통합엔터티인 고객 엔터티에는 해당 인스턴스가 반드시 존재함 즉 배타 서브타입과 완전 서브타입의 제약을 구현한 물리모델이다.

 

이 모델에서는 서브타입이 상위 엔터티의 성격을 지닌다.

서브타입인 개인고객 엔터티: 개인에 대한 고유속성을 관리하는 엔터티이며,  주민등록번호가 주 식별자

법인고객 엔터티 : 역시 법인의 고유 속성관리, 법인등록번호가 주식별자

고객명이라는 공통속성은 개인과 법인에 모두 포함되며 개별엔터티로 생성

개인과 법인 엔터티는 상호 배탁적이므로 고객고유식별번호라는 하나의 속성으로 관리(주민번호, 법인등록번호 유니크인덱스로 생성해야 DBMS 차원에서 데이터 무결성 지키게 됨)

고객유형코드로 개인.법인 구분자를 두어 관리

 

고객엔터티보다 서브엔터티인 개인법인에 데이터가 먼저발생함

주민번호 주식별자로 하는 인스턴스를 개인고객 엔터티에 먼저 생성하고 고객엔터티에 고객고유식별번호에 해당하는 인스턴스  추가한다. 하지만 암호화 될수 있는 주민번호를 주 식별자로 사용할 없어 인조식별자를 두어 아래모델과 같이 사용

 

인조식별자를 사용해 슈퍼타입 서브타입의 주식별자를 일치시킨 물리모델

서브타입 엔터티도 슈퍼타입 엔터티와 같이 인조식별자를 사용해서 서로의 주식별자를 일치시킴

서브타입과 슈퍼타입 엔터티는 동일한 데이터를 관리하므로 식별자를 일치시키는게 바람직함

 

위 모델에서 개인고객 엔터티나 법인고객 엔터티에 데이터를 인서트 할때 고객번호를 체크하기 위해서 트리거가 필요

트리거로 관리하지 않는 다면 고객엔터티에서 고객번호로 관리하거나 애플리케이션에서 로직으로 구현하여 고객번호를 체크해야 함

 

장점

서브타입의 기본개념인 배타 서브타압과 완전서브타압을 가장 잘 표현한 모델이라는 점

모델구조가 일종의 제약역활을 하여 데이터를 더욱 정확하게 관리한다는 점

 

단점

 개인고객 법인고객 엔터티와 고객 엔터터에 대해 참조무결성 제약을 생성할 수 없음

고객엔터티의 고객번호는 개인고객 엔터티의 고객번호 속성뿐아니라 법인고객 엔터티의 고객번호 속성과도 참조무결성제약이 필요한데 하나의 속성에 두 엔터티의 속성과 동시에 참조 무결성 제약을 생성할 수 없음

 

슈퍼타입과 서브타입을 각각 개별 엔터티로 생성하는 방법은 두가지

-서브타입으로 상속된 일대일(1:1)관계인 모델은 모든 종류의 서브타입을 관리하기 편함

-슈퍼타입에 배타관계가 생긴 모델은 배타서브타입과 완전 서브타입을 동시에 만족하다록 제약을 사용할 수 있다는 장점

 

 

 

 

728x90