지은이: 김상래
출판사: 한빛미디어
이 책에서 한마디로 정의한 데이터 모델링은 다음과 같다.
데이터 모델링은 2차원 테이블 구조에 관리할 데이터를 어떻게 담는 것이 최적인지 고민하는 과정이다.
함축적이지만 본질을 나타내는 표현이다. 이렇게 고민하는 과정에서 정규화 이론, 마스터 데이터 등 여러 개념들이 생겨났다. 덕분에 배워야 할 것이 많아 보이고 난해해 보이지만 본질은 2차원 테이블 구조에 데이터를 어떻게 담을지 고민하는 과정인 것이다. 이 한마디로 막연하게 생각했던 모델링이 가깝게 느껴진다. 이처럼 책 전반에 걸쳐 모델링이 익숙하지 않은 독자에게 모델링을 어떻게 시작해야 하는지 인도해 준다.
이 책은 18개의 챕터가 존재하는데 크게 업무 데이터 이해, 엔터티 모델링, 데이터 표준화, 관계, 코드, 식별자에 대한 설명이다. 각각에 대해 책 내용을 토대로 간략하게 설명해 본다.
업무 데이터 이해
애플리케이션 개발에 앞서 우선적으로 해야 할 것이 요구사항 파악이다. 모델링도 마찬가지로 데이터 요구사항을 먼저 파악해야 한다. 비즈니스 행위를 데이터 측면에서 처음부터 끝까지 조명하고, 비즈니스 "행위"를 중심으로 행위의 "주체"와 "대상"이 되는 데이터를 찾아야 한다.
또, 데이터의 근본 성격을 파악하여 집합과 개체를 식별하고 중속성을 분석하여 데이터의 독립성을 확인할 수 있어야 한다.
엔터티 모델링
엔터티 모델링은 대상의 본질과 특성을 드러내어(추상화) 업무에 필요한 데이터를 성격이 유사한 것끼리 모아놓는 과정(범주화)이다. 피상적인 현상(논리적 맥락이나 역할)에만 집착하지 말고 근본적인 존재, 성질을 분석하여 비즈니스 맥락에서 본질이 되는 개체를 명확히 떼어내야 한다.
적절한 집합 정의와 추상화 수준을 결정하는 것은 어렵다.
엔터티 모델링의 어려움과 복잡도를 극복할 전략은 정규화 이론에 근거한 분류, 마스터 데이터를 중심으로 한 업무 행위의 주체와 대상 식별, Account 중심의 접근법, 명확한 분류/통합과 분리의 결정이다.
- 정규화 이론: 속성들의 종속성을 분석해서 하나의 종속성이 하나의 표로 관리되도록 분해하는 과정이다. 보통 3 정규화까지 적용한다.
- 마스터 데이터: 업무 활동의 근간이 되는 최상위 부모 데이터를 의미하며, 트랜잭션의 실질적인 주체와 대상이다.
- Account: 업무 행위의 최상위 주체로 관련 업무 처리들을 동일한 성격으로 관리하는 단위이다. 즉 수많은 행위 데이터를 동일한 성격으로 묶을 수 있는 단위 개체이다. 마스터 데이터중 "행위"에 해당된다.
- 명확한 분류/통합과 분리의 결정: 엔터티의 전체와 부분을 명시적으로 구분하여 표현한 "서브타입"을 기반으로 엔터티의 통합, 분리를 결정한다.
데이터 표준화
표준화는 규칙을 정한 후 그것이 일관되게 적용되도록 이해 관계자들을 강제하는 과정이다. 데이터 표준화는 구조 관점의 표준화에 집중하며, 엔터티의 특징이나 본질적인 성질을 명세하는 속성의 메타데이터를 정의하는 작업이다.
데이터 표준화의 목표는 데이터 모델의 속성명으로 동음이의어나 이음동의어가 사용되는 경우를 최소화하는 것이다.
관계
관계는 엔터티 사이에 존재하는 연관성으로, 모델에서는 관계선으로 표현되며 상위 엔터티와 주 식별자가 하위 엔터티의 속성으로 관리되는 것이다.
참조 무결성 제약이 존재하는 관계만 관계선으로 표현되어야 한다.
코드
있는 그대로 사용하기 불편한 정보는 종종 약속된 간단한 기호 체계로 압축해서 사용하는데 이 약속된 모습의 기호가 코드이다. 코드는 값의 분류로 집계가 필요한 속성 데이터를 기호화하여 표준 코드로 관리한다.
공통 코드는 코드 성격의 개별 테이블을 한 단계 더 추상화하여 한 곳으로 모아놓은 것이다. 코드가 필요할 때마다 테이블이 아닌 값으로 추가되기 때문에 확장성이 뛰어나며 관리가 용이한 장점이 있다.
식별자
주 식별자는 데이터를 쌓는 기준이자 동시에 엔터티 안에 존재하는 모든 속성의 결정자 역할을 하는 최소한의 속성이다. 엔터티에서 중복이 발생하지 않는 유일한 값이며 인스턴스가 증가하는 규칙과 일치한다. 주 식별자의 상속 여부는 관계되는 엔터티 간의 데이터적 종속성을 기반하여 결정한다.
지난 몇 년간 직접 할 기회가 없었던 모델링에 자신감을 키우고자 읽어보았다. 내용이 내용인지라 쉽진 않은 책이었다. 모든 내용에 대해 이해하기에는 아직 부족하여 추후에 한번 더 읽어볼 계획이다.
책에는 더욱 자세한 설명과 그림, 예제들이 담겨있다. 그러니 모델링에 관심 있으면 책을 꼭 읽어보길 추천한다.