Part 1. 데이터 모델링의 이해
1. 모델링의 이해
- 모델링의 정의
- 모델링 : 복잡한 현실 세계를 일정한 표기법에 의해 표현하는 일 (현실 세계 -[추상화, 단순화, 명확화]→ 모델)
- 가설적 또는 일정 양식에 맞춘 표현
- 어떤 것에 대한 예비 표현으로 그로부터 최종 대상이 구축되도록 하는 계획으로서 기여하는 것
- 복잡한 현실 세계를 단순화시켜 표현하는 것
- 모델이랑 사물 또는 사건에 관한 양상(Aspect)이나 관점(Perspective)을 연관된 사람이나 그룹을 위하여 명확하게 하는 것
- 모델이랑 현실 세계의 추상화된 반영
- 모델링의 특징
- 추상화(모형화, 가설적)는 현실 세계를 일정한 형식에 맞추어 표현한다는 의미
- 다양한 현상을 일정한 양식인 표기법에 의해 표현한다는 것
- 단순화는 복잡한 현실 세계를 약속된 규약에 의해 제한된 표기법이나 언어로 표현하여 쉽게 이해할 수 있도록 하는 개념을 의미
- 명확화는 누구나 이해하기 쉽게 하기 위해 대상에 대상에 대한 애매모호함을 제거하고 정확하게 현상을 기술하는 것을 의미
- 즉, 모델링은 현실 세계를 추상화, 단순화, 명확화하기 위해 일정한 표기법에 의해 표현하는 기법
- 정보 시스템 구축에서는 모델링을 계획, 분석, 설계할 때 업무를 분석하고 설계하는데 이용하고 이후 구축, 운영 단계에서는 변경과 관리의 목적으로 이용하게 된다.
- 모델링의 세 가지 관점
- 모델링 : 시스템의 대상이 되는 업무를 분석하여 정보 시스템을 구성하는 과정에서 업무의 내용과 정보 시스템의 모습을 적절한 표기법(Notation)으로 표현하는 것
- 데이터 관점 : 업무가 어떤 데이터(Data)와 관련이 있는지 또는 데이터 간의 관계는 무엇(What)인지
- 프로세스 관점 : 업무가 실제하고 있는 일(Process)은 무엇인지 또는 무엇을 해야하는지(How) 모델링 하는 방법
- 데이터와 프로세스의 상관 관점 : 업무가 처리하는 일의 방법(Process)에 따라 데이터(Data)는 어떻게 영향을 받고 있는지 모델링하는 방법(Interation)
2. 데이터 모델의 기본 개념의 이해
- 모델링의 정의
- 데이터 모델 : 데이터베이스의 골격을 이해하고 그것을 바탕으로 SQL 문장을 효율적으로 작성하기 위해 알아야하는 핵심 요소
- 데이터 모델링
- 정보 시스템을 구축하기 위해, 해당 업무에 어떤 데이터가 존재하는지 또는 업무가 필요로 하는 정보는 무엇인지를 분석하는 방법
- 기업 업무에 대한 종합적인 이해를 바탕으로 데이터에 존재하는 업무 규칙(Business Rule)에 대하여 참(True) 또는 거짓(False)을 판별할 수 있는 사실(사실 명제)을 데이터에 접근하는 방법(How), 사람(Who), 전산화와는 독립적인 관점에서 이를 명확하게 표현하는 추상화 기법
- 실질적으로 업무에서 필요로 하는 데이터를 시스템 구축 방법론에 의해 분석, 설계하여 정보 시스템을 구축하는 과정
- 이유
- 업무 정보를 구성하는 기초적인 정보들을 일정한 표기법에 의해 표현하여, 정보 시스템 구축의 대상이 되는 업무 내용을 정확하게 분석하는 것
- 분석된 모델을 가지고 실제 데이터베이스를 생성하여 개발 및 데이터 관리에 사용하는 것
- 결과적으로 데이터 모델링이란
- 정보 시스템을 구축하기 위한 데이터 관점의 업무 분석 기법
- 현실 세계의 데이터(what)에 대해 약속된 표기법으로 표현하는 과정
- 데이터베이스를 구축하기 위한 분석과 설계의 과정
- 데이터 모델이 제공하는 기능
업무를 분석하는 관점에서 데이터 모델이 제공하는 기능
- 시스템을 현재 또는 원하는 모습으로 가시화하도록 도와준다
- 시스템의 구조와 행동을 명세화할 수 있게 한다
- 시스템을 구축하는 구조화된 틀을 제공한다
- 시스템을 구축하는 과정에서 결정한 것을 문서화한다
- 다양한 영역에 집중하기 위해 다른 영역의 세부 사항은 숨기는 다양한 관점을 제공한다
- 특정 목표에 따라 구체화된 상세 수준의 표현 방법을 제공한다
3. 데이터 모델링의 중요성 및 유의점
데이터 모델링이 중요한 이뉴는 파급 효과(Leverage), 복잡한 정보 요구사항의 간결한 표현(Conciseness), 데이터 품질(Data Quality)로 정리할 수 있다
- 파급 효과(Leverage) : 설계를 잘해야 파급 효과가 적거나 없다
- 시스템 구축 도중 테스트 = 각 단위 테스트 → 전체를 묶어서 병행 테스트, 통합 테스트
- 테스트 도중 데이터 모델 변경이 불가피한 상황 → 많은 영향 분석 발생
- 데이터 구조 변경은 전체 시스템 구축 프로젝트에 큰 위험 요소가 될 수 있다 → 시스템 구축 작업 중 다른 어떤 설계 과정보다 데이터 설계가 중요하다고 볼 수 있는 이유
- 복잡한 정보 요구 사항의 간결한 표현(Conciseness) : 심플하게 정리되어야 이해하고 활용한다
- 데이터 모델은 구축할 시스템의 정보 요구 사항과 한계를 가장 명확하고 간결하게 표현할 수 있는 도구
- 정보 요구 사항을 파악하는 가장 좋은 방법은 수많은 페이지의 기능적인 요구 사항을 파악하는 것보다 간결하게 그려져 있는 데이터 모델을 리뷰하면서 파악하는 것이 훨씬 빠른 방법
- 데이터 모델은 건축물로 비유하자면 설계 도면에 해당한다
- 데이터 모델은 설계자의 생각대로 정보 요구 사항을 이해하고 운용할 수 있는 애플리케이션을 개발하고 데이터 정합성을 유지할 수 있도록 하는 것
- 이상적 모델 : 정보 요구 사항이 정확하고 간결하게 표현
- 데이터 품질(Data Quality) : 품질은 구조의 문제에서 발생, 아래 3가지는 유의점
- 중복(Duplication)
- 데이터 모델은 같은 데이터를 사용하는 사람, 시간, 장소를 파악하는 데 도움을 준다
- 여러 장소에 같은 정보를 저장하는 것은 잘못
- 비유연성(Inflexibility)
- 설계에 따라 사소한 업무 변화에도 데이터 모델이 수시로 변경됨으로써 유지보수의 어려움을 줄 수 있다
- 데이터의 정의를 데이터의 사용 프로세스와 분리함으로써 데이터 모델링은 데이터 혹은 프로세스의 작은 변화의 가능성을 줄인다
- 비일관성(Inconsistency)
- 데이터 중복이 없더라도 비일관성은 발생한다
- 데이터 모델링할 때 데이터와 데이터 간 상호 연관 관계에 대한 명확한 정의는 위험을 사전 예방할 수 있도록 해준다
4. 데이터 모델링의 3단계 진행
- 데이터 모델은 데이터베이스의 분명한 목표를 가지고 있다
- 현실 세계
- 추상화 수준이 높은 상위 수준을 형상화하기 위해 개념적 데이터 모델링을 전개
- 개념적 데이터 모델
- 추상화 수준이 높음
- 업무 중심적
- 업무 포괄적인 수준
- 논리적 데이터 모델링
- 시스템으로 구축하고자 하는 업무에 대해 Key, 속성, 관계 등을 정확하게 표현
- 재사용성이 높음
- 물리적 데이터 모델링
- 실제로 데이터베이스에 이식할 수 있도록 성능, 저장 등 물리적인 성격을 고려하여 설계
- 구체적 수준이 높음
- 개념적 데이터 모델링(Conceptual Data Modeling)
- 조직, 사용자의 데이터 요구사항 찾고 분석하는 것부터 시작이다
- 핵심 엔터티와 그들 간의 관계를 발견, 그것을 엔터티-관계 다이어그램(E-R Diagram)으로 생성하는 것이 주요 활동이다
- 엔터티-관계 다이어그램은 조직과 다양한 데이터 베이스 사용자에게 어떠한 데이터가 중요한지 나타내기 위해서 사용된다
- 데이터 모델링 과정이 전 조직에 걸쳐 이루어진다면, 그것은 전사적 데이터 모델(Enterprise Data Model)이라고 불린다
- 개념 데이터 모델의 두 가지 중요한 기능
- 사용자와 시스템 개발자가 데이터 요구 사항을 발견하는 것을 지원한다
- 개념 데이터 모델은 추상적이기 때문에 상위 문제에 대한 구조화가 상대적으로 쉽고 사용자와 개발자가 시스템 기능에 대해 논의할 수 있는 기반을 형성
- 현 시스템이 어떻게 변형되어야 하는가를 이해하는데 유용하다
- 일반적으로 매우 간단하게 고립된(Stand Alone) 시스템도 추상적 모델링 통해서 보다 쉽게 표현 및 설명이 된다.