[Database] 정규화

GreenBean·2021년 8월 15일
0
post-thumbnail

정규화

데이터베이스 정규화 (Database Normalization)

  • 관계형 모델에서는 정규화 이론이라는 DB 설계 이론이 있음
  • 정규화 이론은 RDB를 효율적으로 잘 다루는데 있어 필요한 과정이며, 관계형 모델을 전제로 구축된 DB 설계 이론
  • 정규화의 가장 큰 이점은 모순을 방지할 수 있다는 것
  • 모순이란 논리적으로 불일치한 데이터가 발생하는 상황을 말하며, 모순이 발생한 상태를 변칙(Anomalies)이라고 함
    • 모순이 생기는 이유는 데이터의 중복이 가장 큰 역할을 하는데, 정규화를 통해 중복을 제거함으로써 모순을 해결할 수 있음
    • 즉, 정규화는 릴레이션 내에서 중복을 제거하는 과정

정규화의 장점

  • 정규화 과정, 즉 중복 제거를 통해 얻을 수 있는 이점
    • 응용프로그램 단에서 불필요한 로직을 없앨 수 있음
    • 올바른 데이터만 얻을 수 있음 (변칙 방지)
    • 불필요한 쿼리(예를 들면, 서브쿼리) 제거로 성능 향상

정규형 (Normal Form, NF)

  • 정규화 과정각각의 정규형이 되기 위한 조건들을 충족시키는 과정
  • 정규형에는 단계가 있는데, 높은 단계로 갈수록 중복이 적은 릴레이션으로 설계
    • 제1 정규형 (1NF)
    • 제2 정규형 (2NF)
    • 제3 정규형 (3NF)
    • 보이스코드 정규형 (BCNF)
    • 제4 정규형 (4NF)
    • 제5 정규형 (5NF)
    • 제6 정규형 (6NF)

정규형의 특징

  • 높은 단계의 정규형은 그 이전 정규형들이 갖는 조건들을 만족해야 함
    • 예를 들어, 4NF는 1NF~BCNF까지의 정규형 조건들을 기본적으로 만족해야 함
  • 핵심 정규형은 BCNF, 5NF이며, 그 외의 정규형을 목표로 하지 않음
    • 일반적으로 BCNF를 만족하면 5NF를 만족하는 경우가 많기 때문에 BCNF를 목표로 두기도 함
    • 특히 6NF는 직교성을 다룰 때 유용하지만, 릴레이션이 너무 많아져 불필요한 join이 많아지므로 6NF를 목표로 두진 않음
  • 2NF ~ BCNF는 함수 종속성의 제거를 통해 만족하게 되며, 4NF ~ 6NF는 결합 종속성의 제거를 통해 이뤄짐
profile
🌱 Backend-Dev | hwaya2828@gmail.com

0개의 댓글