IT기술/Data Modeling

02 데이터 분석 및 모델링

dobbby 2014. 2. 6. 10:47
반응형

잘 정의된 분석 단계의 데이터 모델에는 다음과 같은 특징이 있다.

- 해당 업무의 현재 모습뿐만 아니라 계획, 정책, 전략을 포함

- 명명법, 도메인 등 정의된 규칙에 따른 일관성 있는 모델

- 실무 업무 전문가가 참여하여 실무에 대한 내용이 충분히 포함된 내용

- 물리 설계로의 전환이 효율적으로 이루어질 수 있는 모델

- 각각의 엔티티타입, 속성, 관계 등에 대한 기본 업무 배경의 객관적 증거 존재

- 업무 병행이나 확장이 발생할 때 수용 가능한 모델


1. 엔티티타입정의

↑ 데이터모델 검증    엔티티타입 검증, 관계 검증, 속성 검증, 도메인 검증

↑ 통합화                 엔티티타입 통합

↑ 세부 사항 정의      속성 상세 정의, 정규화, 도메인 정의, 속성 규칙 정의

↑ 식별자 정의          주식별자 정의, 보조 식별자 정의, 식별자 업무 규칙 정의

↑ 관계 정의             엔티티타입 관계 정의

☞ 엔티티타입 정의    엔티티타입 정의


분석 초기에 엔티티타입을 선정하기 위해 다음과 같은 자료나 방법을 활용할 수 있다.

- 업무와 관련해서 설명한 업무 기술서를 이용한다.

- 현업 담당자와의 인터뷰를 활용한다.

- 현업의 장표를 활용한다.

- 기존 시스템이 이미 구축되어 있다면 기존 시스템의 산출물을 검토한다.

- DFD 를 통해 업무 분석을 진행하였다면 DFD 의 DATA STORE 를 활용한다.

- 현업의 업무를 직접 견학하고 인터뷰와 업무 기술서에서 누락된 정보가 있는지 검토한다.

- 현재 업무에 나타나지 않았지만 BPR (Business Process Reengineering) 에 의해 업무를 재정의한 경우 관련 엔티티타입을 찾아내야 한다.


엔티티타입 선정 방법

1) 업무 기술서, 장표, 인터뷰 정리 문서 등에서 명사를 구분한다.

2) 개념이 불분명한 것, 광범위한 것은 제거한다.

3) 엔티티타입의 특성이나 속성값은 제거한다.

4) 포괄적인 업무 프로세스에 해당되는 명사는 제거한다.

5) 중복되는 명사는 제거한다.

6) 누락된 엔티티타입이 존재하는지 유추해본다.


작성하는 양식은 여러 형식이 될 수 있지만, 다음 내용이 포함되도록 작성하면 효과적인 작업이 될 것이다.

- 엔티티타입명: 조사된 엔티티타입 후보를 기술한다.

- 엔티티타입 설명: 선정된 엔티티타입의 의미를 기술한다.

- 동의어/유의어: 작업중에 엔티티타입에서 제거했던 동의어를 기술한다. 고객과의검토 회의에서 동의하에 엔티티타입명이 바뀌는 경우가 종종 있다.

이외에도 기존에 사용했던 엔티티타입명과 개발하고자 하는 엔티티타입명이 다를 경우 데이터 전환을 위해서도 필요하다.

- 엔티티타입 구분: 발생시점에 따라 기본, 중심, 행위 엔티티타입으로 분류




2. 관계정의

↑ 데이터모델 검증    엔티티타입 검증, 관계 검증, 속성 검증, 도메인 검증

↑ 통합화                 엔티티타입 통합

↑ 세부 사항 정의      속성 상세 정의, 정규화, 도메인 정의, 속성 규칙 정의

↑ 식별자 정의          주식별자 정의, 보조 식별자 정의, 식별자 업무 규칙 정의

 관계 정의             엔티티타입 관계 정의

 엔티티타입 정의    엔티티타입 정의


관계를 정의하고자 하면 해당 엔티티타입으로부터 타 엔티티타입간의 관계가 존재하는지 확인하는 작업을 먼저 해야한다.

관계에서 중요한 점 세가지는 방향, 카디낼리티, 선택도다.


