데이터 모델링
IT 위키
더 많은 작업
- Data Modeling
- 현실 세계의 사물, 업무 등을 추상화하여 데이터베이스의 데이터로 표현하기 위한 모델링 과정
데이터 모델링은 업무에서 다루는 정보를 분석해 일정한 표기법으로 데이터 모델을 만드는 과정이다. 정보시스템을 구축하기 위한 분석·설계 과정이면서, 업무 자체를 설명하고 분석하는 도구이기도 하다. 결과물인 데이터 모델은 ER 다이어그램 같은 그림과 엔터티·속성·관계 정의서로 표현된다.
| 특징 | 설명 |
|---|---|
| 추상화(Abstraction) | 현실 세계를 일정한 형식에 맞춰 표현한다. 다양한 현상에서 공통 성질을 뽑아 하나의 개념(엔터티, 속성 등)으로 묶는다. |
| 단순화(Simplification) | 복잡한 현실 세계를 약속된 규약과 제한된 표기법·언어로 쉽게 이해할 수 있게 표현한다. |
| 명확화(Clarity) | 누구나 이해하기 쉽도록 대상의 애매함을 없애고 정확하게 현상을 기술한다. |
- 데이터 모델은 업무 담당자, 설계자, 개발자 사이의 의사소통 수단이 된다. 시스템을 만들기 전에 업무 규칙을 데이터 구조로 검증할 수 있어, 구현 후 구조를 고치는 비용을 줄인다.
| 관점 | 질문 | 내용 |
|---|---|---|
| 데이터 관점 | What | 업무가 어떤 데이터와 관련 있는지, 데이터 사이의 관계는 무엇인지 모델링한다. |
| 프로세스 관점 | How | 업무가 실제로 무엇을 어떻게 처리하는지, 또는 처리해야 하는지 모델링한다. |
| 데이터와 프로세스의 상관 관점 | Interaction | 업무 처리 방법에 따라 데이터가 어떤 영향을 받는지 모델링한다(예: CRUD 매트릭스). |
| 단계 | 설명 | 산출물 |
|---|---|---|
| 요구사항 정의 | 목표 기능을 위한 데이터적 요구사항 정의 및 분석 | 요구사항 명세서 |
| 개념 모델링 | 핵심 엔티티 도출 및 관계를 개념적으로 정의 | 개념 ERD |
| 논리 모델링 | 데이터 구조, 연산, 제약조건을 정확하게 표현 | 상세 ERD, 테이블 정의서 |
| 물리 모델링 | 구현할 DBMS를 기준으로 스키마 설계 | DDL Query |
| 데이터베이스 구현 | 실제 테이블을 생성하고 스키마 구현 | 데이터베이스 |
업무 담당자 면담, 기존 문서와 화면·보고서 분석을 통해 시스템이 관리해야 할 데이터와 업무 규칙을 정리한다. 이후 단계에서 도출하는 엔터티와 속성은 모두 이 요구사항에 근거해야 한다.
- 추상화 수준이 가장 높은 모델링으로, 업무 중심적이고 포괄적인 수준에서 진행한다.
- 전사적 관점에서 핵심 엔터티와 그 사이의 관계를 도출하고 개념 ERD로 표현한다.
- 세부 속성이나 데이터 타입은 아직 정하지 않는다.
레코드 집중의 분석 및 설계
- 논리 모델을 실제 DBMS에 맞게 테이블, 칼럼, 데이터 타입, 인덱스, 파티션 등으로 구체화한다.
- 성능, 저장 공간, 보안, 가용성을 고려하며, 필요하면 반정규화를 적용한다.
물리 모델에서 만든 DDL로 실제 테이블, 제약 조건, 인덱스 등을 생성하고, 초기 데이터를 적재해 검증한다.
| 구분 | 개념 데이터 모델링 | 논리 데이터 모델링 | 물리 데이터 모델링 |
|---|---|---|---|
| 추상화 수준 | 높음 | 중간 | 낮음(구체적) |
| 주요 내용 | 핵심 엔터티와 관계 도출 | 엔터티·속성·관계·식별자를 상세히 정의 | 테이블·칼럼·데이터 타입·인덱스 등 저장 구조 정의 |
| DBMS 종속성 | 없음 | 없음 | 있음 |
| 정규화·반정규화 | - | 정규화 수행 | 성능을 위해 반정규화 검토 |
| 주요 산출물 | 개념 ERD | 논리 ERD, 엔터티·속성 정의서 | 물리 ERD, 테이블 정의서, DDL |
- 데이터 모델 문서의 '논리적 데이터 모델'(관계·계층·네트워크 모델로 구분)은 데이터 모델의 종류를 말하는 것이고, 여기서의 논리 데이터 모델링은 설계 단계를 말한다. SQLD는 관계형 모델을 전제로 설계 단계를 묻는다.
| 유의점 | 설명 |
|---|---|
| 중복(Duplication) | 같은 정보를 여러 곳에 저장하지 않도록 한다. 중복 데이터는 갱신할 때 불일치를 일으킨다. |
| 비유연성(Inflexibility) | 사소한 업무 변화에도 모델을 크게 고쳐야 하는 구조가 되지 않도록 한다. 데이터 정의와 데이터를 사용하는 프로세스를 분리하면 유연성이 높아진다. |
| 비일관성(Inconsistency) | 중복이 없더라도 데이터 사이의 상호 연관 관계를 명확히 정의하지 않으면, 한 데이터를 바꿀 때 관련 데이터를 함께 바꾸지 못해 모순이 생길 수 있다. |
| 요소 | 설명 |
|---|---|
| 완전성(Completeness) | 업무에 필요한 데이터가 모두 정의되어 있어야 한다. |
| 중복 배제(Non-Redundancy) | 하나의 데이터베이스 안에서 같은 사실은 한 번만 기록한다. |
| 업무 규칙(Business Rules) | 업무 규칙을 데이터 모델에 표현해, 모든 사용자가 같은 규칙을 공유하고 따르게 한다. |
| 데이터 재사용(Data Reusability) | 특정 업무에 묶이지 않고 통합된 형태로 설계해 여러 시스템이 데이터를 다시 쓸 수 있게 한다. |
| 의사소통(Communication) | 데이터 모델이 업무 규칙과 데이터 구조를 관계자들에게 정확히 전달할 수 있어야 한다. |
| 통합성(Integration) | 같은 데이터는 조직 전체에서 한 번만 정의하고, 여러 영역에서 참조해 쓴다. |
ANSI/SPARC가 제안한 구조로, 데이터베이스를 사용자 관점과 저장 관점으로 분리해 데이터 독립성을 확보하려는 것이다. 각 스키마의 상세는 데이터베이스 스키마 문서를 참고한다.
| 스키마 | 관점 | 설명 |
|---|---|---|
| 외부 스키마 | 사용자 관점 | 개별 사용자나 응용 프로그램이 보는 데이터베이스의 일부. 여러 개가 존재할 수 있으며, 뷰가 대표적이다. |
| 개념 스키마 | 통합 관점 | 모든 사용자 관점을 통합한 전체 데이터베이스의 논리 구조. 엔터티, 관계, 제약 조건을 정의하며 데이터베이스마다 하나다. |
| 내부 스키마 | 물리적 저장 관점 | 데이터가 실제로 저장되는 방식. 레코드 구조, 인덱스, 저장 장치상의 배치 등을 정의한다. |
| 데이터 독립성 | 의미 |
|---|---|
| 논리적 데이터 독립성 | 개념 스키마가 바뀌어도 외부 스키마(응용 프로그램)는 영향을 받지 않는다. |
| 물리적 데이터 독립성 | 내부 스키마(저장 구조)가 바뀌어도 개념 스키마와 외부 스키마는 영향을 받지 않는다. |
- 두 스키마 사이를 연결하는 것을 사상(Mapping)이라 한다. 외부/개념 사상이 논리적 독립성을, 개념/내부 사상이 물리적 독립성을 보장한다.
| 표기법 | 특징 |
|---|---|
| Chen 표기법 | 1976년 피터 첸이 E-R 모델과 함께 제안했다. 엔터티는 사각형, 관계는 마름모, 속성은 타원으로 그린다. 개념 모델과 교육용으로 많이 쓴다. |
| IE(Information Engineering) 표기법 | 관계의 '다(Many)' 쪽을 까마귀발(Crow's Foot) 모양으로 그린다. 선 끝의 원(○)은 선택 참여, 막대(|)는 필수 참여를 뜻한다. 식별 관계는 실선, 비식별 관계는 점선으로 그린다. |
| Barker 표기법 | 리처드 바커(Richard Barker)의 CASE*Method에서 정리한 표기법으로, 오라클 설계 도구에서 쓰였다. 관계선의 실선 부분은 필수, 점선 부분은 선택 참여를 뜻하며, 다(Many) 쪽은 까마귀발로 그린다. |
- SQLD에서는 주로 IE 표기법과 Barker 표기법으로 그린 ERD를 읽는 문제가 나온다. 관계 차수와 참여도는 데이터베이스 카디널리티, 데이터베이스 관계 유형 참고.
- 데이터 모델링의 특징(추상화·단순화·명확화)과 세 가지 관점(데이터 What, 프로세스 How, 상관 Interaction)
- 개념 → 논리 → 물리 순서와 각 단계의 특징. 정규화는 논리 모델링, 반정규화는 물리 모델링에서 한다. 추상화 수준은 개념이 가장 높다.
- 유의점 세 가지(중복, 비유연성, 비일관성)와 좋은 데이터 모델의 요소
- 3단계 스키마에서 외부·개념·내부 스키마의 관점, 논리적·물리적 독립성이 각각 어느 스키마 사이의 독립인지
- Chen, P. P. (1976). "The Entity-Relationship Model—Toward a Unified View of Data". ACM Transactions on Database Systems, 1(1), 9–36. doi:10.1145/320434.320440
- Codd, E. F. (1970). "A Relational Model of Data for Large Shared Data Banks". Communications of the ACM, 13(6), 377–387. doi:10.1145/362384.362685
- 한국데이터산업진흥원 – SQL 개발자(SQLD) 시험 과목