데이터 모델링 기초 완벽 정리
모델링 정의·3단계·3요소, 좋은 모델의 조건, 성능 모델링, 분산 DB까지 한눈에 정리
1. 데이터 모델링이란?
정의
현실 세계의 업무 데이터를 약속된 표기법에 의해 표현하는 과정입니다. 정보 시스템을 구축하기 위해 어떤 데이터가 존재하는지, 업무에 필요한 정보가 무엇인지를 분석하는 방법입니다.
데이터 모델링의 3가지 관점
| 관점 | 설명 | 예시 |
|---|---|---|
| 데이터 관점 | 업무가 어떤 데이터와 관련이 있는지 | 고객, 주문, 상품 정보 |
| 프로세스 관점 | 업무가 실제로 어떻게 처리되는지 | 주문 접수, 결제, 배송 처리 |
| 데이터와 프로세스의 상관 관점 | 데이터와 프로세스가 어떤 영향을 주고받는지 | 주문 시 재고 차감, 결제 시 잔액 변경 |
데이터 모델링의 중요성
- • 파급효과(Leverage) — 데이터 모델 변경은 시스템 전체에 영향 (가장 큰 이유)
- • 복잡한 정보 요구사항의 간결한 표현 — 구조화된 형태로 정보를 표현
- • 데이터 품질 — 잘못된 모델은 잘못된 데이터를 양산
2. 모델링 3단계
개념적 → 논리적 → 물리적
| 단계 | 목적 | 산출물 | 특징 |
|---|---|---|---|
| 개념적 모델링 | 업무 전체의 큰 그림 파악 | ERD (개념 ERD) | 추상적, 업무 중심, 엔터티-관계 도출 |
| 논리적 모델링 | 구체적인 데이터 구조 설계 | 논리 ERD, 속성 정의서 | 정규화, 키 결정, 참조무결성, DBMS 독립적 |
| 물리적 모델링 | 실제 DB에 구현할 설계 | 물리 ERD, DDL 스크립트 | 성능, 저장 구조, 인덱스, DBMS 종속적 |
각 단계 핵심 키워드
- 개념적 — 추상화 수준 가장 높음, 업무 영역별 핵심 엔터티와 관계 도출
- 논리적 — 정규화 수행, KEY(PK/FK) 결정, 속성·도메인 정의, M:M 관계 해소
- 물리적 — 테이블·컬럼·데이터타입 결정, 반정규화, 인덱스, 파티션 설계
3. 데이터 모델 3요소
엔터티·속성·관계
| 요소 | 정의 | 예시 |
|---|---|---|
| 엔터티 (Entity) | 업무에서 관리해야 할 데이터 집합 | 고객, 주문, 상품 |
| 속성 (Attribute) | 엔터티를 구성하는 개별 정보 항목 | 고객명, 전화번호, 주소 |
| 관계 (Relationship) | 엔터티 간의 연관성 | 고객이 주문을 한다 |
엔터티의 특징과 분류
엔터티는 다음 조건을 모두 만족해야 합니다:
- • 업무에서 필요로 하고 관리하고자 하는 정보
- • 유일한 식별자(UID)에 의해 식별 가능
- • 영속적으로 존재하는 인스턴스의 집합 (2개 이상)
- • 반드시 속성을 가짐
- • 다른 엔터티와 최소 1개 이상의 관계
| 분류 기준 | 유형 | 설명 |
|---|---|---|
| 발생 시점 | 기본 엔터티 | 독립적으로 존재 (고객, 상품, 부서) |
| 중심 엔터티 | 기본 엔터티로부터 발생 (주문, 계약) | |
| 행위 엔터티 | 2개 이상 엔터티로부터 발생 (주문상세, 이력) | |
| 유무형 | 유형 엔터티 | 물리적 형태 있음 (사원, 물품) |
| 무형 엔터티 | 개념적 (보험종류, 조직) |
속성의 분류
| 분류 | 유형 | 설명 |
|---|---|---|
| 특성에 따라 | 기본 속성 | 업무에서 직접 추출 (이름, 전화번호) |
| 설계 속성 | 설계 과정에서 만듦 (코드, 일련번호) | |
| 파생 속성 | 다른 속성으로부터 계산 (합계, 평균) | |
| 엔터티 구성 | PK 속성 | 엔터티를 고유하게 식별 |
| FK 속성 | 다른 엔터티와의 관계에서 포함된 속성 | |
| 일반 속성 | PK, FK가 아닌 나머지 속성 |
관계의 분류
| 구분 | 설명 |
|---|---|
| 존재적 관계 | 엔터티의 존재 자체로 연관 (부서-사원: 사원은 부서에 소속) |
| 행위적 관계 | 특정 행위에 의해 연관 (고객-주문: 고객이 주문을 한다) |
| 식별 관계 | 부모의 PK가 자식의 PK에 포함 (실선으로 표시) |
| 비식별 관계 | 부모의 PK가 자식의 일반 속성(FK)으로 전이 (점선으로 표시) |
4. 좋은 데이터 모델의 조건
4가지 핵심 조건
| 조건 | 설명 |
|---|---|
| 완전성 (Completeness) | 업무에 필요한 모든 데이터가 빠짐없이 모델에 정의되어야 함 |
| 중복 배제 (Non-Redundancy) | 동일한 사실은 한 곳에만 저장 (중복 시 불일치 발생) |
| 업무 규칙 (Business Rules) | 업무 규칙이 데이터 모델에 반영되어야 함 (제약조건) |
| 데이터 재활용 (Reusability) | 통합적 관점에서 설계하여 다양한 업무에서 재활용 가능 |
추가 품질 요소
- 일관성 (Consistency) — 데이터 간의 상호 연관 관계가 모순 없이 정의
- 유연성 (Flexibility) — 업무 변화에 최소한의 모델 변경으로 대응 가능 (비유연성X)
5. 식별자 (Identifier)
식별자 분류
| 기준 | 유형 | 설명 |
|---|---|---|
| 대표성 | 주식별자 (PK) | 엔터티를 대표, NOT NULL, 유일성 |
| 보조식별자 | 유일성은 있지만 대표성 없음 (Unique Key) | |
| 생성 여부 | 내부식별자 | 자체적으로 생성 (주민번호, 사번) |
| 외부식별자 (FK) | 다른 엔터티로부터 받아온 식별자 | |
| 속성 수 | 단일식별자 | 하나의 속성으로 식별 |
| 복합식별자 | 여러 속성을 조합하여 식별 | |
| 대체 여부 | 본질식별자 | 업무에 의해 자연스럽게 생긴 식별자 |
| 인조식별자 | 인위적으로 만든 대체 식별자 (시퀀스 등) |
주식별자의 특징
- • 유일성 — 각 인스턴스를 유일하게 식별
- • 최소성 — 최소한의 속성으로 구성
- • 불변성 — 값이 자주 변하지 않아야 함
- • 존재성 — NOT NULL (반드시 값이 존재)
6. 성능 데이터 모델링
정의
데이터베이스의 성능 향상을 목적으로 데이터 모델을 설계하는 것입니다. 설계 단계부터 성능을 고려하면 나중에 튜닝하는 것보다 비용이 훨씬 적게 듭니다.
수행 절차
- 1단계. 정규화를 정확하게 수행 — 데이터 중복 제거로 조회/입력/수정/삭제 성능 향상
- 2단계. 데이터베이스 용량 산정 — 예상 데이터 양을 파악하여 설계에 반영
- 3단계. 데이터베이스에 발생하는 트랜잭션 유형 파악 — CRUD 패턴 분석
- 4단계. 용량과 트랜잭션에 따라 반정규화 수행 — 조회 성능이 중요한 경우 의도적 중복
- 5단계. 이력 모델 조정, PK/FK 조정, 슈퍼/서브타입 조정
반정규화 유형
| 유형 | 설명 |
|---|---|
| 테이블 병합 | 1:1 관계나 슈퍼/서브타입을 하나로 합침 |
| 테이블 분할 | 수직(컬럼 분리) 또는 수평(행 분리) 분할 |
| 중복 테이블 추가 | 집계 테이블, 진행 테이블, 특정 부분만 복사 |
| 중복 컬럼 추가 | JOIN 없이 조회하기 위해 다른 테이블 컬럼을 추가 |
| 파생 컬럼 추가 | 계산값을 미리 저장 (합계, 건수 등) |
7. 분산 데이터베이스
정의
여러 지역에 분산된 데이터베이스를 하나의 가상 시스템으로 사용할 수 있도록 하는 시스템입니다. 사용자는 데이터가 어디에 저장되어 있는지 알 필요가 없습니다.
분산 데이터베이스의 투명성
| 투명성 | 설명 |
|---|---|
| 분할 투명성 | 하나의 논리적 릴레이션이 여러 단편으로 분할되어도 사용자는 모름 |
| 위치 투명성 | 데이터의 물리적 위치를 알 필요 없음 |
| 지역사상 투명성 | 각 지역의 DBMS에 맞게 데이터 매핑이 자동 수행 |
| 중복 투명성 | 데이터가 중복 저장되어도 사용자는 하나로 인식 |
| 병행 투명성 | 동시에 여러 트랜잭션이 수행되어도 결과 일관성 보장 |
| 장애 투명성 | 일부 장애가 발생해도 트랜잭션 정상 처리 |
장단점
- 장점 — 지역 자치성, 신뢰성/가용성 향상, 빠른 응답 속도, 용량 확장 용이
- 단점 — 설계/관리 복잡, 데이터 무결성 관리 어려움, 비용 증가, 보안 관리 복잡
8. 시험 포인트
SQLD 빈출 핵심 정리
- 1. 모델링 3단계: 개념 → 논리 → 물리 — 추상화 수준 높음 → 낮음 순서, 논리적 모델링에서 정규화 수행
- 2. 엔터티는 인스턴스 2개 이상 필수 — 1개만 있으면 엔터티로 부적절
- 3. 속성 분류: 기본·설계·파생 — 파생 속성은 다른 속성으로부터 계산된 값
- 4. 식별 관계(실선) vs 비식별 관계(점선) — 부모 PK가 자식 PK에 포함되면 식별, 일반 속성이면 비식별
- 5. 주식별자 4가지 특징: 유일성·최소성·불변성·존재성 — NOT NULL + UNIQUE
- 6. 좋은 모델의 조건: 완전성·중복배제·업무규칙·재활용 — 완전성이 가장 중요
- 7. 성능 모델링은 정규화부터 시작 — 정규화 → 용량 산정 → 트랜잭션 분석 → 반정규화
- 8. 반정규화는 조회 성능 향상 목적 — 중복을 허용하는 대신 JOIN 비용 절감
- 9. 분산 DB 6가지 투명성 암기 — 분할·위치·지역사상·중복·병행·장애 투명성
- 10. 엔터티 분류: 기본·중심·행위 (발생 시점 기준) — 기본(독립) → 중심(기본에서 파생) → 행위(2개 이상에서 파생)
개념을 확인했다면 문제로 실력을 검증해보세요