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): 부분함수 종속 제거
조건:
- 1NF 만족
- 기본키가 복합키일 경우, 일부 키에만 종속된 속성 제거
예시 (정규화 전):
학번 | 과목코드 | 평점 | 학생명 | 학과명 |
- 여기서 학생명, 학과명은 학번에만 종속 → 부분함수 종속 발생
→ 정규화 후 테이블 분리:
- 수강(학번, 과목코드, 평점)
- 학생(학번, 학생명, 학과코드)
- 학과(학과코드, 학과명)
✅ 포인트: 복합키가 있는 테이블에서 속성들이 키 전체에 종속되어야 함
🔧 3. 제3정규형 (3NF): 이행함수 종속 제거
조건:
- 2NF 만족
- 속성이 다른 속성에 종속되면 안 됨
예시 (정규화 전):
학번 | 학생 | 소속학과코드 | 학과명 |
- 소속학과코드 → 학과명
- 이행함수 종속 발생 (학번 → 소속학과코드 → 학과명)
→ 정규화 후:
- 학생(학번, 학생명, 소속학과코드)
- 학과(소속학과코드, 학과명)
✅ 포인트: 속성들은 기본키에 종속되어야 한다. 기본키가 아닌 속성에 종속되면 안됨.
📊 정규화 요약표
정규형제거 대상핵심 조건
1NF | 반복 컬럼 | 원자값만 존재해야 함 |
2NF | 부분함수 종속 | 기본키 전체에 종속되지 않는 속성 제거 |
3NF | 이행함수 종속 | 비키 → 비키 제거 |
BCNF | 후보키 아닌 결정자 | 결정자는 반드시 후보키여야 함 |
반응형