데이터 모델링의 개념
데이터 모델리은 복잡한 데이터를 단순하고 이해하기 쉬운 구조로 표현하는 과정이다. 데이터 모델링을 통해 복잡한 데이터를 저장, 관리 및 활용 할 수 있다. 업무에서 필요한 데이터를 구조화하고, 데이터베이스로 설계하기 위한 과정이다.
데이터 모델링의 목적
1. 업무를 데이터로 표현
현실세계의 개념을 데이터베이스 구조로 바꿈 (예: 고객이 주문한다 -> 고객, 주문 테이블로 표현)
2. 데이터 중복을 최소화 하고 일관성을 유지
정규화를 통해 효율적인 구조를 만듬
3. 데이터를 이해하고 공유
데이터 구조를 문서화하여 개발자, 기획자 분석가의 관점으로 데이터를 바라보고 공유
데이터 모델링의 특징
1. 추상화: 복잡한 현실 세계를 데이터 관점에서 핵심적인 요소만 선별해 표현하는 것
- 업무에 필요한 정보만 추려서 표현
- 예) "고객"이라는 개념에는 실제로 수많은 속성이 있지만 데이터 모델에서는 "고객 ID, 이름, 연락처, 주소" 등만 표현
- 즉 업무에 필요한 본질적인 데이터만 남기고 불필요한 세부 사항은 제거하는 단계
2. 단순화: 복잡한 현실 업무를 이해하기 쉽고 관리하기 쉬운 형태로 단순하게 구조화 하는 것
- 데이터간의 관계, 속성을 논리적으로 정리하여 복잡성을 줄임
- 복잡한 비즈니스 로직도 테이블 간 관계로 단순하게 표현
- 단순화를 통해 데이터베이스 설계 시 혼동을 줄이고 일관된 구조를 유지
3. 명확화: 데이터의 의미와 구조를 모호하지 않게 표현하며 누구나 같은 의미로 이해할 수 있도록 하는 것
- 엔터티, 속성, 관계를 정의 할 때 명확한 이름과 정의를 부여
- 예: 고객명인지 담당자 명인지를 정확히 구분
4. 데이터 모델링이 제대로 수행되지 않으면 중복성, 비유연성, 비일관성 등의 문제가 발생한다. 같은 데이터가 여러곳에 저장되어 비효율적(중복성)이거나, 데이터 모델이 변화에 대응하지 못하는 상황이 발생(비유연성)하거나, 동일한 데이터가 다르게 저장되거나 표현되어 신뢰성이 떨어진다.
데이터 모델링의 3가지 관점
1. 데이터의 구조적 관점
- 데이터가 어떤 구조로 존재하는지 보는 관점
- 현실 세계의 객체를 엔터티로 표현
- 속성과 관계를 정의
- 정규화를 통해 데이터 중복 제거 및 일관성 유지
- ERD를 통해 시각화
2. 데이터의 의미적 관점
- 데이터가 무엇을 의미하는지, 즉 업무규칙과 업무 개념이 무엇인지 보는 관점
- 고객은 하나 이상의 주문을 할 수 있다와 같은 업무규칙을 데이터 구조에 반영
- 도메인, 제약조건 등을 통해 데이터의 의미를 면확히 함
3. 상관관점
- 데이터와 프로세스가 어떻게 상호작용하는가에 집중하는 관점
- 데이터와 프로세스를 따로 보는게 아니라 서로 어떻게 영향을 미치는지 함께 분석
- 모델의 품질을 검증하는데 매우 중요
- CRUD 작성이 가장 대표적인 활동
데이터 모델링의 3단계
1. 개념적 모델링
- 전사적, 추상적, 핵심 비즈니스 관점
- 복잡한 업무요구사항을 핵심적인 데이터 집합과 그 관계로만 파악
- 추상화 수준이 가장 높음. 기술적인 세부사항은 완전 배제
- 업무 담당자와 개발자가 소통하기 위한 도구로 활용됨
- 여기서 도출된 핵심 엔터티는 업무의 근간이 됨
- 주요산출물: 핵심 엔터티와 주요 관계를 중심으로 한 고수준의 ERD
2. 논리적 데이터 모델링
- 비즈니스 규칙의 구체와, 데이터의 상세구조
- 개념적 모델을 바탕으로 데이터의 모든 세부사항(속성), 관계, 식별자를 구체적으로 정의
- DBMS에 독립적(Oracle, MySQL 등 데이터베이스에 상관없이 공통으로 이해할 수 있는 모델)
- 정규화를 수행하여 데이터의 중복을 제거하고 일관성을 확보
- 모든 엔터티, 모든 속성, 주 식별자, 외래 식별자 등을 상세하게 정의
- 주요산출물: 상세한 ERD, 엔터티 정의서, 테이블 정의서
3. 물리적 데이터 모델링
- 실제 기능 구현, 시스템 관점
- 논리적 모델을 특정 DBMS의 특성에 맞게 변환하여 실제 데이터베이스에 생성할 수 있는 스키마를 만드는 든계
- DBMS에 종속적
- 논리 모델 엔터티는 테이블로, 속성은 칼럼으로 변환됨
- DBMS에 맞는 구체적인 타입을 정의함 (varchar(100), number(10,2), int 등)
- 주요산출물: 실제 DB 생성을 위한 물리적 ERD