어떻게 관계를 도출할 것인가?

1. 업무 기술서, 장표, 인터뷰 정리 문서 등에서 동사를 구분한다.

2. 도출된 엔티티타입과 관계를 이용하여 관계 정의서를 작성한다.

3. 고객에게 질문하여 관계를 좀더 세분화하고 정확하게 도출하는 작업을 한다.

4. 데이터모델링 툴이나 칠판, 포스트잇을 이용하여 모델을 직접 그려본다.

5. 고객과 질문하고 협의하여 모델을 검토한다.




3. 식별자 정의

↑ 데이터모델 검증    엔티티타입 검증, 관계 검증, 속성 검증, 도메인 검증

↑ 통합화                 엔티티타입 통합

↑ 세부 사항 정의      속성 상세 정의, 정규화, 도메인 정의, 속성 규칙 정의

 식별자 정의          주식별자 정의, 보조 식별자 정의, 식별자 업무 규칙 정의

 관계 정의             엔티티타입 관계 정의

 엔티티타입 정의    엔티티타입 정의


주식별자 결정이 데이터 모델에서 가장 중요하다.

구축하고자 하는 업무의 중심 엔티티타입 중에서 가장 중요한 핵심 엔티티타입에 대해 식별자를 선정하는 작업

시스템 구축 작업에서 제일 중요한 작업 중의 하나임을 꼭 기억해야한다.


주 식별자 정의

1) 해당 업무에서 자주 이용되는 속성을 주식별자로 지정한다.

2) 속성값의 길이가 가변적인 속성은 주식별자로서 적당하지 않다.

3) 속성값이 자주 변하는 속성은 주식별자로서 적당하지 않다.

4) 주식별자를 선정하기 위한 속성의 수를 적게한다.

5) 주식별자 속성은 반드시 값이 들어와야 한다.


보조 식별자 정의

주식별자가 존재하지만 일반속성중에서도 다른 속성에 결정자 역할을 할 수 있고,

유일성을 가지고 있는 속성을 보조식별자로 정의한다.


외부 식별자 정의

외부식별자 (Foreign Identifier) 는 자기 자신의 엔티티타입에서 필요한 속성이 아니라

다른 엔티티타입과의 관계를 통해 자식 쪽 엔티티타입에 생성되는 속성을 외부식별자라 하며,

데이터베이스 생성 시에 FK 역할을 한다.


비식별자 관계에 의한 외부속성 생성

1) 자식 엔티티타입에서 받은 속성이 반드시 필수가 아니어도 무방하기 때문에 부모없는 자식이 생성될 수 있는 경우

2) 부모가 있었지만, 자식만 남겨두고 먼저 소멸될 수 있는 경우가 이에 해당한다.

3) 여러 개의 엔티티타입이 하나의 엔티티타입으로 통합되어 표현되었는데, 각각의 엔티티타입이 별도의 관계를 가질 때

4) 자식 엔티티타입에 주식별자로 사용해도 되지만, 자식 엔티티타입에서 별도의 주식별자를 생성하는 것이 더 유리하다고 판단될 때 비식별자 관계에 의한 외부 식별자로 표현한다.

5) 자식과 관련이 있는 엔티티타입으로의 주식별자 상속을 차단하기 위해 비식별자 관계를 설정한다.


식별자의 업무 규칙 정의

식별자 업무 규칙이란 주식별자와 외부 식별자간 데이터 무결성을 유지하기 위해 식별자간 업무 규칙을 정의하는 참조 무결성 규칙이다.




4. 속성 정의

↑ 데이터모델 검증    엔티티타입 검증, 관계 검증, 속성 검증, 도메인 검증

↑ 통합화                 엔티티타입 통합

 세부 사항 정의      속성 상세 정의, 정규화, 도메인 정의, 속성 규칙 정의

 식별자 정의          주식별자 정의, 보조 식별자 정의, 식별자 업무 규칙 정의

 관계 정의             엔티티타입 관계 정의

 엔티티타입 정의    엔티티타입 정의


업무 필요에 의해 선정된 엔티티타입에 업무 프로세스가 사용하는 속성을 정의하는 것이 좋다.


속성 상세정의

