본문 바로가기
Database/Database

정규화

by curious week 2025. 4. 16.

1. 정규화란?

정규화(Normalization)는 데이터베이스 설계 과정에서 데이터의 중복을 줄이고, 데이터 삽입/삭제/수정 시 발생할 수 있는 이상(anomaly)을 방지하기 위해 릴레이션(테이블)을 구조적으로 재구성하는 과정입니다.

  • 동일한 정보를 담는 릴레이션 스키마라도 속성 구성 방식에 따라 성능과 정확성에 큰 차이가 발생할 수 있습니다.
  • 정규화는 데이터베이스의 효율성, 일관성, 유지보수성을 확보하는 핵심 설계 기법입니다.

2. 정규화의 필요성

정규화는 다음과 같은 갱신 이상(Update Anomaly) 문제를 해결:

삽입 이상 데이터를 삽입하려 해도 불필요한 다른 정보도 함께 입력해야 하는 문제
삭제 이상 일부 데이터를 삭제하면 원하지 않는 다른 정보까지 함께 삭제되는 문제
수정 이상 하나의 데이터 변경을 위해 여러 레코드를 일괄 수정해야 하는 문제

 


3. 정규화를 위한 핵심 개념

3.1 함수적 종속성(Functional Dependency, FD)

  • 어떤 릴레이션에서 속성 A의 값(또는 집합)이 속성 B의 값(또는 집합)을 결정하면, “B는 A에 함수적으로 종속된다”고 하며 A → B로 표기.
  • 예: 학번 → 이름 은 학번이 이름을 결정짓는 함수적 종속성을 갖는다.

3.2 클로저(Closure)

  • 주어진 함수적 종속성 집합으로부터 암스트롱 공리(Armstrong’s Axioms)를 사용하여 추론 가능한 모든 함수적 종속성 집합을 구한 것을 클로저라 합니다.
  • 클로저는 릴레이션의 속성 간에 존재할 수 있는 잠재적인 관계까지 포함하여 설계의 기반이 됩니다.
  • 암스트롱 공리
    • 1. 반사성(재귀성, Reflexivity) A ⊇ B이면, A → B
    • 2. 증가성(부가성, Augmentation) A → B이면, AC → BC
    • 3. 이행성(Transitivity) A → B이고 B → C이면, A → C
    • 4. 분해(Decomposition) A → BC이면, A → B 그리고 A → C
    • 5. 합집합(Union) A → B, A → C이면, A → BC
    • 6. 의사 이행성(Pseudotransitivity) A → B, 그리고 BC → D이면, AC → D

3.3 카노니컬 커버(최소 커버, Canonical Cover)

    • 클로저에서 도출된 함수적 종속성 중 의미상 중복되거나 자명(당연)한 종속성을 제거하여 최소화한 형태입니다.
    • 카노니컬 커버는 정규화의 기준으로 사용되며, 효율적인 스키마 분해의 기초 자료가 됩니다.
    • 카노니컬 커버의 표준형
      • 각 함수적 종속성의 오른쪽은 반드시 하나의 속성이어야 함 (A → B, A → C 형태)
      • 함수적 종속성의 왼쪽에서 속성을 제거해도 의미가 유지되면, 해당 속성은 제거해야 함
      • 의미상 중복되거나 포함된 함수적 종속성은 제거해야 함

4. 정규형(Normal Forms)

  • 릴레이션이 특정한 제약조건을 만족할 경우, 이를 정규형(Normal Form)이라 합니다.
  • 정규형은 각 단계마다 데이터의 중복을 줄이고 이상을 방지하는 수준이 높아집니다.
제1정규형(1NF) 모든 속성은 도메인 원자값(단 하나의 의미만을 가짐, atomic value)만 포함된다.
관계형 모델의 특성을 만족하는 경우 자동 적용되는 정규형이다.
반복 속성 제거
제2정규형(2NF) 1NF + 부분 함수 종속 제거 (기본키에 완전 종속되도록 릴레이션을 분해) 삽입/수정 이상 방지
제3정규형(3NF) 2NF + 이행적 종속성 제거 비핵심 속성이 다른 비핵심 속성을 결정하지 않게
BC정규형(BCNF) 모든 결정자가 후보키여야 함 강한 형태의 3NF, 복잡한 종속성 해결
제4정규형(4NF) 다치 종속 제거 하나의 속성이 여러 개의 독립적 값을 가질 때 해결
제5정규형(5NF) 조인 종속 제거 분해된 릴레이션을 조인했을 때 정보 손실 없이 복원 가능해야 함

함수적 종속성 다이어그램(Functional Dependency Diagram, FDD): 릴레이션 내의 종속성간의 종속 관계를 도식화한 표현 방식

  • X -> Y에 대한 함수 종속 관계
    • 부분 함수 종속: Y가 X의 전체가 아닌 일부분에 종속
    • 완전 함수 종속: Y가 X의 전체에 종속
  • 이행적 종속성
    • X -> Y이고 Y -> Z이면 X -> Z이다.

정규화

  • 릴레이션 분할을 통해 데이터의 중복성을 최소화하는 과정
  • 사용 과정에서 많은 조인 연산을 유발

역정규화

  • 정규화의 반대과정으로 정규화를 통해 분리되었던 릴레이션을 통합하는 재종정을 수행하고 정보의 부분적 중복을 허용하는 기법
  • 데이터 접근 성능 개선 목적

정규화 되지 않은 스키마와 역정규화 스키마는 구별해야한다.

 

'Database > Database' 카테고리의 다른 글

저장 객체  (1) 2025.04.16
SQL(4)  (0) 2025.03.28
SQL(3)  (0) 2025.03.28
SQL(2)  (0) 2025.03.28
SQL(1)  (1) 2025.03.28