정규화

ideafy·2023년 11월 27일

CS

목록 보기
5/17
post-thumbnail

정규화

이상 현상을 막도록, 릴레이션을 관련 있는 속성으로만 구성하기 위해 릴레이션을 분해하는 과정.
정규화는 함수의 종속성을 판단하여 수행한다.

릴레이션을 분해할 때는 손실이 없어야 하는데, 자연 조인을 하면 원래 상태로 복원이 가능해야한다.

함수종속

X가 Y를 함수적으로 결정한다

예시)
고객 아이디: apple | 고객 이름: 정소화 | 등급: gold

  • 함수 종속 관계

    고객 아이디 -> 고객 이름
    고객 아이디 -> 등급
    고객 아이디 ->(고객 이름,등급)

  • 함수 종속 판단 시 유의 사항

  1. 속성 자체의 특성과 의미를 기반으로 함수 종속성을 판단해야함.
  2. 일반적으로 기본키와 후보키는 릴레이션의 다른 모든 속성들을 함수적으로 결점함.
  3. 기본키, 후보키가 아니어도 함수 종속 관계에서 결정자가 될 수 있음.

정규형

  • 기본 정규형

    • 제 1정규형
    • 제 2정규형
    • 제 3정규형
    • 보이스/코드 정규형
  • 고급 정규형

    • 제 4정규형
    • 제 5정규형

제 1정규형

제 1정규형을 만족하면 DB 릴레이션이 될 자격을 갖는다.

  • 속성의 투플이 원자값을 충족하면 만족한다.
    • 삽입, 갱신, 삭제 이상 발생할 수 있다.
      함수 종속 다이어그램에서 부분 함수에 종속하는 속성이 존재하면 이상현상이 발생한다.
  • 다중값 속성을 가지면 불만족한다.

제 2정규형

제 1정규형 + 부분 함수 종속 삭제

  • 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속되면 만족한다.
  • 이행적 함수 종속 존재 시 이상 현상이 발생한다.
    (이행적 함수 종속 x-> y, y->z 이면 x->z)

제 3정규형

제 2정규형 + 이행적 함수 종속 삭제

보이스/코드 정규형 BCNF

강한 제 3정규형

  • BCNF가 필요한 이유
    하나의 릴레이션에서 여러개의 후보키가 존재하는 경우 제 3정규형을 만족해도 이상 현상이 발생할 수 있다.

예) 후보키가 아닌 속성이 결정자 역할을 하는 경우

제 4정규형

보이스/코드 정규형 + 다치 속성 제거

제 5정규형

제 4정규형 + 조인 속성 제거

정규형에서의 주의 사항

마지막 단계의 정규형인 제 5정규형을 만족하는 것이 가장 좋은 방법은 아니다.
제 3정규형, BCNF까지 분해해도 이상 현상이 해결되는 경우가 많다.

profile
재밌게 공부하고 싶어요

0개의 댓글