업무는 엔티티타입에 속한 각각의 엔티티들에 대해 자세한 내역을 가지고 있으며,

각각의 내역에 대해 값을 가지도록 모델링으로 구성한 모습이 바로 속성이다.

엔티티는 여러개의 속성으로 이루어져 하나의 엔티티가 되고,

엔티티타입은 이 엔티티의 어커런스가 되므로 엔티티타입을 속성의 집합이라고도 설명할 수 있는 것이다.

각각의 속성은 반드시 하나의 엔티티타입에 속해 있어야 하고, 전체 데이터 모델에서 하나의 의미만을 가지고 있어야 한다.

하나의 속성은 한개의 값만을 가지는 것이 원칙이다.

때로는 시간에 따라 하나의 엔티티타입 내에서 속성값이 변할 수가 있다.

이러한 속성을 다중값 속성 이라고 하는데, 예를 들면 한 고객이 여러번 방문한 내용을 관리해야 한다면 방문일, 방문 내용은 고객 엔티티타입의 속성만으로는 존재할 수 없고, 새로운 엔티티타입이 생성되어야 한다. 그리고 관계는 1:M 관계로 설정되어야 한다.



정규화

위의 내용중 다중값 속성의 경우는 정규화 대상 중 1차 정규화 대상이 되는 경우에 해당된다.

1차 정규화의 정의는 중복된 속성의 분리였다.

즉 정해진 결정자에 의해 속성의 중복이 발생하는데, 위 고객의 경우는 속성의 중복이 컬럼단위로 발생한 경우에 해당된다.

이와 같이 각각의 속성이 엔티티타입에 배치된 이후에 속성값을 조사하여 정규화 대상을 찾아 적용하도록 한다.


도메인/용어정의

- 도메인 정의서에 따른 각 속성의 도메인 지정

데이터 모델링에서 도메인은 모든 속성이 물리적인 데이터베이스에서 데이터값을 어떤 형태로 가지고 있을것이며,

얼마만한 길이로 가지고 있을 것인지를 지정한다.


- 용어사전에 따른 속성명 지정

데이터 모델링에서 용어사전은 논리명과 물리명을 정의하는 것으로, 

논리명은 업무로부터 도출된 속성의 이름을 의미하고

물리명은 데이터베이스에 구축될 속성 이름을 의미한다.


속성 규칙 정의

속성을 좀더 상세하게 분석하고 적용하기 위해서는 네가지를 속성에 적용하는 것이 필요하다.

1) 속성의 3분류를 정의한다.

기본속성 - 업무상 수집된 기본 속성

설계속성 - 업무에 필요한 정보를 주기 위해 시스템에서 고안된 속성 (코드, 일련번호 등)

자신이 참조하는 속성값이 변해도 자기 속성에는 변화를 주지 않는 속성

파생속성 - 다른 속성에 의해 계산되거나 영향을 받아 생성된 속성 (금액 총합, 이자 등)

파생속성은 그 속성이 가지고 있는 계산 방법에 대해 반드시 어떤 엔티티타입에 어떤 속성에 의해 영향을 받는지 정의되어야 한다.


2) 속성값의 필요 여부를 정의한다.

어떤 속성은 엔티티가 생성되는 시점에는 값이 존재하지 않는 경우가 있다.

나중에 값을 생성할 것이다. 또는 값이 생성되었다 할지라도 어느 순간에 값이 존재하지 않아도 되는 속성,

즉 Null 상태로 존재할 수 있는 선택 (Optional) 속성이라 한다.


3) 속성의 기본값을 정의한다.

속성에 따라 주식별자는 들어오는데, 일반 속성 중에 값이 들어오지 않을 경우가 발생한다.


4) 반드시 정해진 값 (Check Value) 만을 가져야 하는지를 정의한다.




5. 도메인 정의

데이터 모델링에서 도메인이란 엔티티타입 내의 속성에 대한 데이터타입과 크기, 제약 사항을 지정하는 것이다.


도메인을 정의하는 방법은

- 코드에 대한 도메인

- 일련번호

- 일반적인 속성


속성으로부터 도메인을 정의하는 방법

1) 데이터 모델의 모든 속성을 나열한다.

2) 모든 속성 중에서 뒤부터 2~4자 정도를 분리해본다.

