1 분 소요

정규화(Normalization)

데이터베이스에서 중복을 최소화하고 데이터의 구조를 조직화하여 데이터의 일관성과 효율성을 향상시키는 프로세스

정규화의 주요 목적은 데이터베이스의 구조를 조직화하여 데이터의 중복을 최소화하고 데이터의 일관성, 무결성, 효율성을 확보하는 것입니다. 이를 통해 데이터 이상 현상을 방지하고 데이터베이스를 효율적으로 설계할 수 있습니다.

  • 중복 최소화

    • 데이터 중복을 줄여서 데이터 일관성을 유지하고 데이터 변경 시 한 곳만 수정하면 되도록 합니다.
  • 데이터 일관성 및 무결성

    • 데이터 이상 현상을 방지하여 삽입, 갱신, 삭제 시 데이터 일관성을 유지하고 데이터의 무결성을 보장합니다.
  • 데이터 이상 현상 방지

    • 삽입, 갱신, 삭제 시 발생할 수 있는 이상 현상을 예방하여 데이터의 일관성을 유지합니다.


제1 정규형 (1NF)

테이블의 컬럼이 원자값(Atomic Value, 하나의 값)을 갖도록 테이블을 분해하는 것

image

‘주문목록’ 테이블에서는 하나의 제품에 여러 개의 주문 관련 정보 (주문번호, 고객번호, 주소, 주문수량)가 존재하기 때문에 제 1정규형이 아니다. 1차 정규화 과정으로 생성된 ‘제품주문’ 테이블의 기본키는 (주문번호, 제품번호)이다.

주문번호, 제품번호 --> 고객번호, 주소, 주문수량
주문번호 --> 고객번호, 주소
고객번호 --> 주소 


제2 정규형 (2NF)

부분 함수 종속성이 제거되어 모든 속성이 기본 키에 완전히 종속되는지 확인하는 것

image

제 2정규화 과정을 거쳐 생성된 ‘주문’ 테이블의 기본키는 주문번호이고 ‘주문’ 테이블에는 아직도 다음과 같은 함수적 종속들이 존재한다.

주문번호 --> 고객번호, 주소
고객번호 --> 주소 


제3 정규형 (3NF)

이행 함수 종속성이 제거되어 모든 속성이 직접 기본 키에 종속되는지 확인하는 것

image

‘주문’ 테이블에서 고객번호가 주문번호에 함수적 종속이고 주소가 고객번호에 함수적 종속이므로 주소는 기본키인 주문번호에 대해 이행적 함수적 종속을 만족한다.

즉 [주문번호 -> 고객번호]이고 [고객번호 -> 주소]이므로 [주문번호 -> 주소]는 이행적 함수적 종속이 된다.

따라서 ‘주문’ 테이블은 제 3정규형이 아니다.


BCNF

모든 결정자가 후보 키인지 확인하는 것

image

‘수강교수’ 테이블은 다음과 같은 함수적 종속 관계를 갖습니다

  1. (학번, 과목명) → 담당교수
  2. (학번, 담당교수) → 과목명
  3. (담당교수) → 과목명

이때, ‘수강교수’ 테이블의 후보키는 (학번, 과목명)과 (학번, 담당교수)입니다. 그러나 ‘수강교수’ 테이블에서는 후보키가 아닌 속성이 결정자로 사용되어 함수적 종속 [담당교수 → 과목명]이 존재합니다. 이는 담당교수가 ‘수강교수’ 테이블에서 후보키가 아니기 때문에, ‘수강교수’ 테이블은 BCNF(Boyce-Codd 정규형)를 만족하지 않습니다.


제4 정규화 (4NF)

다치 종속성이 제거되어 모든 속성이 후보 키에 종속되는지 확인합니다.


제5 정규화 (5NF)

조인 종속성이 제거되어 각 테이블이 후보 키에 종속되는지 확인합니다.

댓글남기기