Review/책

[리뷰 - 책] 프로젝트 승패를 결정 짓는 데이터 모델링 이야기 정리 (챕터7~9)

소스코드 요리사 2018. 9. 17. 23:52

지난 글에 이어 7챕터부터 9챕터까지 정리를 했습니다.


이전글 :

2018/07/20 - [Review/책] - [리뷰 - 책] 프로젝트 승패를 결정 짓는 데이터 모델링 이야기 정리 (챕터 1~6)


이번글 정리한 챕터 목차

7. Back to the Basic, 정규화 이론

8. 엔터티의 정의가 중요하다. 고백건데 엔터티 모델링은 어렵고 힘들다.

9. 데이터에는 유형, 종속관계, 계층구조가 존재한다. 이것이 힌트다.




07. Back to the Basic, 정규화 이론

현실의 데이터에서 속성들의 종속성을 분석해서 하나의 종속성이 하나의 표(릴레이션)로 관리되도록 분해해가는 과정이 정규화. 즉, 종속성 기준으로 데이터를 어떻게 담는 것이 최적인가에 대한 방법론.

함수 종속은 하나의 집합 안에 존재하는 속성 사이의 연관관계로, 집합 내 속성 A가 속성 B의 값을 유일하게 식별하는 결정자 라면 속성 B는 속성 A에 함수적으로 종속된다.

제1정규화


1정규형에서는 모든 속성이 값을 반드시 하나만 가져야한다. 어떤 속성이 값을 여러 개 가지고 있거나 물리적으로는 하나지만 유사한 형태의 반복속성이 존재(자격증1, 자격증2, ...)하는 경우는 Basic Parent에서 별도 엔티티로 분리해야함.
제1정규화로 생성된 집합은 자식이 됨.

예제)


제2정규화


2정규형에서는 모든 속성이 반드시 주 식별자 전부에 종속되어야 함.
주식별자 일부에만 종속될 경우 분리해야함. 제2정규화로 분리된 집합은 부모가 됨.

예제)



제3정규화


3정규형에서는 주식별자가 아닌 모든 속성이 상호 종속관계면 안됨.

예제)



08. 엔터티 정의가 가장 중요하다. 고백건대 엔터티 모델링은 어렵고 힘들다

엔터티는 업무의 기준이 되는 유무형의 사물과 정보, 이를 기초로 발생하는 사건, 거래 혹은 행위 객체들을 성격이 유사한 것끼리 모아 놓은 집합임.

데이터 모델은 업무를 데이터 관점으로 명확히 표현(추상화) 해야한다. 
예) 전화주문 이라는 엔터티 생성 (X) 이는 다른 주문경로가 생기면 데이터 모델도 함께 변경해야함.

데이터 중심의 사고를 했더라도 관점이 잘못 되면 종속적으로 흘러 갈 수도 있음. 업무 변화에 흔들리지 않는 모델이 되려면 업무의 외면이 아닌 그 현상을 일으키는 근본을 꿰둟어봐야함.

애매한 것들을 명확히 하여 객관적으로 관리 할 수 있도록 하는 것이 엔터티 정의의 시작임. 엔터티를 명확 히 정의 한다는 의미는 집합의 성격에 부합하는 엔터티 명을 지어주기도 하지만, 그 집합의 개체들이 어떤 기준으로 발생되고 관리되는지 명시적으로 규정하는 것, 속성들이 어떤 수준이나 존재(엔터티)에 고유한 특성인지 파악하는 것이라고 할 수 있다.

주식별자 정의 = 엔터티 정의

엔터티 모델링은 어렵다. 어려운 이유는 엔터티의 적당한 크기(추상화 수준)을 결정하는 기준을 찾기 어렵기 때문이다.

09. 데이터에는 유형, 종속관계, 계층구조가 존재한다. 이것이 힌트다.

업무 데이터를 유심히 살펴보면 일반적으로 데이터에는 하나의 틀로 묶을 수 있는 유형 혹은 패턴이 존재함. 업무 데이터라 함은 업무와 관련된 사건의 기록이며, 결국 업무 정보는 데이터를 육하원칙에 따라 결합한 체계라고 말할 수 있음.


대부분의 업무데이터를 크게 일반화시켜보면 데이터의 성격은 위와 같은 범주에 들어온다.

더불어 데이터 사이에는 종속관계와 같은 구조적 특성도 발견된다. 주변의 기준정보가 존재하지 않으면 업무 행위 자체가 발생할 수 없는 관계 (부모-자식 관계) 예) 상환금액, 상환 일시 데이터는 대출이라는 행위가 없으면 절대 존재할 수 없음. 대출에 종속되어 있음.

다른 엔터티에 의존하지 않고 스스로 존재하는 강한 엔터티, 반드시 상위 엔터티가 있어야 존재 할 수 있는 약한 엔터티가 있음.

하위 엔터티가 상위 엔테티의 주 식별자를 자신의 주 식별자로 상속하며, 상위 엔터티에 그 존재가 완전히 종속된 약한 엔터티일 경우, 상위 엔터티를 부모라고 함.

개념 데이터 모델을 그리는 순서 및 리버스 모델링 순서

  1. 최상위의 고객과 상품을 찾는다.
  2. 고객과 상품 수준의 다른 주체와 대상도 찾는다.
  3. 고객과 상품이 행한 업무 트랜잭션(주로 계약 수준)을 찾는다.
  4. 트랜잭션이 주체로 행한 하위 트랜잭션을 찾는다.
  5. 관계를 찾아 연결
  6. 각 엔터티를 주요 속성부터 채워나간다.
  7. 이력 등 기타 엔터티를 고려하며 전체 모델을 상세화한다.