3) 공통으로 발생하는 접미어를 분리하여 하나로 만든다.

4) 분리된 접미어를 비슷한 것끼리 묶어 그룹을 만들어 이름을 부여한다.

5) 각 도메인별로 데이터타입과 길이를 지정한다.

6) 각 엔티티타입의 속성에 도메인을 할당한다.




6. 용어사전 정의

용어사전을 정의하는 이유는 논리 데이터 모델에 기술된 속성명과 테이블명에 업무적인 용어를 적용하거나

프로젝트에서 사용하기 위한 이름을 부여하여 데이터 모델과 애플리케이션 인터페이스에서 효율적인 정보화 시스템을 구축하기 위해서다.


작업 순서

1) 엔티티타입의 속성명을 모두 한곳에 모아 기술한다.

2) 속성명을 업무에서 사용하는 단어의 단위로 분리한다.

3) 각각의 단위 속성에 의미를 기술하고 물리 속성명을 업무 특성에 적합하게 정의한다.

4) 물리 속성명 명명규칙을 정한다.

5) 단위 속성명에 따라 엔티티타입의 모든 속성명에 대해 논리속성명을 일치시키고, 물리 속성명을 생성해준다.




7. 4-STEP 데이터 모델링

1-step : 업무 구조 모델링

업무를 구성하는 구조 (Architecture), 즉 정적인 사항들에 대해서 엔티티타입이나 속성을 도출하는 것이다.


2-step : 업무 흐름 모델링

업무가 진행됨에 따라 발생하는 엔티티타입, 속성, 관계를 정의하는 것이다.


3-step : 모델의 기술적 접근에 의한 모델링

1, 2 step 에서 모델링을 통해 구현된 데이터 모델을 모델링의 관점에서 M:N 관계를 해소하든지

슈퍼타입과 서브타입으로 세분화 또는 통합화하든지

데이터 관리를 목적으로 이력 엔티티타입을 도출한다든지

하는 업무와 직접적으로 상관이 없지만, 정보 시스템을 구축하기 위한 데이터 모델을 적용함으로써

도출할 수 있는 엔티티타입, 속성, 관계를 정의하는 단계가 된다.


4-step : 모델 검토 및 정제를 통한 모델링

업무 구성과 흐름에 따라 모델의 구성이 적절한지 모델링의 방법에 따라 데이터 모델이 적절하게 구성되었는지 검증하여

필요하다면 엔티티타입, 관계, 속성 등을 변경 및 추가 또는 삭제한다.




모델링4단계 

엔티티타입 

속성 

관계 

1단계

업무 구조 모델링 

- 기본 엔티티타입 도출

- 원부모 엔티티타입이 많이 발생함

- 기본 엔티티타입에 대한 속성 도출

- 시나리오나 장표 등에 명확하게 나타나는 경우가 많음

- 존재에 의한 관계가 많음

- 엔티티타입간의 관계가 많이 존재하지 않을 수 있음 

2단계

업무 흐름 모델링 

- 행위 엔티티타입 도출

- 자식 엔티티타입이 많이 발생함 

- 업무 흐름 발생에 따른 속성 도출

- 행위 엔티티타입 속성 도출

- 시나리오나 장표 등에 명확하게 나타나지 않아 유추되는 경우도 많음 

- 행위에 의한 관계가 많음

- 엔티티타입간의 관계가 연결되는 경우가 많음 

3단계

기술적 모델링에 의한 모델링 

- 관계 엔티티타입 도출

- 이력 엔티티타입 도출

- 정규화에 의한 엔티티타입 도출

- 이력 엔티티타입, 수퍼/서브 엔티티타입이 도출될 수 있음 

- 관계 엔티티타입 속성 도출

- 업무 구조나 흐름이 나타나지 않음

- 업무적으로 필요하지 않더라도 기술적으로 데이터 모델링에서 필요한 속성 도출 (변경일자 등) 

- 행위에 의한 관계가 많음

- M:N 관계를 해소하면서 엔티티타입을 발생시킴 

4단계

모델 검토 및 정제를 통한 모델링

- 엔티티타입의 추가, 변경, 제거 발생 

- 속성, 검토 및 정제 

- 관계 검토 및 정제 




반응형