1. 데이터 모델링이란?
데이터 모델링이란 현실 세계의 어떤 사물이나 현상을 추상화(모형화)해 데이터 간 구조와 관계를 정의한 데이터 모델을 만드는 과정이다.
즉, 데이터를 어떤 구조로 저장하고, 데이터 간 관계를 어떻게 설정할지 등을 정의하는 일이다.
데이터 모델링을 거치면 약속된 형식의 데이터 모델이 만들어진다.
1.1. 데이터 모델링의 이점
데이터 모델링은 다음과 같은 6가지 주요 이점을 제공한다.
1) 비즈니스 요구사항 반영:
- 조직의 비즈니스 요구사항과 규칙을 정확히 반영한 데이터베이스 구축이 가능하다.
2) 의사소통 개선:
- 기술팀과 비즈니스팀 간의 의사소통을 원활하게 하며, 모든 이해관계자가 동일한 데이터 구조를 이해할 수 있게 한다.
3) 데이터 무결성 보장:
- 적절한 제약 조건과 관계 설정을 통해 데이터의 정확성과 일관성을 유지한다.
4) 성능 최적화:
- 효율적인 데이터 구조 설계로 쿼리 성능을 최적화하고 시스템 응답 시간을 개선한다.
5) 유연한 확장:
- 미래의 요구사항 변화에 대응할 수 있는 유연한 데이터 구조를 설계할 수 있다.
6) 비용 절감:
- 효율적인 데이터 관리로 스토리지 비용을 줄이고, 개발 및 유지보수 비용을 절감할 수 있다.
1.2. 데이터 모델링의 단계
데이터 모델링은 크게 3단계로 진행되며, 각 단계를 거쳐 최종 데이터베이스를 구현한다.

