본문 바로가기
코딩도전기/DB(mariaDB)

CODO Day35_DB(정규화&역정규화)

by 코도꼬마 2023. 3. 24.

정규화(normalization)와 역정규화(denormalization)

  • RDBMS 설계에서 중복이 최소화 되도록 데이터를 구조화 하는 프로세스
  • 자료 중복으로 인해 이상현상이 발생할 수 있어 이를 최소화하기 위해서 사용
  • 이상 현상을 최소화 하기 위해 테이블을 쪼개는 작업
삭제 이상 원치 않는 데이터도 삭제 member 의 id 를 삭제하려 했는데 모두 삭제
삽입 이상 원치 않는 데이터가 삽입 profile 의 name 을 넣었는데 grade 에도 삽입
갱신 이상 데이터 일부만 갱신 모든 id 를 변경 하려 했는데 grade 의 id 만 변경

 

  • 정규화(normalization) 과정은 총 여섯 과정이 있음
  • 실제로는 3NF까지만 사용(3NF가 되면 정규화가 된 것으로 간주)
  • 각 정규형은 이전 단계들을 모두 만족 해야만 함
1NF 모든 항목에 값이 있어야 하며(NOT NULL), 중복열이 없어야 함
2NF 개체의 속성이 한 식별자에 종속되어야 함(부분 함수적 종속 제거)
3NF X로 인해 Y가 결정되고, Y로 인해 Z가 결정되는 경우(이행 함수 종속성 제거)

 

1NF(Normal Form)

  • 모든 항목에 값이 있어야 함(NOT NULL)
  • 중복되는 데이터가 없어야 함

Written by zer0box@naver.com

 

 

2NF(Normal Form)

  • 개체의 속성이 한 식별자에 종속되어야 함
  • 하나의 식별자로 하나의 데이터를 가져올 수 있어야 함

Written by zer0box@naver.com

 

 

3NF(Normal Form)

  • X로 인해 Y가 결정되고, Y로 인해 Z가 결정되는 경우(이행 함수 종속성 제거)
  • 하나의 값이 변경됨에 따라 다른 값들이 연속적으로 변경되지 않아야함

 

 

 

역정규화(denormalization)

  • 테이블을 합하는 작업
  • 지나친 정규화는 쿼리를 복잡하게 만들고 성능을 저하시키므로 다시 합쳐(6개의 테이블을 join 한다면?)