Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

데이터베이스 테이블 정규화 방법: 1NF부터 5NF까지 단계별 가이드

정규화(Normalization)는 데이터 중복을 제거하고 갱신·삽입·삭제 시 발생하는 이상 현상(anomaly)을 방지하여, 데이터베이스 관리자가 선호하는 이상적인 데이터베이스 설계를 완성하는 핵심 과정입니다.

데이터베이스 테이블을 정규화하려면 아래에서 소개하는 정규형(Normal Form)의 역할과 용도를 단계별로 따라가면 됩니다.

제1정규형 (1NF, First Normal Form)

제1정규형은 데이터 중복 문제와 다양한 이상 현상을 제거하는 데 유용합니다. 1NF를 만족하려면 모든 속성(컬럼)의 값이 더 이상 분해할 수 없는 원자적(atomic) 도메인을 가져야 하며, 하나의 컬럼에는 반드시 하나의 값만 저장되어야 합니다.

제2정규형 (2NF, Second Normal Form)

제2정규형은 기본 키에 대한 부분 종속(partial dependency)을 제거합니다. 즉, 복합 기본 키의 일부에만 의존하는 속성들을 분리하여, 모든 비주요 속성이 기본 키 전체에 완전하게 종속되도록 테이블을 구성해야 합니다.

제3정규형 (3NF, Third Normal Form)

제3정규형은 이행적 함수 종속(transitive functional dependency)을 제거합니다. 기본 키가 아닌 일반 속성이 다른 일반 속성에 의존하는 관계를 분리함으로써, 데이터 불일치와 중복을 더욱 효과적으로 방지할 수 있습니다.

제4정규형 (4NF, Fourth Normal Form)

4NF를 만족하려면 하나의 릴레이션(테이블)이 두 개 이상의 다중값(multi-valued) 속성을 포함하지 않아야 합니다. 독립적인 다중값 종속이 존재할 경우 이를 별도의 테이블로 분리해야 합니다.

제5정규형 (5NF, Fifth Normal Form)

릴레이션이 4NF를 만족하면서, 더 작은 테이블들로 무손실(lossless) 분해할 수 없는 경우 제5정규형에 해당합니다. 5NF는 조인 종속(join dependency)까지 고려하여, 분해 후 다시 조인했을 때 원래의 데이터가 그대로 유지되도록 보장합니다.

이처럼 정규화 단계를 순서대로 적용하면 데이터 중복이 최소화되고 무결성이 높은 데이터베이스 구조를 얻을 수 있습니다. 다만 실무에서는 성능과 편의성을 고려해 일반적으로 3NF 또는 BCNF 수준까지만 적용하는 경우가 많습니다.