1009 단어
5 분
정규화 (Normalization)

정의#

NOTE

관계형 데이터베이스 설계에서 중복을 최소화하여 데이터의 구조를 효율적으로 만드는 과정 하나의 종속성이 하나의 릴레이션(테이블)에 표현되도록 분해하는 것

목적#

  • 데이터 중복 제거: 저장 공간 절약 및 효율성 증대
  • 이상 현상(Anomaly) 방지: 데이터 삽입, 삭제, 갱신 시 논리적 오류 방지
  • 데이터 일관성 및 무결성 유지: 정확한 데이터 상태 보장

이상 현상 (Anomaly)#

정규화를 하지 않아 발생하는 데이터 불일치 문제

삽입 이상 (Insertion Anomaly)#

데이터를 삽입할 때 불필요한 데이터까지 함께 삽입해야 하는 문제

  • 예시: 신입생 정보를 넣으려는데 수강 과목이 없어 등록할 수 없거나 가상의 과목을 넣어야 함

삭제 이상 (Deletion Anomaly)#

특정 정보를 삭제할 때 연쇄 작용으로 필요한 정보까지 함께 삭제되는 문제

  • 예시: 특정 과목 수강을 취소했는데 해당 학생의 신상 정보까지 삭제됨

갱신 이상 (Update Anomaly)#

중복된 데이터 중 일부만 수정되어 데이터 간 불일치가 발생하는 문제

  • 예시: 학생의 주소가 변경되었는데, 여러 행 중 일부만 업데이트되어 과거 주소와 현재 주소가 공존함

정규화 단계 (Normalization Steps)#

보통 제3정규형(3NF)이나 BCNF까지만 진행해도 실무에서 충분함

제1정규형 (1NF)#

  • 조건: 테이블의 모든 속성 값은 **원자값(Atomic Value)**만 가져야 함
  • 설명: 하나의 칸(컬럼)에 여러 개의 값(예: “취미: 축구, 농구”)이 들어가면 안 됨. 각 로우와 컬럼의 교차점에는 하나의 값만 존재해야 함

제2정규형 (2NF)#

  • 조건: 1NF를 만족하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속되어야 함
  • 설명: 기본키가 복합키(두 개 이상의 컬럼)일 때, 기본키의 일부 컬럼에만 종속되는 속성을 분리해야 함
  • 핵심: 부분 함수 종속 제거

제3정규형 (3NF)#

  • 조건: 2NF를 만족하고, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속되지 않아야 함
  • 설명: A → B, B → C 관계가 있을 때(A → C), 이를 A → B 테이블과 B → C 테이블로 분리해야 함. 즉, 속성 간의 종속 관계를 제거하는 것
  • 핵심: 이행 함수 종속 제거

BCNF (Boyce-Codd Normal Form)#

  • 조건: 3NF를 만족하고, 모든 결정자가 후보키여야 함
  • 설명: 강력한 제3정규형이라고도 불리며, 후보키가 아닌 속성이 기본키의 일부를 결정하는 상황을 제거함

반정규화 (De-normalization)#

개념#

정규화된 엔티티, 속성, 관계를 시스템의 성능 향상을 위해 의도적으로 중복, 통합, 분리하는 데이터 모델링 기법

사용하는 이유#

  • 정규화가 너무 과하게 진행되면 테이블이 많아져 JOIN 연산이 증가함
  • 이로 인해 조회 성능이 저하될 수 있음
  • 읽기 성능을 위해 쓰기 성능과 데이터 공간을 희생하는 전략

주의사항#

  • 데이터 무결성이 깨질 위험이 있으므로 꼭 필요한 경우에만 신중하게 적용해야 함
  • 정규화를 먼저 완벽하게 수행한 후, 성능 이슈가 발생했을 때 최후의 수단으로 고려

요약#

단계핵심 키워드제거 대상
1NF원자성도메인이 원자값이어야 함
2NF완전 함수 종속부분 함수 종속 제거
3NF이행 함수 종속이행 함수 종속 제거
BCNF결정자결정자가 후보키가 아닌 것 제거
정규화 (Normalization)
https://devlog.jpstudy.org/posts/2025/cs/normalization/
저자
SY
게시일
2025-09-10
라이선스
CC BY-NC-ND 4.0