데이터베이스 설계에서 정규화와 성능을 함께 다루는 법
데이터베이스 설계의 요구사항 분석부터 정규화, 비정규화, 인덱스와 최신 환경별 설계 고려사항을 정리한다.
2026-08-14 · 최초 발행 2025-08-10
스키마는 시스템의 변경 비용을 결정한다
데이터베이스 설계는 사용자의 요구사항을 컴퓨터에 저장 가능한 구조로 바꾸는 과정이다. 중복을 줄이고 데이터 무결성을 보장하면서, 필요한 쿼리가 효율적으로 실행되고 시스템이 커져도 감당할 수 있는 구조를 만드는 일이 여기에 포함된다.
설계가 부실하면 성능 저하와 데이터 품질 문제, 유지보수 비용 증가가 뒤따른다. 한 금융회사는 초기 DB 설계가 충분하지 않아 거래량이 늘어난 뒤 쿼리 지연을 겪었고, 전면 재설계에 6개월과 수억 원의 추가 비용이 들었다.
요구에서 물리 구조까지 이어지는 설계 흐름
설계는 비즈니스 프로세스와 데이터 요구사항을 파악하는 데서 출발한다. 저장할 데이터의 유형과 볼륨, 사용 패턴을 수집하고 사용자 인터뷰와 기존 시스템 분석을 함께 진행한다.
그 다음 개체와 관계, 속성을 정리한 E-R 모델을 만든다. 예를 들어 주문 시스템에서는 고객, 주문, 주문 항목, 상품이 핵심 개체가 될 수 있다.
개념 모델은 관계형 스키마로 옮겨진다. 이 단계에서 테이블, 열, 키, 제약조건을 정의하고 정규화를 수행한다. 특정 DBMS에 매이지 않는 논리 설계의 범위다.
물리 설계에서는 사용할 DBMS에 맞춰 저장 구조와 접근 경로를 선택한다. 인덱스와 파티셔닝 전략, 데이터 타입과 크기도 이때 결정한다. 이후 DDL을 작성해 실행하고 초기 데이터를 적재한 뒤 성능을 시험하며, 필요한 경우 스키마를 조정한다.
정규화로 중복과 종속성을 분리한다
정규화는 데이터 중복을 줄이고 무결성을 높이기 위한 체계적인 설계 방법이다. 정규형이 높아질수록 데이터가 어떤 키와 속성에 의존하는지를 더 엄격하게 분리한다.
원자값을 유지하는 1NF
제1정규형은 모든 속성이 원자값을 가져야 하며 반복 그룹을 제거한다. 상품 목록처럼 여러 값을 한 칸에 넣은 주문 정보는 다음과 같이 분리할 수 있다.
비정규화된 형태:
| 주문ID | 고객명 | 상품목록 |
|---|---|---|
| 1001 | 홍길동 | 노트북, 마우스, 키보드 |
1NF 적용 후:
| 주문ID | 고객명 | 상품 |
|---|---|---|
| 1001 | 홍길동 | 노트북 |
| 1001 | 홍길동 | 마우스 |
| 1001 | 홍길동 | 키보드 |
부분 함수적 종속성을 없애는 2NF
제2정규형은 1NF를 만족하면서 기본키 일부에만 종속되는 속성을 분리한다.
1NF 상태의 주문 정보는 다음과 같다.
| 주문ID | 상품ID | 고객명 | 상품명 | 수량 |
|---|---|---|---|---|
| 1001 | P100 | 홍길동 | 노트북 | 1 |
| 1001 | P200 | 홍길동 | 마우스 | 2 |
이를 주문 테이블과 주문상세 테이블로 나누면 다음과 같다.
주문 테이블:
| 주문ID | 고객명 |
|---|---|
| 1001 | 홍길동 |
주문상세 테이블:
| 주문ID | 상품ID | 상품명 | 수량 |
|---|---|---|---|
| 1001 | P100 | 노트북 | 1 |
| 1001 | P200 | 마우스 | 2 |
이행적 종속성을 분리하는 3NF
제3정규형은 2NF를 만족하고, 기본키에 비종속적인 속성들 사이의 이행적 종속성을 제거한다.
2NF 상태의 주문상세 테이블에서 상품명과 가격은 상품ID에 종속된다.
| 주문ID | 상품ID | 상품명 | 가격 | 수량 |
|---|---|---|---|---|
| 1001 | P100 | 노트북 | 1,200,000 | 1 |
| 1001 | P200 | 마우스 | 30,000 | 2 |
3NF에서는 주문상세와 상품 정보를 분리한다.
주문상세 테이블:
| 주문ID | 상품ID | 수량 |
|---|---|---|
| 1001 | P100 | 1 |
| 1001 | P200 | 2 |
상품 테이블:
| 상품ID | 상품명 | 가격 |
|---|---|---|
| P100 | 노트북 | 1,200,000 |
| P200 | 마우스 | 30,000 |
BCNF는 3NF를 만족하면서 모든 결정자가 후보키인 상태를 말한다. 제4정규형은 다치 종속성을 제거하고, 제5정규형은 조인 종속성을 제거한다.
성능 요구가 정규화를 되돌릴 때
비정규화는 성능을 위해 정규화 원칙을 의도적으로 완화하는 기법이다. 읽기 작업이 압도적으로 많거나 복잡한 조인이 필요한 쿼리를 최적화해야 할 때, 또는 빠른 응답 시간이 필요한 경우에 검토할 수 있다.
테이블 통합, 중복 데이터 허용, 파생 데이터 추가, 수직·수평 테이블 분할이 대표적인 방법이다. 대신 데이터 무결성이 약해질 수 있고 갱신 비용과 운영 복잡성도 커진다. 따라서 성능 분석을 거쳐 필요할 때 물리 설계를 다시 조정하는 흐름이 필요하다.
인덱스는 조회 이득과 쓰기 비용을 맞춘다
인덱스는 데이터 검색 속도를 높이기 위한 구조다. 자주 조회되는 컬럼, 조인 컬럼, WHERE 절과 정렬에 반복적으로 쓰이는 컬럼을 우선 검토한다. 고유값 비율이 높은, 즉 선택도가 높은 컬럼은 인덱스 효과를 얻기 유리하다.
일반적인 목적에는 B-Tree 인덱스가 쓰이며, 낮은 선택도 컬럼에는 비트맵 인덱스, 동등 비교에는 해시 인덱스, 지리 데이터에는 공간 인덱스를 고려할 수 있다.
인덱스를 많이 두는 것이 항상 좋은 것은 아니다. INSERT, UPDATE, DELETE가 발생할 때 인덱스 유지 비용이 생기며, 복합 인덱스는 컬럼 순서도 성능에 영향을 준다.
도구와 데이터 플랫폼별 설계 관점
ERD 도구로는 Lucidchart, ER/Studio, ERwin이 있으며, CASE 도구로는 PowerDesigner와 Rational Rose가 있다. MySQL Workbench와 pgModeler는 오픈소스 도구이고, Vertabelo와 dbdiagram.io는 클라우드 기반 도구다.
관계형 데이터베이스 밖에서는 접근 방식도 달라진다.
- NoSQL은 관계형 모델과 다른 방식으로 설계하며, 데이터 접근 패턴과 스키마리스 특성을 중심에 둔다. 문서형은 중첩 구조, 컬럼형은 컬럼 패밀리, 키-값형은 키, 그래프형은 노드와 관계 모델링에 초점을 둔다.
- 데이터 웨어하우스는 스타 스키마와 스노우플레이크 스키마를 사용하고, 팩트 테이블·차원 테이블과 집계 테이블을 설계한다.
- 마이크로서비스 환경에서는 서비스별 독립 데이터베이스, 데이터 일관성과 복제 전략, 분산 트랜잭션 처리 방법을 다룬다.
- 클라우드 네이티브 환경에서는 확장성, 멀티 테넌시 구현, 데이터 파티셔닝 전략을 고려한다.
업무 특성이 스키마의 우선순위를 바꾼다
전자상거래 플랫폼은 주문·상품·고객·재고 관리를 위한 스키마를 바탕으로 트랜잭션 처리와 동시성 제어, 검색을 위한 인덱싱 전략을 함께 다룬다.
금융 시스템에서는 거래 무결성, 감사 추적(Audit Trail), 보안과 규제 준수 요구사항이 설계의 중심이 된다. IoT 플랫폼은 시계열 데이터를 효율적으로 저장하고, 대용량 처리를 위한 파티셔닝과 실시간 분석·장기 보관 전략을 고려해야 한다.
설계 검토에서는 쿼리 실행 계획과 예상 병목을 통한 성능, 데이터 증가에 대비한 확장성, 접근 제어와 암호화 전략을 포함한 보안, 장애 대비와 복구 방안에 따른 가용성을 함께 확인한다. 스키마 변경의 용이성, 리소스 사용 최적화에 따른 비용 효율성도 빠질 수 없다.
초기 설계는 개발 비용을 늘릴 수 있지만, 장기적으로 시스템 성능과 확장성, 유지보수성을 높여 총소유비용(TCO)을 줄이는 기반이 된다. 정규화와 비정규화의 균형을 잡고, 사용 중인 데이터베이스 기술과 성능을 지속적으로 점검하는 일이 설계의 일부다.