[SQLD] 1-2 데이터 모델과 성능(정규화)

이하영·2023년 3월 13일
0

SQLD 자격증

목록 보기
6/10

SQLD 자격증 공부하면서 정리한 내용들을 작성한 글입니다.

2. 정규화와 성능

(1) 정규화(Normalization)란?

  • 데이터 모델을 좀 더 구조화하고 개선시키는 절차
  • 테이블 간에 중복된 데이터를 허용하지 않는 것이 목표
    무결성(Integrity)을 유지할 수 있고, DB 저장 용량을 줄일 수 있음
  • 정규화는 이상현상(Anomaly)이 있는 릴레이션을 분해하여 이상현상을 없애는 과정이다.
  • 이상현상이 존재하는 릴레이션을 분해해 여러 개의 릴레이션을 생성하게 된다.
  • 단계별로 구분하여 정규형이 높아질수록 이상현상은 줄어든다.

(2) 정규화 특징

  • 중복 제거, 무결성을 지킴
  • 성능은 조회삽입, 수정, 삭제 두 가지 측면을 모두 고려해야 함
  • 정규화가 잘 되어 있으면, 삽입, 수정, 삭제 성능 향상
    → 잘 쪼개져서
  • 반정규화가 잘 되어 있으면, 조회 성능 향상
    → 중복 만들어서 조인할 필요 없음

(3) 정규화 과정


(출처) https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99461C395E5FC1A30B

  • 제 1 정규화
    • 테이블의 컬럼이 원자값(Atomic Value,하나의 값)을 갖도록 테이블을 분해하는 것
    • 모든 값이 원자값을 가짐
    • 중복된게 많아 보이면 1차 정규화 대상
  • 제 2 정규화
    • 제 1 정규화를 진행한 테이블에 완전 함수 종속을 만족하도록 테이블을 분해하는 것
    • 부분함수종속 제거
    • 중복된게 안보이면 2차 정규화 대상
  • 제 3 정규화
    • 제 2 정규화를 진행한 테이블에 이행적 종속을 없애도록 테이블을 분해하는 것
    • 이행함수종속 제거
    • 식별자가 아닌 속성(주식별자의 일부 또는 일반속성)이 결정자 역할을 하는 함수 종속 제거
  • BCNF 정규화
    • 제 3 정규화를 진행한 테이블에 모든 결정자가 후보키가 되도록 테이블을 분해하는 것
profile
안녕하세요, 웹 개발자 이하영입니다!

0개의 댓글