CS

[SQLD] 정규화(Normalization)

2026년 02월 11일 04:18

SQLD 1과목 – 정규화(Normalization)

정규화란?

정규화(Normalization)
데이터베이스 설계 과정에서 데이터 중복을 제거하고 이상현상을 방지하기 위해
테이블을 구조적으로 분해하는 과정이다.

👉 목적은 데이터 무결성 유지 + 일관성 확보

  • 논리 데이터 모델링 단계에서 수행
  • 실무에서는 일반적으로 제 3정규화(3NF)까지 적용

정규화의 목적

  1. 데이터 중복 최소화
  2. 삽입 / 수정 / 삭제 이상 제거
  3. 데이터 일관성 유지
  4. 저장 공간 효율성 확보

이상현상

종류설명
삽입 이상필요 없는 데이터를 함께 입력해야 하는 문제
갱신 이상중복 데이터 중 일부만 수정되어 불일치 발생
삭제 이상특정 데이터 삭제 시 원치 않는 정보까지 함께 삭제

👉 핵심 원인: 데이터 중복

정규화 단계 ⭐⭐⭐

① 제 1 정규화 (1NF)

정의

  • 모든 속성은 원자값(Atomic Value) 을 가져야 한다.
  • 하나의 속성에는 하나의 값만 저장

예시

sqld-normalization1

👉 구매상품에 "샴푸, 린스" 같이 여러 값 저장 ❌
👉 각각의 행으로 분리 ⭕

② 제 2 정규화 (2NF)

정의

  • 1NF 만족
  • 부분 함수 종속 제거

부분 함수 종속이란?

  • 기본키가 복합키일 때
  • 기본키의 일부에만 종속되는 경우

예:

PK = (학번 + 강의명)
강의실은 강의명에만 종속 → 부분 종속 발생

예시

sqld-normalization3

👉 복합키 + 일부 속성 종속 → 분리

③ 제 3 정규화 (3NF)

정의

  • 2NF 만족
  • 이행 함수 종속 제거

이행 종속이란?

A → B , B → C
이면 A → C 관계 성립

즉, 기본키가 아닌 속성이 또 다른 일반 속성을 결정하는 경우

예시 1

sqld-normalization4

고객번호(기본키) → 상품명, 상품명 → 가격

👉 가격은 기본키에 직접 종속되지 않음
👉 상품 테이블로 분리

예시 2

sqld-normalization5

학번 → 전공, 전공 → 담당교수

👉 이행 종속 발생
👉 전공-교수 테이블 분리

④ BCNF (Boyce-Codd Normal Form)

정의

  • 모든 함수 종속 X → Y 에서
  • 결정자 X는 반드시 후보키

3NF보다 강화된 형태

⑤ 제 4 정규화 (4NF)

정의

  • 다중값 종속 제거
  • 하나의 엔터티에 서로 독립적인 다중값 속성이 존재할 경우 분해

⑥ 제 5 정규화 (5NF)

정의

  • 조인 종속 제거
  • 조인으로 인해 불필요한 중복이 발생하는 경우 분해

정규화 단계 요약

단계제거 대상
1NF원자성 위반
2NF부분 함수 종속
3NF이행 함수 종속
BCNF후보키 아닌 결정자
4NF다중값 종속
5NF조인 종속