제2정규형 제3정규형

hoon·2024년 10월 23일

sqld

목록 보기
3/10

제2정규형(2NF)

핵심 개념: 부분 함수 종속성을 제거하는 것.

조건:

  • 1차 정규형(1NF)을 만족해야 함.
  • 기본 키의 일부에만 종속된 속성을 제거해야 함.

문제가 되는 상황:

  • 기본 키가 두 개 이상의 컬럼으로 이루어져 있을 때, 그중 하나의 컬럼에만 종속된 속성이 있으면, 이 속성은 부분 종속성을 가지게 됩니다.

예시:

주문번호상품번호상품명
10001901DB 전문가 가이드
10001876러닝 전문가 가이드
10002901DB 전문가 가이드
  • 기본 키: 주문번호 + 상품번호
  • 상품명상품번호에만 종속되어 있음.
    • 즉, 부분 함수 종속성이 존재함. 상품명이 상품번호에만 의존하고 있으므로 제2정규형을 만족하지 않음.

해결 방법:

  • 상품번호상품명을 분리해서 상품 테이블을 만들고, 부분 종속성을 제거함.

제3정규형(3NF)

핵심 개념: 이행적 함수 종속성을 제거하는 것.

조건:

  • 2차 정규형(2NF)을 만족해야 함.
  • 기본 키가 아닌 다른 속성또 다른 기본 키가 아닌 속성에 종속되면 안 됨.

문제가 되는 상황:

  • 기본 키가 아닌 어떤 속성이 또 다른 기본 키가 아닌 속성에 의존하는 경우.
    • 이 경우 이행적 종속성이 발생하게 됩니다.

예시:

직원ID부서ID부서명
10110인사부
10220재무부
10310인사부
  • 기본 키: 직원ID
  • 부서명은 기본 키인 직원ID에 직접 종속되지 않고, 중간에 부서ID를 거쳐 종속됨.
    • 즉, 직원ID → 부서ID → 부서명의 이행적 종속이 발생함.

해결 방법:

  • 부서 테이블을 따로 만들어서 부서명과 부서ID를 분리함.

정리: 제2정규형 vs 제3정규형

  1. 제2정규형(2NF): 부분 함수 종속성을 제거 (기본 키의 일부에만 의존하는 속성이 있으면 안 됨).
  2. 제3정규형(3NF): 이행적 함수 종속성을 제거 (기본 키가 아닌 속성이 다른 기본 키가 아닌 속성에 종속되면 안 됨).

두 정규형의 차이점을 기억할 때, 제2정규형은 기본 키의 일부에 종속되는 문제를 해결하고, 제3정규형은 기본 키가 아닌 속성 간의 종속성을 해결한다는 점을 꼭 기억하세요!

0개의 댓글