본 게시글은 'SQL 전문가 가이드' 의 내용을 정리한 것입니다.
https://dataonair.or.kr/db-tech-reference/d-guide/sql/
1. 데이터 모델링의 이해
1. 데이터 모델의 이해
(1) 모델링의 이해
- 모델링의 정의
- 모델 : 모형, 축소형의 의미로 사람이 살아가면서 나타날 수 있는 다양한 현상에 대해 일정한 표기법에 의해 표현해놓은 모형이라고 할 수 있음
- 모델링에 대한 다양한 정의
- 가설적 또는 일정 양식에 맞춘 표현
- 복잡한 현실세계를 단순화시켜 표현하는 것
- 사물 또는 사건에 관한 양상(Aspect)이나 관점(Perspective)을 연관된 사람이나 그룹을 위하여 명확하게 하는 것
- 현실 세계의 추상화된 반영
- 모델링의 특징
- 추상화(모형화, 가설적)는 현실세계를 일정한 형식에 맞추어 표현을 한다는 의미로 정의
- 단순화는 복잡한 현실세계를 약속된 규약에 의해 제한된 표기법이나 언어로 표현하여 쉽게 이해할 수 있도록 하는 개념
- 명확화는 누구나 이해하기 쉽게 하기 위해 대상에 대한 애매모호함을 제거하고 정확하게 현상을 기술하는 것
- 정리하자면 모델링은 '현실세계를 추상화, 단순화, 명확화하기 위해 일정한 표기법에 의해 표현하는 기법'
- 모델링의 세 가지 관점
- 모델링 = 데이터 관점(Data, What) + 프로세스 관점(Process, How), 상관 관점(Data vs Process)
- 데이터 관점 : 업무가 어떤 데이터와 관련이 있는지 또는 데이터 간의 관계는 무엇인지에 대해 모델링하는 방법 (What, Data)
- 프로세스 관점 : 업무가 실제하고 있는 일은 무엇인지 또는 무엇을 해야 하는지를 모델링하는 방법 (How, Process)
- 데이터와 프로세스의 상관 관점 : 업무가 처리하는 일의 방법에 따라 데이터는 어떻게 영향을 받고 있는지 모델링하는 방법 (Interaction)
(2) 데이터 모델의 기본 개념의 이해
- 데이터 모델링의 정의
- 정보 시스템을 구축하기 위한 데이터 관점의 업무 분석 기법
- 현실 세계의 데이터(What) 에 대해 약속된 표기법에 의해 표현하는 과정
- 데이터베이스를 구축하기 위한 분석 / 설계의 과정
- 데이터 모델이 제공하는 기능
- 업무분석을 하는 과점에서 데이터 모델이 제공하는 기능은 아래와 같음
- 시스템을 현재 또는 원하는 모습으로 가시화하도록 도와줌
- 시스템의 구조와 행동 명세화 가능
- 시스템을 구축하는 구조화된 틀 제공
- 시스템을 구축하는 과정에서 결정한 것을 문서화
- 다양한 영역에 집중하기 위해 다른 영역의 세부 사항은 숨기는 다양한 관점을 제공
- 특정 목표에 따라 구체화된 상세 수준의 표현 방법을 제공
(3) 데이터 모델링의 중요성 및 유의점
- 데이터 모델링의 중요성 -> 파급효과, 복잡한 정보 요구사항의 간결한 표현, 데이터 품질로 정리 가능
- 파급효과(Leverage)
- 시스템 구축 과정에서 데이터 모델의 변경은 전체 시스템 구축 프로젝트에서 큰 위험요소가 될 수 있음. 따라서 데이터 설계가 시스템 구축 작업 중에서 아주 중요하다고 할 수 있음
- 복잡한 정보 요구사항의 간결한 표현(Conciseness)
- 데이터 모델은 구축할 시스템의 정보 요구사항과 한계를 가장 명확하고 간결하게 표현할 수 있음. 시스템을 구축하는 많은 관련자들이 설계자의 생각대로 정보 요구 사항을 이해하고 이를 운용할 수 있는 애플리케이션을 개발하여 데이터 정합성을 유지하도록 함
- 데이터 품질(Data Quality)
- 데이터 품질의 문제는 데이터 구조가 설계되고 초기에 데이터가 조금 쌓일 때에는 인지하지 못하는 경우가 대부분이며 데이터 구조의 문제로 야기되는 경우가 많음. 따라서 다음에 대해 유의를 하며 데이터 모델링을 해야 함
- 중복 데이터 모델은 같은 데이터 모델을 사용하는 사람, 시간, 장소를 파악하는데 도움을 주는데 DB가 여러 장소에 같은 정보를 저장하는 오류를 범하지 않도록 해야 함
- 비유연성 데이터 모델의 설계에 따라 사소한 업무 변화에도 데이터 모델이 수시로 변경되어 유지보수의 어려움을 가중시킬 수 있음. 따라서 데이터의 정의를 데이터의 사용 프로세스와 분리하는 것이 필요 (결합도를 약하게)
- 비일관성 데이터의 중복이 없더라도 비일관성은 발생하므로 데이터와 데이터 간 상호 연관 관계에 대해 명확한 정의를 하여 이러한 위험을 사전에 예방하도록 해야 함
(4) 데이터 모델링의 3단계 진행

