데이터베이스 정규화 단계별 흐름

1. 개요

  • 정규화 = 이상 현상(삽입·갱신·삭제)을 없애려고 릴레이션을 무손실 분해하는 과정임
  • 1NF~BCNF는 함수 종속(FD), 4NF는 다치 종속(MVD), 5NF는 조인 종속(JD) 기준임
  • 거가대교 ITS 전산 실무에서 쓰는 장비 점검 데이터 하나로 끝까지 설명함

2. 이상 현상 3가지

  • 삽입 이상: 점검 이력이 없으면 신규 장비 등록 불가함
  • 갱신 이상: 장비명 하나 바꾸려면 여러 행 수정, 누락 시 불일치 발생함
  • 삭제 이상: 마지막 점검 행 삭제 시 장비·구간 정보까지 사라짐

3. 1정규형(1NF): 반복 그룹 제거

1정규형 예시

  • 조건: 모든 속성 값이 원자값이어야 함
  • 비정규형은 점검내역 한 칸에 여러 건이 들어가 검색·집계가 안 됨
  • 행을 펼쳐 PK = (장비ID, 작업자ID, 점검일)로 잡음
  • 남은 문제: 장비명·구간명 중복이 그대로 남음

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

2정규형 예시

  • 조건: 1NF + 일반 속성이 기본키 전체에 완전 함수 종속이어야 함
  • 장비ID → 장비명, 작업자ID → 작업자명은 키 일부에만 종속됨(부분 종속)
  • 장비 / 작업자 / 점검 세 테이블로 분해함
  • Tip: 단일 컬럼 PK면 1NF만 만족해도 자동으로 2NF임

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

3정규형 예시

  • 조건: 2NF + 기본키가 아닌 속성 간 종속(A→B→C)이 없어야 함
  • 장비ID → 구간코드 → 구간명 이행 종속 존재함
  • 구간 테이블을 분리하고 장비.구간코드를 FK로 연결함
  • 실무 대부분의 OLTP 설계는 3NF(또는 BCNF)까지 가면 충분했음

6. BCNF: 후보키가 아닌 결정자 제거

BCNF 예시

  • 조건: 모든 결정자가 후보키여야 함 (강한 3NF)
  • 규칙: 업체 하나는 장비유형 하나만 담당 → 담당업체 → 장비유형
  • 담당업체는 후보키가 아닌데 결정자임 → BCNF 위반임
  • 업체전문 / 구간담당으로 분해함
  • 주의: (구간, 장비유형) → 업체 FD가 보존되지 않음 → 응용·트리거로 보완 필요함

7. 4정규형(4NF): 다치 종속 제거

4정규형 예시

  • 조건: BCNF + 자명하지 않은 다치 종속(MVD)이 없어야 함
  • 장비모델 →→ 지원프로토콜, 장비모델 →→ 연동센서가 서로 독립임
  • 한 테이블에 두면 M×N 조합 행이 생기고, 하나 추가할 때마다 행이 폭증함
  • 모델프로토콜 / 모델센서로 나누면 M+N 행으로 줄어듦

8. 5정규형(5NF): 조인 종속 제거

5정규형 예시

  • 조건: 모든 조인 종속이 후보키에 의해서만 성립해야 함 (PJNF)
  • 업체-부품-현장 사이에 순환 업무 규칙이 있으면 3개로 쪼개야 무손실임
  • 2개로만 쪼개면 다시 조인할 때 가짜 행(Spurious Tuple)이 생김
  • 업체부품 ⋈ 업체현장 ⋈ 현장부품 = 원래 4행과 정확히 일치함

9. 반정규화(De-normalization) 트레이드오프

  • 정규화가 깊어질수록 조인이 늘어 조회 성능이 떨어짐
  • ITS 대시보드·통계처럼 읽기 위주 화면은 집계 테이블·중복 컬럼으로 반정규화했음
  • 대신 무결성 비용(트리거, 배치 동기화)을 감수해야 함
  • 원칙: 먼저 정규화 → 성능 측정 → 근거 있을 때만 반정규화

10. 한눈에 정리

단계제거 대상예시 분해
1NF반복 그룹·다중값점검내역 행 펼치기
2NF부분 함수 종속장비 / 작업자 / 점검
3NF이행 함수 종속장비 / 구간
BCNF후보키 아닌 결정자업체전문 / 구간담당
4NF다치 종속모델프로토콜 / 모델센서
5NF조인 종속업체부품 / 업체현장 / 현장부품

11. 기술사 답안 포인트

  • 암기법: "도부이결다조" (도메인 원자값-부분-이행-결정자-다치-조인)
  • 정의 → 이상 현상 → 종속 표기(X→Y, X→→Y, JD) → 분해 전/후 표 순서로 쓰면 채점자가 따라오기 쉬움
  • BCNF는 종속성 보존 불가 가능성, 5NF는 무손실 조인 키워드 꼭 넣을 것
  • 마무리는 반정규화 기준(성능·무결성 트레이드오프)과 실무 사례로 차별화함