제3 정규화(3NF) - 이행적 종속성 제거

CosmoNumb·2024년 11월 13일

DB

목록 보기
5/8

제 3 정규화(3NF)는 이행적 종속(Transitive Dependency)을 제거하여 데이터를 보다 효율적으로 관리하는 단계이다.

제 3 정규화의 목적

제 3 정규화는 테이블 내에서 기본 키가 아닌 컬럼이 다른 비키(non-key) 컬럼을 결정하지 않도록 만드는 것이다. 즉, 기본 키에 대해서만 종속성을 갖도록 하여 데이터의 중복을 줄이고, 이상 현상(Anomalies)을 방지하는 것이 목적이다.

이행적 종속(Transitive Dependency)이란?

  • 이행적 종속은 비키 컬럼이 또 다른 비키 컬럼을 결정하는 관계를 의미한다.
  • 예를 들어, 학생 테이블에서 기본 키가 학생 ID라고 할 때, 학생 ID → 학과 ID → 학과 이름과 같은 형태가 이행적 종속이다. 이 경우 학생 ID학과 이름을 직접 결정하지 않고, 중간의 학과 ID를 통해서 결정하는 관계가 발생한다.

제 3 정규화 과정

  1. 이행적 종속 관계가 있는 컬럼을 분리하여 새로운 테이블을 생성한다.
  2. 생성된 새로운 테이블에 기본 키를 추가하여 나머지 속성들이 오직 그 기본 키에 종속되도록 만든다.

예시

제 3 정규화 전 (이행적 종속 존재)

학생 ID학생 이름학과 ID학과 이름
101김철수D01컴퓨터공학과
102이영희D02기계공학과
103박민수D01컴퓨터공학과

위 테이블에서는 학생 ID가 기본 키다. 학과 ID학생 ID에 종속되어 있지만, 학과 이름학과 ID에 종속되는 이행적 종속이 발생하고 있다.

제 3 정규화 후 (이행적 종속 제거)

학생 테이블

학생 ID학생 이름학과 ID
101김철수D01
102이영희D02
103박민수D01

학과 테이블

학과 ID학과 이름
D01컴퓨터공학과
D02기계공학과

이제 학생 테이블에서 학과 이름 컬럼을 분리하여 학과 테이블을 생성함으로써 이행적 종속을 제거했다. 이제 학생 테이블에서는 모든 속성이 기본 키인 학생 ID에 대해서만 직접적으로 종속되어 있으며, 학과 테이블에서도 학과 ID학과 이름을 결정하게 되어 중복을 줄이고 데이터의 일관성을 유지할 수 있게 된다.

이처럼 제 3 정규화를 통해 데이터베이스가 보다 깔끔하고 효율적인 구조를 가지게 된다.

0개의 댓글