개발자 면접 노트

RDBMS에서 정규화란?

해로몬 2025. 6. 26. 19:03

정규화란?

관계형 데이터베이스에서 데이터 중복을 최소화하고, 데이터 구조를 체계적으로 설계하기 위해 테이블을 분해하고 재구성하는 과정입니다.

 

[정규화의 목표]

  • 데이터 중복 최소화
  • 데이터 무결성 유지
  • 삽입(Insert), 수정(Update), 삭제(Delete) 이상(Anomaly) 방지
  • 데이터 구조의 일관성 확보

제1정규형 (1NF)

  • 테이블은 모든 속성이 원자값을 가져야 한다.
  • 중첩 데이터, 반복 그룹 제거
학생 ID 이름 연락처
1 홍길동 010-1234, 010-5678

 

→ 1NF 적용 후

학생ID 이름   연락처
1 홍길동 010-1234
1 홍길동 010-5678

제2정규형 (2NF)

  • 부분 함수 종속 제거
  • 기본키의 일부에만 종속되는 속성을 분리한다.
  • 복합키 사용 시 해당된다.

| 학번 | 과목코드 | 교수명|성적 |

 

  • (학번,과목코드) →성적
  • 과목코드 →교수명(부분 종속)

→ 2NF 적용 후 분리
학생-성적 테이블
| 학번 | 과목코드 | 성적 |

과목 테이블
| 과목코드 | 교수명 |


제3정규형 (3NF)

  • 이행적 함수 종속 제거
  • 기본키가 아닌 다른 속성에 종속되는 속성을 분리한다.

| 직원ID | 부서ID | 부서명 |

  • 직원ID → 부서ID
  • 부서ID → 부서명 (이행적 종속)

→ 3NF 적용 후 분리
직원 테이블
| 직원ID | 부서ID |

부서 테이블
| 부서ID | 부서명 |

 

BCNF

  • 모든 결정자가 후보키일 것
  • (예시) 복합키가 여러 개 존재하거나 후보키가 여러 개인 경우 추가 분해 필요하다.
학번(StudentID)  강의실(Room)  교수(Professor)
1001 101호 김교수
1002 102호 이교수
1003 101호 김교수

 

→ BCNF 적용 후 분리

 

학번(StudentID)  강의실(Room)
1001 101호
1002 102호
1003 101호

 

강의실(Room) 교수(Professor)
101호 김교수
102호 이교수

제4정규형 (4NF)

  • 다치 종속 제거
  • 한 테이블에 여러 독립적인 다중 값이 존재하면 분리한다.

제5정규형 (5NF)

  • 조인 종속 제거
  • 테이블을 분해했다가 조인할 때 정보 손실이 없는 상태

정규화의 장점과 단점

장점

 

  • 데이터 중복 감소
  • 데이터 무결성 향상
  • 테이블 구조의 논리적 설계

 

단점

 

  • 테이블 수 증가 → JOIN 연산 많아져 성능 저하 가능성
  • 시스템 규모나 상황에 따라 반정규화(Denormalization) 를 고려하기도 함

따라서 정규화안정적이고 일관성 있는 데이터베이스를 구축하고, 시스템의 확장성과 유지보수를 용이하게 만드는 핵심 설계 원칙이다.

 

 

'개발자 면접 노트' 카테고리의 다른 글

MyBatis vs JPA  (2) 2025.06.26
RESTful API 설계의 핵심 원칙  (0) 2025.06.26
HTTP 상태코드  (0) 2025.06.25
MVC 패턴  (0) 2025.06.25
Kotlin과 같은 등급은 Java인가 Spring인가?  (3) 2025.06.25