Data Modeling Evangelist Kaien Kim's Blog
Define a “Subtype” 본문
항상 그러하듯이 '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) 엔터티의 독립성은 너무 중요한 개념이다. 이 주제만으로 정말 많은 얘기를 할 수 있고, 그 만큼 중요하다.
하지만 그 주제에 대해 깊이 들어가지 않겠다. 알고있다는 전제하에 얘기하고자 한다.(궁금하신 분은 구글링하면 엄청 나오니 찾아보시길 바란다)
'DATA > Articles' 카테고리의 다른 글
What Is Data Literacy? (0) | 2023.03.30 |
---|---|
Ataccama ONE (0) | 2023.03.16 |
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 |