IT기술/Data Modeling

06 모델 검토

dobbby 2014. 2. 7. 12:10
반응형

실제 프로젝트에서 데이터 모델 검토 단계는 세 개의 조직에서 이루어진다.

(1) 모델링을 수행한 모델러

(2) 시스템 통합팀이나 품질 보증팀

(3) 외부 감리 인원 초청


ERD 는 분석 단계 활동의 가장 중요한 결과물로서 업무적 측면, 모델 규약 측면의 두 가지 측면에서 검토가 이루어진다.


1. 엔티티타입 검토

엔티티타입을 검토하는 대표적인 질문 내용은 다음과 같다.


선정된 PK가 업무적으로 발생하는 자료의 유일성을 보장하는가?

- 주요 오류 유형사례

1) 자료의 유일성을 보장할 수 없는 항목에 의한 PK 선정

2) 일반적으로 필요 이상의 항목을 PK 로 선정하는 경우


선정된 PK는 효율적인 모습인가?

엔티티타입 내에서 PK 를 정하는 기준은 다음과 같다.

1) 선정된 속성은 해당 업무에 대해서 대표성을 가지는가?

2) 최소의 속성으로 자료의 유일성을 확보할 수 있는가?


- 주요 오류 유형 사례

1) 업무 분석 결과 자료의 유일성을 확보할 수 있는 적절한 속성의 조합이 파악되지 않아

최대한 많은 항목을 PK 로 선정하여 자료의 유일성을 확보하려는 경우


자료의 발생 유형이 유사항 엔티티타입은 통합되었는가?

- 주요 오류 유형 사례

1) 장표 단위의 엔티티타입 생성

2) 집약도가 큰 여러 개의 통계 엔티티타입


독립된 엔티티타입이나 엔티티타입의 그룹은 없는가?


병합 또는 분리되어야 할 엔티티타입은 없는가?

- 주요 오류 유형 사례

1) 연속적인 업무 절차가 갖는 엔티티타입의 병합으로 인해 발생하는 문제

2) 대칭적인 업무의 경우 엔티티타입의 분리


추가적으로 도출되어야 하거나 불필요한 엔티티타입은 없는가?

- 주요 오류 유형 사례

1) 단위 시스템간에 중복된 엔티티타입 발생

2) 업무적으로 상호 M:N 의 관계를 가지는 엔티티타입간의 관계에 의한 추가 엔티티타입 필요

3) 1, 2, 3차 정규화가 미흡하여 추가적인 엔티티타입이 도출되지 않음


엔티티타입이 주변 여러 엔티티타입의 공통 엔티티타입인 경우 자료 원천이 어느 엔티티타입인지 추적할 수 있는가?

- 주요 오류 유형 사례

1) 슈퍼타입/서브타입 모델에서 자료 원천 구분 표시 (Flag) 가 없는 경우


PK 의 순서는 시스템의 성능으로 고려하여 적절한 순서로 정의되어 있는가?

- PK 조합 우선순위

1) 모든 SQL 에서 항상 사용되는 속성은 우선순위를 제일 높게 해야한다.

SQL 의 WHERE 에 첫 번째 속성이 표현되어 있지 않다면 그 인덱스는 사용되지 않기 때문이다.

2) 분포도가 좋은 속성은 PK 선정에서 우선순위가 높다. 

분포도가 좋다는 의미는 사원번호, 주민번호, 여권번호 등과 같이 자료의 식별성이 뛰어난 속성을 의미하는데, 

SQL 사용 시 분포도가 좋은 속성으로 접근하면 그만큼 적은 범위의 자료에만 접근할 수 있도록 하기 때문이다.

3) '=' 조회를 하는 컬럼은 PK 조합시 우선순위가 높다.

예를 들어, 날짜와 같은 속성은 대부분이 기간을 조회하므로, 특정 기간을 검색할 때 인덱스 순서상 날짜 속성 이하에 있는 속성은

SQL 의 WHERE 절에 나타나 있을지라도 자료를 걸러주지 못한다.


- 주요 오류 유형 사례

1) 잘 사용되지 않는 속성이 PK 의 첫번째 항목으로 선정되는 경우

2) 구분 표시와 같은 속성이 PK 의 첫번째 항목으로 선정되는 경우

3) 날짜와 같이 주로 범위를 조회하는 속성이 PK 의 첫번째 항목으로 선정되는 경우




2. 속성 검토

속성에 대한 검증 내역

반정규화된 속성은 식별되는가?

- 주요 오류 유형 사례

