서브타입 간의 관계 표현법
서브타입 관계는 서브타입의 성격이 다를수록, 엔터티를 일반화 할 수록 발생할 가능성이 높다.
서브타입 관계는 3가지 방법으로 관리 할 수 있다.
첫번째 슈퍼타입 엔터티의 재귀관계 도출
위 모델은 사원이 개인고객을 관리한다는 요건으로 인해 슈퍼타입에 재귀관계가 생겼다.
재귀관계가 구현된 속성은 관계고객번호 속성이다. 관계고객번호 속성은 다양한 재귀 관계를 관리하기 위해 일반화한 속성이다. 하나의 특정한 관계만을 관리했다면 '개인고개관리사원고객번호' 처럼 구체적으로 사용할 수 있다.
홍길동, 김길동 고객을 관리하는 사원은 박길동이고, 박길동을 관리하는 사원은 없으므로 널값을 갖는다.
이 관계는 개인고객 인스턴스와 사원고객 인스턴스가 다대다일때는 사용할 수 없다.
홍길동 고객을 이길동 사원고객도 관리한다면 다대다 관계가 되므로 재귀 관계로 관리할 수 없다.
아래 슈퍼타입에 여러개의 재귀관계가 존재하는 모델은 관계가 어떤 관계인지 명확한 반면, 관계가 늘어나면 속성도 늘어나게 되는 유연하지 않은 모델이다.
두번째 방법 서브타입 엔터티 사이의 관계도출
사원이 개인고객을 관리한다는 요건을 서브타입 엔터티 간의 관계로 관리하는 모델이다.
이 관계는 일반적인 엔터티간의 관계와 동일한 관계다. 완전한 서브타입 일떄만 사용할 수 있다.
업무규칙을 가장 구체적으로 관리할 수 있는 모델이기도 하다.
관계속성을 바로 알수 있기 때문에 관계를 명확히 관리할 수 있다.
세번째 방법 슈퍼타입 엔터티에 별도의 관계 엔터티 도출
서브타입 인스턴스 간 관계를 관리하는 세번째 방법은 모델과 같이 엔터티를 사용하는 것이다.
홍길동 고객을 이길동 사원도 같이 관리한다면 다대다 관계로 설계해야 한다.
첫번째 방법모델은 관계를 속성으로 관리하는 데 반해, 세번째방법은 관계를 엔터티로 관리하는 것이 차이점이다.
두번째 방법모델은 서브타입 엔터티간의 관계를 관리하는 모델이 관계가 명확해 지는 장점이 있지만, 완전 서브타입일 때만 사용할 수 있고 확장성도 떨어져서 보통 슈퍼타입 엔터티에서 관계를 관리하는 것이 일반적이다.
엔터티를 일반화 해서 통합한 모델일 경우에는 서브타입 사이의 관계가 지속적으로 늘어날 수 있으므로 관계의 확장성까지 고려한다면 아래와같은 세번째 방법을 사용하는게 좋다.
'관계형데이터모데링노트 요약' 카테고리의 다른 글
속성 (0) | 2023.11.08 |
---|---|
잘못된 서브타입 (0) | 2023.11.07 |
중첩 서브타입 (0) | 2023.11.06 |
서브타입 모델의 물리 모델 변환 - 슈퍼타입서브타입 개별생성(배타관계) (1) | 2023.11.06 |
서브타입 모델의 물리모델 변환-슈퍼타입서브타입 개별생성 (0) | 2023.11.05 |