데이터 모델링은 소프트웨어 개발에서 매우 중요한 단계로, 현실 세계의 데이터를 컴퓨터 시스템에 효과적으로 저장, 관리, 처리할 수 있도록 논리적 구조로 변환하는 과정을 의미한다.
현실 세계으 개체, 속성, 관계를 분석하고 이를 데이터베이스에 구현 가능한 구조로 설계하는 과정이다. 데이터 모델링은 크게 세 단계로 나뉜다.
| 단계 | 설명 | 모델링 산출물 |
|---|---|---|
| 개념적 모델링 (Conceptual) | 비즈니스 관점에서 핵심 개체 및 관계 정의 | ERD(Entity Relationship Diagram) |
| 논리적 모델링 (Logical) | DBMS 독립적 구조 설계, 정규화 적용 | 속성 상세화, 키 정의, 정규화 |
| 물리적 모델링 (Physical) | 실제 DBMS에 맞게 테이블 구조 정의 | 테이블/컬럼 정의, 인덱스, 제약조건 등 |
user.username, user.emailuser와 order는 1:N 관계이다.개체를 유일하게 식별하는 속성
다른 테이블의 기본 키를 참조하는 속성으로 관계를 표현한다.
정규화는 데이터 중복을 제거하고 무결성을 높이기 위한 데이터 구조 최적화 기법이다.
| 단계 | 목적 | 특징 |
|---|---|---|
| 1NF | 원자값만 저장 | 컬럼에 복합값/반복그룹 제거 |
| 2NF | 부분적 종속 제거 | 기본키 전체에 종속 |
| 3NF | 이행적 종속 제거 | 비-키가 비-키에 종속 안 됨 |
너무 과도한 정규화는 JOIN을 많이 발생시켜 성능 저하를 유발할 수 있다. 실무에서는 비정규화를 통해 성능을 고려한 설계를 하기도 한다.
ERD는 데이터베이스 구조를 시각적으로 표현한 다이어그램이다. 보통 아래와 같은 정보를 포함한다.
데이터 모델링은 아래의 조건들을 고려하며 설계해야 한다.