[DB] 정규화(Normalization)란?
정규화(Normalization)는 데이터베이스 설계에서 데이터의 중복을 최소화하고, 데이터 무결성을 유지하기 위해 데이터를 구조적으로 조직하는 과정.
주로 관계형 데이터베이스에서 사용되며, 여러 단계로 나뉘어 진행된다.
정규화의 목적
중복 제거
데이터의 중복을 최소화하여 저장 공간을 절약하고, 데이터 일관성을 유지할 수 있도록 함.
예를 들어, 학생과 수업 정보를 각각의 테이블로 나누어 중복된 데이터를 줄임.
데이터 무결성 유지
데이터의 정확성과 일관성을 보장하기 위해, 데이터가 여러 위치에 저장되지 않도록 함.
중복된 데이터가 있을 경우, 하나의 데이터 수정 시 다른 데이터도 함께 수정해야 하므로 오류가 발생할 수 있음.
데이터 관계 명확화
테이블 간의 관계를 명확히 정의하여 데이터베이스 구조를 이해하기 쉽게 만듦.
외래 키를 통해 엔터티 간의 관계를 명확히 하고, 데이터의 참조 무결성을 보장함.
유지보수 용이성
데이터베이스 구조가 간단해지면, 데이터의 추가, 삭제, 수정이 용이해짐.
필요한 데이터만을 업데이트하면 되기 때문에 관리가 수월해짐.
정규화 단계
정규화는 일반적으로 여러 단계로 나뉘며, 각 단계는 “정규형”이라고 불림.
제1 정규형 (1NF)
모든 속성이 원자값(Atomic Value)을 가져야 함.
즉, 각 필드는 더 이상 분해할 수 없는 단일 값을 가져야 함.
제2 정규형 (2NF)
1NF를 만족하고, 기본 키에 완전 함수 종속(Partial Dependency)이 없어야 함.
즉, 기본 키의 일부에만 의존하는 속성이 없어야 함.
제3 정규형 (3NF)
2NF를 만족하고, 이행적 함수 종속(Transitive Dependency)이 없어야 함.
즉, 기본 키가 아닌 속성이 다른 기본 키가 아닌 속성에 의존하지 않아야 함.
보이스-코드 정규형 (BCNF)
3NF를 만족하고, 모든 결정자가 후보 키여야 함.
즉, 속성이 다른 속성을 결정할 때, 그 결정자가 기본 키여야 함.