데이터 정규화(Normalization)


데이터 정규화는 데이터베이스의 테이블을 가장 표준화된 방식으로 만드는 과정을 의미합니다. 이 과정의 핵심 목표는 데이터의 결함을 없애고 데이터의 중복을 제거하는 것입니다. 중복이 제거된 테이블 형태를 표준으로 보며 이 표준에 맞추기 위한 과정을 표준화, 정규화라고 합니다.


정규화가 필요한 이유

정규화의 가장 큰 목적은 데이터의 중복을 제거하여 나타날 수 있는 이상 현상을 방지하기 위함입니다. 이상 현상은 데이터를 삽입, 수정, 삭제할 때 예기치 않은 문제가 생기는 것을 말하며, 이상 현상의 내용은 아래와 같습니다.

  • 삽입 이상 (Insertion Anomaly): 불필요한 데이터가 없으면 새로운 데이터를 추가할 수 없는 문제입니다.
  • 갱신 이상 (Update Anomaly): 중복된 데이터 중 일부만 수정되어 데이터의 일관성이 깨지는 문제입니다.
  • 삭제 이상 (Deletion Anomaly): 특정 데이터를 삭제했을 뿐인데, 유지되어야 할 다른 정보까지 함께 사라지는 문제입니다.

정규화의 장점 

  • 데이터 중복 최소화: 중복되는 데이터를 제거하여 저장 공간을 효율적으로 사용합니다.
  • 데이터 무결성 보장: 정규회된 데이터는 중복이 없고 데이터의 정확성과 일관성이 향상됩니다.
  • 이상 현상(Anomaly) 방지: 데이터 정규화를 통하여 데이터 손실이나 불일치 위험을 줄입니다.
  • 구조의 유연성: 데이터베이스 구조를 변경하거나 확장하기 쉬워집니다.

데이터 정규화 과정 (1NF, 2NF, 3NF)

데이터 정규화는 여러 단계로 나뉘어 있으며, 일반적으로 제3정규형(3NF)까지 만족된다면 관계형 데이터베이스 설계로서 충분합니다.

제1정규형 (1NF: First Normal Form) :  테이블의 모든 컬럼은 반드시 '원자값(Atomic Value)'을 가져야 한다.

하나의 속성에는 오직 하나의 값만 저장될 수 있도록 테이블을 분해합니다.

제2정규형 (2NF: Second Normal Form) : 1NF를 만족하고, 모든 컬럼은 '기본 키(Primary Key) 전체'에 완전하게 종속되어야 한다. (부분 함수 종속 제거)

테이블의 주제와 관련 없는 데이터를 별도의 테이블로 분리하는 과정입니다.

제3정규형 (3NF: Third Normal Form) : 2NF를 만족하고, 기본 키가 아닌 모든 컬럼 간에는 서로 종속 관계가 없어야 한다. (이행적 함수 종속 제거)

일반 컬럼이 다른 일반 컬럼에 의해 결정되는 관계를 제거하는 과정입니다.


BCNF (Boyce-Codd Normal Form) : 테이블의 모든 결정자가 후보 키(Candidate Key)여야 한다.

3NF를 보완하는 강화된 정규형이며, 더욱 엄격한 기준을 가집니다.

  • 결정자(Determinant): 어떤 속성(컬럼)의 값을 결정하는 다른 속성. 즉, X → Y 라는 관계에서 X를 결정자라고 합니다. (X를 알면 Y를 알 수 있다)
  • 후보 키(Candidate Key): 테이블의 각 행을 유일하게 식별할 수 있는 속성의 최소 집합입니다. 기본 키(Primary Key)가 될 수 있는 후보들을 의미합니다.

어떤 값을 결정하는 키(결정자)는 그 자체로 기본 키가 될 자격이 있어야 한다는 강한 원칙입니다. 3NF는 이 규칙에 약간의 예외를 두지만 BCNF는 그 예외도 허용하지 않습니다.

 

 대부분의 경우 3NF를 만족하면 BCNF도 만족하므로, 일반적으로 3NF까지의 정규화를 목표로 합니다.

728x90

'CS' 카테고리의 다른 글

세션(Session)이란?  (1) 2025.08.03
Prisma ORM에 대하여  (0) 2025.08.02
클린 아키텍쳐(Clean Architecture)란?  (0) 2025.07.12
객체 지향이란?  (0) 2025.06.29
동기화와 비동기화  (0) 2025.06.20