1) 반정규화된 속성에 실제로는 의미가 다르고, 이름만 같은 속성이 공존함


반정규화는 시스템 복잡도와 성능을 고려하여 적절하게 이루어졌는가?

- 반정규화의 단점

1) 자료를 수정할 때 관련 엔티티타입에 존재하는 반정규화된 속성도 함께 변경해주어야 하므로 자료 수정 시 부하가 발생한다.

2) 만일 프로그램에서 자료 수정 시, 관련 엔티티타입에 존재하는 반정규화된 속성을 병행 수정하는 프로세스가 빠졌다든지 운영자에 의해

자료가 직접 변경되는 경우가 생기면 자료의 무결성이 깨질 수 있다.


- 데이터 웨어하우징이라면 다르다

1) 데이터 웨어하우징은 엔티티타입당 매우 많은 데이터를 관리하고, SQL 역시 매우 많은 데이터 (수만 건에서 수천만 건일 수 있음) 에 접근하므로 정규화 상태로 검색을 하면 치명적인 성능 저하가 따를 수 있다.

2) 데이터 웨어하우징에서의 자료는 업무 진행 중에 수시로 생성되며, 다음 프로세스에 의해 반영되는 형태로 발생하므로

업무 절차 중심의 데이터가 아니다. 또한 일괄적인 자료의 로딩 때문에 발생하는 자료이므로 실제적으로 기초 코드 관리 엔티티타입을 제외하고는 자료의 수정, 삭제는 없다고해도 무방할 것이다. 그리고 자료의 무결성이 다른 어떠한 경우를 통해 깨진다 해도 원천자료는 이미 가지고 있으므로 얼마든지 복구 가능하다.

따라서 자료의 무결성에 대한 부담은 매우 적다.


- 주요 오류 유형 사례

1) 시스템 특성에 따르지 않은 과도한 반정규화

2) 반정규화를 하지 않아 발생하는 시스템 성능 저하


명칭이 같은 속성의 타입과 크기는 동일한가?

- 주요 오류 유형 사례

1) 크기의 불일치

2) 타입의 불일치


내부적인 속성을 가지고 있는 속성은 없는가?

- 주요 오류 유형 사례

1) 병합된 속성만 관리


병합되어야 할 속성은 없는가?

- 주요 오류 유형 사례

1) 날짜와 같이 대부분 범위 조회가 일어나는 속성


전후 레코드간 영향을 미칠 수 있는 속성은 없는가?

- 주요 오류 유형 사례

1) 중간 데이터가 변경할 수 있는 이력 엔티티타입에서 현재 데이터까지의 누적 정보를 관리하는 속성


감사, 통계 등을 고려하여 속성이 정의되었는가?

- 주요 오류 유형 사례

1) 코드화할 수 있으나 텍스트로 정의된 속성




3. 관계 검토

엔티티타입간의 관계가 M:N 인 속성은 없는가?

- 주요 오류 유형 사례

1) M:N 관계를 갖는 엔티티타입에 대해 새로운 부모 엔티티타입을 생성하여 관계를 연결하는 경우

2) 두 엔티티 중 하나의 관계를 All Or Nothing 으로 하여 1:N 의 관계를 정의하는 경우

3) M:N 의 관계를 갖는 엔티티타입에 대해 새로운 자식 엔티티타입을 생성하여 관계를 연결하는 경우


엔티티타입간의 관계는 업무적 흐름과 규약이 일치하는가?

- 주요 오류 유형 사례

1) 매출 및 급여에서 발행하는 전표를 통합하여 관리하는 전표 엔티티타입과 매출 엔티티타입 및 급여 엔티티타입과의 관계


업무적 흐름에 비추어 도출되지 않는 관계는 없는가?

- 주요 오류 유형 사례

1) 단위 시스템 담당자들의 업무 협의 부족으로 인한 단위 시스템간 연계 엔티티타입간의 관계 미도출


관계에 대한 표현은 적절한 수준에서 이루어졌는가?

- 주요 오류 유형 사례

1) 코드 및 통계 엔티티타입과의 관계 연결

2) PK 를 상속받은 엔티티타입과 조상 엔티티타입과의 관계 연결




4. 도메인 검토

도메인이 적절하게 정의되고 관리되는가?

- 주요 오류 유형 사례

1) 논리적 개연성이 없이 단지 데이터타입과 크기의 속성만 같은 것에 대해 정의된 도메인


도메인의 변경에 따라 속성이 변경되는가?

- 주요 오류 유형 사례

1) 복잡한 데이터 모델에서 도메인 관리 소홀




반응형