1) 개념적 데이터 모델링
개념적 데이터 모델링은 현실 세계를 구성하는 주요 개체(엔티티)와 그들 간의 관계를 정의하는 단계이다.
이 단계에서는 "무엇을 만들 것인가"에 초점을 맞춘다.
주요 활동:
- 요구사항 분석을 통한 핵심 엔티티 식별
- 엔티티 간 관계 분석 및 정의
- 비즈니스 규칙과 제약 조건 정의
개념적 모델링의 결과물은 일반적으로 ER 다이어그램(Entity-Relationship Diagram)의 형태로 표현된다.
2) 논리적 데이터 모델링
논리적 데이터 모델링은 개념적 데이터 모델링의 결과로 만들어진 데이터 모델의 세부 내용을 정의하는 단계이다.
이 단계에서는 "어떻게 만들 것인가"에 초점을 맞춘다.
주요 활동:
- 엔티티의 속성 정의
- 식별자(기본 키, 외래 키 등) 정의
- 관계 유형 및 카디널리티 상세 정의
- 정규화를 통한 데이터 중복 제거
- 데이터 무결성 규칙 상세화
논리적 데이터 모델링은 특정 DBMS에 종속되지 않는 범용적인 모델을 만드는 과정이다.
3) 물리적 데이터 모델링
물리적 데이터 모델링은 논리적 데이터 모델링의 결과로 만들어진 데이터 모델을 특정 DBMS에 맞게 최적화하는 단계이다.
이 단계에서는 "높은 성능과 적은 비용으로 어떻게 구현할 것인가"에 초점을 맞춘다.
주요 활동:
- 테이블, 컬럼, 키 등의 물리적 구조 정의
- 인덱스, 파티션 등의 성능 관련 구조 설계
- 데이터 타입 및 크기 최적화
- 저장 공간, 접근 경로 등 물리적 특성 고려
- 경우에 따라 역정규화(denormalization) 수행
물리적 데이터 모델링은 실제 데이터베이스 구현을 위한 구체적인 청사진을 제공한다.
2. 데이터 모델의 구성 요소
2.1. 엔티티 (Entity)
엔티티란 데이터베이스에서 관리하려는 핵심 대상으로, 실제로 존재하거나 개념적으로 중요한 것을 모형화한 것이다.
엔티티를 실제 데이터베이스로 구현한 것을 테이블 이라고 하며, 엔티티의 실제 데이터를 인스턴스라고 한다.
ex) 고객, 주문, 제품 등
2.2. 속성 (Attribute)
속성은 엔티티의 특성이나 정보를 나타내는 항목으로, 여러 속성이 모여 하나의 엔티티를 구성한다.
속성을 실제 데이터베이스에 구현하면 테이블의 칼럼(Column)이 된다.
ex) 고객 엔티티의 속성으로는 고객ID, 이름, 주소, 전화번호 등이 있을 수 있다.
2.3. 식별자 (Identifier)
식별자는 속성 중 특별한 속성으로, 엔티티의 각 인스턴스를 고유하게 식별하는 데 사용하는 속성 또는 속성의 조합이다. 식별자로 엔티티의 모든 인스턴스를 구분할 수 있다.
식별자의 조건:
- 유일성: 식별자값은 엔티티 내에서 유일해야 한다.
- 불변성: 한번 부여된 식별자값은 변경되지 않아야 한다.
- 존재성: 모든 인스턴스는 식별자값을 반드시 가져야 한다(NULL이 아님).
- 최소성: 식별자를 구성하는 속성의 수가 최소화되어야 한다.
주요 식별자 유형:
1) 기본 식별자(Primary Identifier):
- 엔티티 내 모든 인스턴스를 고유하게 식별하는 속성 또는 속성의 조합이다.
- 데이터베이스에서는 기본 키(Primary Key, PK)로 구현된다.
2) 대체 식별자(Alternate Identifier):
- 기본 식별자로 선택되지 않은 후보 식별자이다. 값이 존재하고 유일해야 한다.
- 데이터베이스에서는 대체 키(Alternate Key, AK) 또는 유니크 키(Unique Key)로 구현된다.
3) 외래 식별자(Foreign Identifier):
- 한 엔티티의 식별자가 다른 엔티티의 식별자를 참조해 관계를 만드는 식별자이다.
- 데이터베이스에서는 외래 키(Foreign Key, FK)로 구현된다.
2.4. 관계 (Relationship)
관계란 두 엔티티 간 연결된 방식을 나타내는 것이다.
관계를 설명할 때 카디널리티(Cardinality)라는 개념을 사용한다.
* 카디널리티: 엔티티의 한 인스턴스가 다른 엔티티의 몇 개의 인스턴스와 연결되는지를 나타낸다.
관계의 유형:
1) 일대일(1:1): 한 엔티티의 인스턴스가 다른 엔티티의 인스턴스와 최대 하나씩 연결된다.
ex) 한 사람은 하나의 주민등록번호만 가질 수 있다.
2) 일대다(1:N): 한 엔티티의 인스턴스가 다른 엔티티의 여러 인스턴스와 연결될 수 있다.
ex) 한 부서에는 여러 직원이 소속될 수 있다.
3) 다대다(N:M): 양쪽 엔티티의 인스턴스가 서로 여러 인스턴스와 연결될 수 있다.
ex) 한 학생은 여러 강의를 수강할 수 있고, 한 강의는 여러 학생이 수강할 수 있다.
3. 정규화 (Normalization)
정규화란 데이터 모델링할 때 데이터가 중복으로 저장되는 것을 최소화하고 데이터 무결성을 보장하기 위해 데이터를 구조화하는 작업이다.
정규화는 주로 논리적 데이터 모델링 단계에서 수행된다.
3.1. 정규화의 구분
1) 제1정규형 (1NF)
제1정규형은 모든 속성의 값이 원자값(더 이상 분해할 수 없는 값)이어야 한다는 조건을 만족해야 한다.
즉, 하나의 칼럼에 여러 값이 들어있거나 반복되는 그룹이 있으면 안된다.
ex)
- 비정규화 상태: 고객(고객ID, 이름, 전화번호[집전화, 휴대전화])
- 1NF 적용: 고객(고객ID, 이름, 집전화, 휴대전화)
2) 제2정규형 (2NF)
제2정규형은 제1정규형을 만족하고, 부분 함수적 종속성이 없어야 한다.
즉, 복합 기본 키의 일부에만 종속된 속성이 없어야 한다.
ex)
- 1NF 상태: 주문상세(주문ID, 제품ID, 제품명, 수량, 가격)
- 2NF 적용:
- 주문상세(주문ID, 제품ID, 수량, 가격)
- 제품(제품ID, 제품명)
3) 제3정규형 (3NF)
제3정규형은 제2정규형을 만족하고, 이행적 종속성이 없어야 한다.
즉, 기본 키가 아닌 속성이 다른 기본 키가 아닌 속성에 종속되면 안 된다.
ex)
- 2NF 상태: 직원(직원ID, 이름, 부서ID, 부서명)
- 3NF 적용:
- 직원(직원ID, 이름, 부서ID)
- 부서(부서ID, 부서명)

3.2. 추가 정규형
더 높은 수준의 정규형으로는 보이스-코드 정규형(BCNF), 제4정규형(4NF), 제5정규형(5NF) 등이 있지만, 실무에서는 주로 제3정규형까지만 적용하는 경우가 많다.
3.3. 역정규화 (Denormalization)
역정규화는 정규화된 데이터 모델에서 성능 향상을 위해 의도적으로 중복 데이터를 허용하는 기법이다.
주로 물리적 데이터 모델링 단계에서 수행되며, 읽기 작업이 많고 데이터 일관성보다 성능이 중요한 경우에 적용한다.
역정규화의 주요 기법:
- 테이블 병합
- 컬럼 복제
- 테이블 분할(수직/수평)
- 파생 컬럼 추가
- 요약 테이블 생성
'학습 > DB' 카테고리의 다른 글
9. 서브쿼리 (0) | 2025.03.14 |
---|---|
8. 그룹화, 정렬, 제한 (0) | 2025.03.06 |
7. 조인(JOIN) (0) | 2025.03.01 |
6. 관계와 제약조건 (0) | 2025.02.26 |
5. 자료형과 필터링 (1) | 2025.02.23 |