[SQLD] 정규화(Normalization)

Libra·2022년 7월 15일
1

📌1. 정규화의 개요

  • 정규화란?

    • 테이블의 중복제거, 데이터 분류 등을 통해 데이터를 구조화 시키는 과정이다
  • 정규화의 목적

    • 중복을 제거하여 공간 절약
    • 데이터 무결성을 보장하여 정확성일관성을 유지
    • 삽입,삭제,갱신 이상의 발생 가능성을 줄이는 것이다.

💡 주의 (정규화 수행 시)

데이터 입력/수정/삭제 성능은 향상
BUT 조회 성능은 향상될 수도 저하될 수도 있다.


📌2. 정규화의 특징

  • 정규화를 실행 한다면 데이터 조회 시 조인의 수가 증가한다.

  • 업무가 변경되도 모델의 유연성을 향상 시킨다.

  • 엔터티의 의미해석이 명확해진다.

  • 테이블의 수가 증가한다.

  • 모델의 독립성을 향상시킨다.


📌3. 정규화의 종류

제1정규화 ~ 제5정규화 (실제로는 제3정규화까지만 수행)

-도부이결다조 ( 두부이걸다줘 )로 외움-

사진 출처


📌4. 정규화 상세

제1 정규화(1NF)

  • 모든 속성이 원자값(Atomic Value)만으로 되어있는 형태

  • M : N 관계를 1 : M 관계로 변환

사진 출처: https://devinus.tistory.com/26


제2 정규화(2NF)

  • 모든 속성은 반드시 '기본키'에 완전 '함수적 종속을 만족' 한다.
  • '부분적 함수 종속성' 제거한다.
  • 💡 but, 제 1 정규화 결과 기본키가 하나라면 생략한다.


제3 정규화(3NF)

  • 이행함수 종속성 제거
  • 💡이행적 종속이란? : A → B, B → C 이면 A → C가 성립되는 것을 의미한다.


제 3정규화를 거치면 다음과 같아진다.

사진 출처 보기


Boyce - Codd 정규화(BCNF)

  • 모든 결정자가 후보키인 정규형

자세한 설명 보러가기


제4 정규화(4NF)

  • 다치(다중 값) 종속성 제거

제5 정규화(5NF)

  • 조인 종속성 제거

참고블로그
https://goc1221.tistory.com/34
https://sewonzzang.tistory.com/51
https://antkdi.github.io/posts/post-license-sqld-normalization/

0개의 댓글