티스토리 뷰

WEB/DB

데이터 베이스 정규화(Normalization)

silverline79 2026. 3. 16. 22:02

데이터베이스 설계의 핵심인 **정규화(Normalization)**는 데이터의 중복을 최소화하고 무결성을 유지하기 위해 테이블을 구조화하는 과정입니다. 쉽게 말해, "한 테이블에는 하나의 주제만 담도록" 잘게 쪼개는 작업이라고 보시면 됩니다.

정규화를 제대로 하지 않으면 데이터를 수정할 때 엉뚱한 데이터까지 바뀌거나, 삭제할 때 필요한 정보까지 사라지는 **이상 현상(Anomaly)**이 발생할 수 있습니다.


1. 정규화의 주요 단계 (1NF ~ 3NF)

실무에서는 보통 제3정규형까지의 과정을 가장 필수적으로 거칩니다.

제1정규형 (1NF): 원자값 확보

모든 컬럼은 더 이상 쪼개질 수 없는 **단 하나의 값(Atomic Value)**만 가져야 합니다. 한 칸에 여러 개의 전화번호나 여러 명의 이름이 들어있다면 이를 분리해야 합니다.

제2정규형 (2NF): 부분 함수 종속성 제거

기본키가 복합키(여러 컬럼의 조합)일 때 발생합니다. 기본키의 일부분에만 의존하는 컬럼이 있다면 별도의 테이블로 분리해야 합니다.

  • 예: [학번, 과목코드]가 기본키인데, '학생이름'은 '학번'에만 의존한다면 학생 정보 테이블을 따로 만듭니다.

제3정규형 (3NF): 이행적 함수 종속성 제거

기본키가 아닌 컬럼들끼리 종속 관계가 있는 경우를 해결합니다. 즉, A → B → C 관계가 성립할 때 A와 C를 직접 연결하지 않고 별도의 테이블로 떼어내는 것입니다.

  • 예: [학번] → [학과코드] → [학과명] 일 때, 학과명은 학번이 아닌 학과코드에 종속되므로 학과 테이블을 분리합니다.

2. 정규화의 장단점

구분 장점 (Why?) 단점 (Trade-off)
효과 데이터 중복 제거, 저장 공간 절약, 데이터 무결성 유지 용이 테이블 수가 늘어나며 조인(Join) 연산 증가
성능 삽입/수정/삭제 시 이상 현상 방지 및 속도 향상 조회가 잦은 대용량 시스템에서는 성능 저하 가능성

3. 정규화 vs 역정규화 (Denormalization)

무조건 정규화를 많이 한다고 좋은 것은 아닙니다.

  • 정규화: 데이터의 정확성일관성이 중요할 때 (주로 OLTP 시스템)
  • 역정규화: 조인 비용이 너무 커서 조회 속도를 획기적으로 높여야 할 때 의도적으로 중복을 허용함 (주로 OLAP 시스템)

💡 핵심 요약:

정규화는 데이터를 **"가장 작은 논리적 단위"**로 나누어 관리 효율을 높이는 과정입니다. 1→2→3 정규형 순서로 진행하며, 지나친 분리로 성능이 떨어진다면 그때 '역정규화'를 고민하는 것이 올바른 설계 순서입니다.

 

 

 

※ 해당 내용은 Google Gmini3.0에서 작성되었습니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2026/08   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함