DB구축 - 정규화(Normalization), 반정규화(Denormalization)

강신찬·2023년 5월 19일

정규화, 반정규화

  • 하나의 종속성이 하나의 릴레이션에 표현될 수 있도록 분해해가는 과정
  • 데이터베이스의 논리적 설계 단계에서 수행

정규화의 목적

  • 데이터 구조의 안전성 및 무결성을 유지
  • 어떠한 릴레이션이라도 데이터베이스 내에서 표현 가능하게 만듦
  • 효과적인 검색 알고리즘 생성 가능
  • 데이터 중복을 배제해 이상(Anomaly)의 발생 방지 및 자료 저장 공간의 최소화
  • 개체와 속성의 누락 여부 확인 가능
  • 데이터 삽입 시 릴레이션을 재구성할 필요성을 줄임

이상(Anomaly)의 개념 및 종류

  • 정규화를 거치지 않아 데이터베이스 내에 데이터들이 불필요하게 중복되어 릴레이션 조작 시 예기치 못하게 발생하는 곤란한 현상

삽입 이상(Insertion Anomaly)

  • 릴레이션에 데이터를 삽입할 때 의도와 상관없이 원하지 않은 값들도 함께 삽입되는 현상

삭제 이상(Deletion Anomaly)

  • 릴레이션에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상

갱신 이상(Update Anomaly)

  • 릴레이션에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 모순이 생기는 현상

정규화의 원칙

  • 정보의 무손실
  • 분리의 원칙
  • 데이터의 중복성 감소

정규화 과정

1NF(제1정규형)

  • 릴레이션에 속한 모든 도메인(Domain)원자 값(Atomic Value)만으로 되어 있는 정규형

2NF(제2정규형)

  • 릴레이션 R이 1NF고, 기본키가 아닌 모든 속성이 기본키에 대해 완전 함수적 종속을 만족하는 부분적 함수 종속을 제거한 정규형

3NF(제3정규형)

  • 릴레이션 R이 2NF고 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수 종속 관계를 만족하지 않는 정규형
  • A -> B 이고 B -> C일 때 A -> C를 만족하는 관계(이행 규칙)

BCNF(Boyce-Codd 정규형)

  • 릴레이션 R에서 모든 결정자가 후보키인 정규형
  • 모든 BCNF가 종속성을 보존하는 것은 아님(강한 제 3정규형, 보이스/코드 정규형)

4NF(제4정규형)

  • 릴레이션 R에 다치 종속이 성립하는 경우 R의 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형

5NF(제5정규형)

  • 릴레이션 R의 모든 조인 종속이 R의 후보키를 통해서만 성립되는 정규형

반정규화 개념

  • 시스템의 성능 향상, 개발 및 운영의 편의성 등을 위해 정규화된 데이터 모델을 통합, 중복, 분리하는 과정으로 의도적으로 정규화 원칙을 위배하는 행위
  • 그러나 데이터의 일관성 및 정합성이 저하될 수 있음

반정규화 방법

테이블 통합

  • 1:1 관계 | 1:N 관계 | 슈퍼타입/서브타입 {테이블 통합}

테이블 분할

  • 수평 분할, 수직 분할 -> 기본키의 유일성 관리가 어려워짐

중복 테이블 추가

  • 집계 테이블 | 집행 테이블 | 특정 부분만을 포함하는 테이블 {추가}

중복 속성 추가

  • 자주 사용하는 속성을 하나 더 추가하는 것

출처: https://m.blog.naver.com/wook2124/222108772955

profile
꾸준히 공부하는 풀스텍 개발자

0개의 댓글