데이터베이스 정규화

gusud·2019년 11월 11일
2

정규화 (Normalization)

중복을 최소화하도록 데이터를 구조화하는 프로세스
가능한 한 중복을 제거하여 삽입, 삭제, 갱신 이상(Anomaly)의 발생 가능성을 줄이는 것

  • 이상 (Anomaly)
    테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복으로 인해 테이블 조작 시 문제가 발생하는 현상

제 1정규형 (1NF)

테이블에 속한 모든 속성의 도메인이 원자 값만으로 되어 있는 정규형
= 모든 컬럼 값이 1개씩만 있어야 한다

image.png

제 2정규형 (2NF)

제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형

  • 함수적 종속 (X -> Y)
    X의 값에 따라 Y값이 결정되는 것
    X는 결정자, Y는 종속자라 함
    (ex : 학번 -> 이름)
  • 완전 함수적 종속
    X의 값이 여러 요소일 경우, 즉 {X1, X2} -> Y 일 경우
    X1, X2 중 하나만으로 Y의 값을 결정하면 부분 함수적 종속.
    아니면 완전 함수적 종속
    예를 들어..
    {주문번호, 제품번호} -> 주문수량 이므로, 완전 함수적 종속
    주문번호 -> 주소 이므로, 부분 함수적 종속 제품번호 속성과 주소 속성이 다른 테이블의 속성이 되도록 테이블을 분해하여 만족할 수 있다.

제 3정규형 (3NF)

제 2정규형이고 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형

  • 이행적 함수적 종속
    A -> B이고 B -> C일 때 A -> C를 만족하는 관계
    예를 들어..
    주문번호 -> 고객번호 이고, 고객번호 -> 주소 이므로, 주문번호 -> 주소 는 이행적 함수적 종속을 만족 (주문번호 | 고객번호 | 주소) 구조의 테이블을 (주문번호 | 고객번호), (고객번호 | 주소)로 분리하여 제 3정규형을 만들 수 있다.

BCNF

모든 결정자가 후보키인 경우
image.png
<수강_교수> 테이블에서 BCNF를 만족하지 못하게 하는 속성 (담당교수 -> 과목명)을 분리하여 BCNF 를 만들 수 있다.

image.png

제 4정규형 (4NF)

테이블에 다중값 종속 A↠B가 존재할 경우 R의 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형

제 5정규형 (5NF)

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

0개의 댓글