반응형
데이터베이스 설계의 핵심! 테이블의 중복을 제거하고, 무결성을 보장하기 위한 과정이 바로 정규화(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 | 후보키 아닌 결정자 | 결정자는 반드시 후보키여야 함 |
반응형
'CS > Database' 카테고리의 다른 글
[데이터베이스] 키, 슈퍼키, 후보키, 기본키 (0) | 2025.05.24 |
---|---|
[데이터베이스] 트랜잭션 고립 수준 (0) | 2022.08.23 |
[Mysql] rownum 활용 (0) | 2022.07.20 |
[데이터베이스] 무결성 제약 조건 (0) | 2022.06.15 |
[데이터 베이스] 제 4 정규형, 제 5 정규형 (0) | 2022.06.13 |