#데이터베이스 정규화 (DB Normalization)란?

관계형 데이터베이스에서 데이터를 구조화하고 조직화하는 프로세스입니다. 이를 통해 데이터 중복을 최소화하고 데이터의 일관성, 무결성, 유지보수성을 향상시킬 수 있습니다. 정규화는 데이터베이스 설계 과정에서 중요한 역할을 합니다.

 

데이터베이스 정규화는 함수적 종속성을 기반으로 이루어집니다. 함수적 종속성은 한 속성의 값이 다른 속성의 값을 유일하게 결정할 수 있는 관계를 의미합니다. 이러한 함수적 종속성을 기준으로 데이터를 적절한 테이블로 분할하여 중복을 제거하고 관계를 명확히 정의하는 것이 목표입니다.

 

데이터베이스 정규화는 일반적으로 제 1 정규형(1NF), 제 2 정규형(2NF), 제 3 정규형(3NF), 보이스-코드 정규형(BCNF) 등의 정규형을 순차적으로 만족시키는 과정을 거칩니다. 각 정규형은 특정 종속성 패턴을 만족시키는 규칙을 가지고 있으며, 한 정규형을 만족시키면 그 다음 정규형을 만족시키는 작업을 수행합니다.

 

정규화는 지나치게 세분화되면 성능 저하의 원인이 될 수 있으므로, 실제로는 성능과 정규화의 균형을 유지하는 것이 중요합니다. 따라서 데이터베이스 설계 시, 정규화 원칙을 적용하면서도 성능 요구사항과 비즈니스 규칙을 고려해야 합니다.

 

#데이터베이스 정규화 단계

 

 제 1정규형(1NF):

  • 각 테이블의 모든 도메인이 원자 값(Atomic Value)을 가지도록 분해합니다.
  • 테이블의 각 열은 반복되는 그룹이 없어야 합니다.
  • 각 행은 고유한 식별자를 가져야 합니다.

제 2 정규형(2NF):

  • 제 1 정규형을 만족해야 합니다.
  • 부분 함수적 종속성을 제거해야 합니다.
  • 테이블에서 기본 키에 대해 완전 함수적 종속성을 가져야 합니다.

제 3 정규형(3NF):

  • 제 2 정규형을 만족해야 합니다.
  • 이행적 함수적 종속성을 제거해야 합니다.
  • 테이블에서 기본 키가 아닌 속성 간의 종속성을 제거해야 합니다.

보이스-코드 정규형(BCNF):

  • 제 3 정규형을 만족해야 합니다.
  • 결정자 종속성을 제거해야 합니다.
  • 테이블에서 모든 결정자가 후보 키여야 합니다.

 

+ Recent posts