정규화

0

정보처리기사

목록 보기
40/100

정규화 (Normalization)


1. 정규화의 정의

  • 정규화는 관계형 데이터베이스에서 테이블을 분해하여 데이터 중복을 최소화하고, 이상 현상(삽입, 삭제, 갱신 이상)을 방지하는 과정.
  • 목적: 데이터의 무결성을 유지하고 데이터베이스를 효율적으로 관리.
  • 핵심: 테이블을 무손실 분해하여 함수적 종속 관계를 정리하는 것.

2. 정규화의 필요성

  • 이상 현상 방지: 삽입, 삭제, 갱신 이상을 해결.
  • 데이터 중복 제거: 데이터베이스의 크기를 줄이고 관리 비용을 감소.
  • 무결성 보장: 함수적 종속 관계를 유지하며 정확한 데이터를 보장.
  • 효율적인 쿼리: 불필요한 중복 데이터를 줄여 성능 향상.

3. 정규화의 단계

0. 비정규형(UNF)

  • 정규화를 하지 않은 상태. 데이터가 중복되거나 반복 그룹이 존재.

1. 제1정규형 (1NF)

  • 조건: 모든 속성의 값이 원자값(Atomic Value)이어야 함.
    즉, 각 필드에는 하나의 값만 저장.
  • 방법: 반복 그룹 제거. 데이터를 세로로 늘여 분리.
  • 예제:
    • 비정규형:
      학번   이름   과목1    과목2
      101   홍길동   수학     영어
    • 제1정규형:
      학번   이름   과목
      101   홍길동   수학
      101   홍길동   영어

2. 제2정규형 (2NF)

  • 조건:
    1. 제1정규형을 만족.
    2. 모든 비기본키 속성이 기본키에 대해 완전 함수적 종속이어야 함.
  • 방법: 부분 함수적 종속 제거.
  • 예제:
    • 제1정규형:
      주문번호   제품번호   고객번호   주소
      101       A001       C001     서울
      102       A002       C002     부산
    • 제2정규형:
      • 주문 테이블:
        주문번호   고객번호   주소
        101       C001     서울
        102       C002     부산
      • 제품 테이블:
        주문번호   제품번호
        101       A001
        102       A002

3. 제3정규형 (3NF)

  • 조건:
    1. 제2정규형을 만족.
    2. 비기본키 속성이 기본키에 대해 이행적 함수 종속이 없어야 함.
  • 방법: 이행적 종속 제거.
  • 예제:
    • 제2정규형:
      주문번호   고객번호   주소
      101       C001       서울
      102       C002       부산
    • 제3정규형:
      • 주문 테이블:
        주문번호   고객번호
        101       C001
        102       C002
      • 고객 테이블:
        고객번호   주소
        C001       서울
        C002       부산

4. BCNF (Boyce-Codd Normal Form)

  • 조건:
    • 제3정규형을 만족.
    • 모든 결정자가 후보키여야 함.
  • 방법: 결정자가 후보키가 아닌 종속 관계 제거.
  • 예제:
    • 제3정규형:
      학번   과목   교수
      101   수학   김교수
      101   영어   박교수
    • BCNF:
      • 수강 테이블:
        학번   과목
        101   수학
        101   영어
      • 교수 테이블:
        과목   교수
        수학   김교수
        영어   박교수

5. 제4정규형 (4NF)

  • 조건:
    • BCNF를 만족.
    • 다치 종속(MVD)을 제거.
  • 방법: 한 속성이 다른 두 속성에 대해 독립적으로 여러 값을 가질 경우 테이블 분리.
  • 예제:
    학생   취미       언어
    A      독서       영어
    A      독서       일본어
    A      음악       영어
    A      음악       일본어
    • 제4정규형:
      • 학생-취미 테이블:
        학생   취미
        A      독서
        A      음악
      • 학생-언어 테이블:
        학생   언어
        A      영어
        A      일본어

6. 제5정규형 (5NF)

  • 조건:
    • 제4정규형을 만족.
    • 조인 종속성(Join Dependency)을 제거.
  • 방법: 조인 작업을 통해 원래 테이블을 복구할 수 있도록 테이블 분리.
  • 예제:
    (이론적으로 복잡한 케이스로 실무에서는 거의 사용되지 않음)

4. 정규화의 결과

  • 데이터베이스를 정규화하면:

    • 데이터 중복 최소화.
    • 이상 현상 방지.
    • 데이터 무결성 유지.
    • 효율적인 데이터 관리.
  • 하지만 과도한 정규화는 성능 저하와 복잡성을 초래할 수 있음.
    따라서, 정규화와 비정규화의 균형이 중요.


5. 요약

  1. 정규화는 이상 현상을 방지하기 위한 과정.
  2. 각 단계는 함수적 종속 관계를 정리하여 데이터 중복 제거.
  3. 제1정규형부터 BCNF까지는 실무에서 자주 사용.
  4. 제4정규형과 제5정규형은 이론적 접근이 강하며 실무에서는 드물게 적용.

정규화 과정을 숙지하여 데이터베이스를 효율적으로 설계하세요!

0개의 댓글