- 개념적 데이터 모델링(Conceptual Data Modeling)
- 추상화 수준이 높고 업무 중심적이고 포괄적인 수준의 모델링을 진행
- 전사적 데이터 모델링, EA 수립 시 많이 이용
- 논리적 데이터 모델링(Logical Data Modeling)
- 개념적 모델링을 통한 엔티티 중심의 상위 수준의 데이터 모델이 완성될 경우 업무의 구체적인 모습과 흐름에 따른 구체화된 업무 중심의 데이터 모델을 만들어냄
- 시스템으로 구축하고자 하는 업무에 대해 Key, 속성, 관계 등을 정확하게 표현, 재사용성이 높음
- 물리적 데이터 모델링(Physical Data Modeling)
- 논리적 데이터 모델링 이후 DB의 저장 구조에 따른 테이블 스페이스 등을 고려한 모델링
- 실제로 DB에 이식할 수 있도록 성능, 저장 등 물리적 성격을 고려하여 설계
(5) 프로젝트 생명주기(Life Cycle)에서 데이터 모델링

(6) 데이터 모델링에서 데이터 독립성의 이해
- 데이터 독립성의 필요성
- 유지 보수 비용 증가
- 데이터 복잡도 증가
- 데이터 중복성 증가
- 요구사항 대응 저하
- 데이터 독립성 확보 시 각 View의 독립성을 유지, 계층별 View에 영향을 주지 않고 변경이 가능. 단계별 Schema에 따라 DDL과 DML이 다름을 제공
- 데이터 독립성을 이해하기 위해서는 3단계로 표현된 ANSI 표준 모델을 살펴보면 되며, 특히 3단계인 구조, 독립성, 사상 3가지를 이해하면 됨
- 데이터베이스 3단계 구조

- 데이터 독립성 요소

- 두 영역의 데이터 독립성

- 사상 (Mapping)

(7) 데이터 모델링의 중요한 세 가지 개념
- 데이터 모델링의 세 가지 요소
- 업무가 관여하는 어떤 것 (Things)
- 어떤 것이 가지는 성격 (Attributes)
- 업무가 관여하는 어떤 것 간의 관계 (Relationships)
- 단수와 집합(복수)의 명명
(8) 데이터 모델링의 이해 관계자
- 이해 관계자의 데이터 모델링 중요성 인식
- 실전 프로젝트에서는 DBA가 데이터 모델링을 전적으로 하는 경우는 거의 없고 오히려 응용 시스템 개발자가 데이터 모델링도 같이 하게 됨
- 데이터 모델링이 단순히 데이터베이스를 설계한다는 측면보다는 업무를 이해, 분석, 표현하는 것이 중요하고 표현된 내용을 바탕으로 프로젝트 관련자와 의사소통하고 업무를 분석, 설계하는 것이 더 중요하기 때문

- 데이터 모델링의 이해 관계자
(9) 데이터 모델의 표기법인 ERD의 이해
- 데이터 모델의 표기법
- 본 가이드에서는 범용적인 Information Engineering (IE) 표기법, 바커 표기법을 모두 적용

- ERD (Entity Relationship Diagram) 표기법을 이용하여 모델링하는 방법
- ERD 작업 순서

- 엔티티 배치 및 ERD 관계식서에 따라 관계 설정 (PK로 속성이 상속되는 식별자 관계 설정)

- 연결된 관계에 관계 이름을 부여

- 관계 차수와 선택성 표시 관계에 대한 이름 모두 지정 시 관계 차수(Cardinality)를 표현
(10) 좋은 데이터 모델의 요소
- 완전성 (Completeness)
- 업무에서 필요로 하는 모든 데이터가 데이터 모델에 정의되어 있어야 함
- 중복 배제 (Non-Redundancy)
- 하나의 데이터베이스 내에 동일한 사실은 반드시 한 번만 기록해야 함
- 업무 규칙 (Business Rules)
- 데이터 모델링 과정에서 도출되고 규명되는 수많은 업무 규칙을 데이터 모델에 표현하고 이를 해당 데이터 모델을 활용하는 모든 사용자가 공유할 수 있도록 제공하는 것이 중요
- 데이터 재사용 (Data Reusability)
- 데이터의 재사용성을 향상시키기 위해 데이터의 통합성과 독립성에 대해 충분히 고려해야 함
- 의사소통 (Communication)
- 대상으로 하는 업무를 데이터 관점에서 분석하고 이를 설계하여 나오는 최종 산출물이 데이터 모델이며 이 과정에서 도출되는 업무 규칙들을 통해 설계자 - 관리자 간 의사소통의 도구로서의 역할을 하게 됨
- 통합성 (Integration)
- 동일한 데이터는 조직의 전체에서 한 번만 정의되고 이를 여러 다른 영역에서 참조, 활용하는 것이 좋음