CS/Database

[데이터베이스] 데이터베이스 정규화 (1NF ~ BCNF)

KOMAS 2025. 5. 24. 16:44
반응형

데이터베이스 설계의 핵심! 테이블의 중복을 제거하고, 무결성을 보장하기 위한 과정이 바로 정규화(Normalization)입니다.
정규화 1단계부터 5단계까지, 그리고 실무에서 어떻게 쓰이는지 한눈에 정리해보겠습니다.


🔧 1. 제1정규형 (1NF): 원자값으로 분해하라!

정의: 테이블의 모든 컬럼이 원자값(Atomic Value)을 가져야 한다.
즉, 하나의 셀에 여러 개의 값이 들어가면 안 됨!

예시 (정규화 전):

학번이름수강과목
1001 홍길동 DB, 알고리즘
 

→ 정규화 후:

학번이름수강과목
1001 홍길동 DB
1001 홍길동 알고리즘
 

포인트: 반복 컬럼이 있으면 안 됩니다.


🔧 2. 제2정규형 (2NF): 부분함수 종속 제거

조건:

  1. 1NF 만족
  2. 기본키가 복합키일 경우, 일부 키에만 종속된 속성 제거

예시 (정규화 전):

학번   과목코드   평점   학생명   학과명

 

  • 여기서 학생명, 학과명은 학번에만 종속 → 부분함수 종속 발생

 

→ 정규화 후 테이블 분리:

  • 수강(학번, 과목코드, 평점)
  • 학생(학번, 학생명, 학과코드)
  • 학과(학과코드, 학과명)

포인트: 복합키가 있는 테이블에서 속성들이 키 전체에 종속되어야 함


🔧 3. 제3정규형 (3NF): 이행함수 종속 제거

조건:

  1. 2NF 만족
  2. 속성이 다른 속성에 종속되면 안 됨

예시 (정규화 전):

학번 학생 소속학과코드 학과명
 
  • 소속학과코드 → 학과명
  • 이행함수 종속 발생 (학번 → 소속학과코드 → 학과명)

 

→ 정규화 후:

  • 학생(학번, 학생명, 소속학과코드)
  • 학과(소속학과코드, 학과명)

포인트: 속성들은 기본키에 종속되어야 한다. 기본키가 아닌 속성에 종속되면 안됨.

 


📊 정규화 요약표

정규형제거 대상핵심 조건
1NF 반복 컬럼 원자값만 존재해야 함
2NF 부분함수 종속 기본키 전체에 종속되지 않는 속성 제거
3NF 이행함수 종속 비키 → 비키 제거
BCNF 후보키 아닌 결정자 결정자는 반드시 후보키여야 함

 

반응형