Define a “Subtype”

DATABASE/Articles 2020. 6. 5. 16:54

항상 그러하듯이 'Subtyping'에 대해 일단 정의부터 내려보자.

 

Subtyping은 엔터티가 독립성을 유지한 상태로 엔터티 內 공통속성을 그룹화화는 과정이다.

위 정의에는 데이터모델링에 대한(특히 엔터티에 대한) 많은 개념이 들어가 있다.

위 정의를 바탕으로 Subtype/Subtyping에 대해 살펴보자.

 

엔터티의 독립성1)을 유지한 상태로 엔터티 내 공통속성을 그룹화하는 과정이라고 했는데,

공통속성 그룹화를 하는 이유는(즉, Subtype을 도출하는 이유는) 아래와 같다.

- 커뮤니케이션을 향상 시킬 수 있다.

- 모델단에서 강제적으로 비즈니스 룰을 적용하여 향후 데이터 정합성을 향상 시킬 수 있다.

 

간혹, 엔터티 통합/분할의 관점에서 Subtype을 얘기하는 경우가 있는데

맞는 얘기이긴 하지만 이게 전부는 아닌데, 아래와 같이 정의하여 Subtype을 결과론적 '행위의 결과'로만 이해(오해)할 수 있게 하는것은 바람직하지 않다고 생각한다.

굳이 이 얘기를 하는 이유는 최근 국내에서 가장 많이 팔린 모델링 책 중 하나에서 아래와 같이 정의했기 때문이다.

엔터티를 통합하거나 분리하는 행위의 결과가 서브타입입니다.

 

3가지 관점에서 Subtype을 정리해 보면...

 

1. Subtype 장단점

- 장점: Subtype을 도출하는 이유와 같다.

  . 커뮤니케이션을 향상 시킬 수 있다.

  . 모델단에서 강제적으로 비즈니스 룰을 적용하여 향후 데이터 정합성을 향상 시킬 수 있다.

- 단점: 무분별하게 Subtype을 도출할 경우

  . 모델을 복잡하게 하고,

  . 그에 따라 이해도가 떨어지고, ex) "왜 Subtype을 도출했지?"라는 불필요한 생각에 따른 에너지 소비 등..

  . 물리 모델 전환 시, 쓸데없는 고민을 하게한다. ex) 하나의 엔터티에 3가지의 경우의 수가 발생한다.

 

2. Subtype 도출시점

위에서 얘기한 두 장점이 필요한 시점이라고 생각한다.(물론 장점은 더 있을 수 있다)

즉, 개념모델링 단계일 수 도 있고, 논리모델링 단계일 수 도 있다.(주로 논리모델링 단계에서 도출된다)

하지만, 물리모델링 단계에서는 원칙적으로 도출할 수 없다. 이유는 Subtype은 RDB(Relational Database)에서 존재하지 않는 개념이기 때문이다.

 

3. Subtype 물리모델 전환 방법(가정: Subtype은 두 개)

방법1) Rolling down

Super type 엔터티를 제거하고, 모든 데이터 element 및 관계들을 Subtype엔터티로 이동 시킨다.(2개 Table)

 

방법2) Rolling up 

Subtype엔터티를 제거하고 모든 데이터 element 및 관계들을 Supertype 엔터티로 이동 시킨다.(1개 Table)

 

방법3) Identity: 

Supertype, Subtype 엔터티들을 모두 유지한다.(3개 Table)

 

 

 

1) 엔터티의 독립성은 너무 중요한 개념이다. 이 주제만으로 정말 많은 얘기를 할 수 있고, 그 만큼 중요하다.

하지만 그 주제에 대해 깊이 들어가지 않겠다. 알고있다는 전제하에 얘기하고자 한다.(궁금하신 분은 구글링하면 엄청 나오니 찾아보시길 바란다)

'DATABASE > Articles' 카테고리의 다른 글

Can a conceptual data model contain attributes?  (0) 2020.01.23
Define a “Thing”  (0) 2016.02.13
Modifying Foreign Key Definitions  (0) 2014.04.21
: Comments 0

Write a comment