
✅ 정규화란?
정규화(Normalization)는 데이터베이스 설계 시 데이터 중복을 최소화하고, 이상 현상(삽입·삭제·갱신 이상)을 방지하기 위한 과정입니다.
복잡하고 중복된 테이블을 단계적으로 나누어 더 안정적이고 논리적인 구조로 만들어주는 과정이죠.
✅ 제1정규형 (1NF)
🔹 조건: 반복 속성 제거, 모든 속성은 원자값(Atomic value)
📌 예시 (1NF 위반)
| 학생ID | 이름 | 수강과목 |
|---|---|---|
| 101 | 홍길동 | DB, OS |
→ 수강과목이 복수 개이므로 1NF 위반
✅ 1NF 적용 후
| 학생ID | 이름 | 수강과목 |
|---|---|---|
| 101 | 홍길동 | DB |
| 101 | 홍길동 | OS |
✅ 제2정규형 (2NF)
🔹 조건: 1NF 만족 + 부분 함수 종속 제거
📌 예시
| 학번 | 과목코드 | 학생이름 | 성적 |
|---|---|---|---|
| 101 | C001 | 홍길동 | 90 |
→ 학생이름은 과목코드와 무관 → 부분 종속 → 2NF 위반
✅ 2NF 적용 후
- 성적 테이블: (학번, 과목코드, 성적)
- 학생 테이블: (학번, 학생이름)
✅ 제3정규형 (3NF)
🔹 조건: 2NF 만족 + 이행 함수 종속 제거
📌 예시
| 사번 | 부서번호 | 부서명 |
|---|---|---|
| 1001 | D01 | 영업부 |
→ 사번 → 부서번호 → 부서명은 이행 종속 → 3NF 위반
✅ 3NF 적용 후
- 직원 테이블: (사번, 부서번호)
- 부서 테이블: (부서번호, 부서명)
✅ 보이스-코드 정규형 (BCNF)
🔹 조건: 모든 결정자는 반드시 후보키여야 한다
📌 예시
| 교수 | 과목 | 강의실 |
|---|---|---|
| 홍길동 | DB | 201호 |
→ 교수 → 과목 / 과목 → 강의실
→ 교수는 후보키가 아닐 수 있음 → BCNF 위반 가능성
📌 참고: 3NF까지 만족해도 BCNF는 위반할 수 있습니다.
🧪 실전 기출형 문제
문제:
다음 릴레이션은 학생의 수강 정보를 저장한 것이다.
이 릴레이션이 제1정규형을 만족하지 못하는 이유를 쓰시오.
| 학번 | 이름 | 전화번호 | 수강과목 |
|---|---|---|---|
| 1001 | 홍길동 | 010-1111-2222 | DB, OS |
✅ 정답
수강과목에 복수의 데이터(DB, OS)가 포함되어 있어 원자값이 아님
→ 반복 속성이 존재하여 제1정규형 위반
📌 핵심 요약 정리
| 정규형 | 조건 | 제거 대상 |
|---|---|---|
| 1NF | 모든 속성은 원자값 | 반복 속성 |
| 2NF | 1NF 만족 + 부분 함수 종속 제거 | 부분 종속 |
| 3NF | 2NF 만족 + 이행 함수 종속 제거 | 이행 종속 |
| BCNF | 모든 결정자는 후보키여야 함 | 후보키가 아닌 결정자 |
📌 정보처리기사 실기 – 정규화 실전 문제 풀이 (1탄)
🧪 문제 1
다음 릴레이션은 학생의 수강 정보를 나타낸 것이다.
이 릴레이션은 어떤 정규형(NF)을 만족하지 못하는가?
| 학번 | 이름 | 수강과목 |
|---|---|---|
| 1001 | 홍길동 | DB, OS |
✍️ 보기
A. 제1정규형 (1NF)
B. 제2정규형 (2NF)
C. 제3정규형 (3NF)
D. BCNF
✅ 정답: A. 제1정규형 (1NF)
💡 해설
수강과목 속성에 복수의 값(DB, OS)가 포함되어 있음 → 원자값 위반
즉, 반복 속성이 존재하여 제1정규형 위반
🧪 문제 2
다음 릴레이션에서 ‘학생이름’은 어떤 종속성을 위반하는가?
| 학번 | 과목코드 | 학생이름 | 성적 |
|---|
- 기본키: (학번, 과목코드)
- 학생이름은 학번에만 종속
✍️ 보기
A. 부분 함수 종속
B. 이행 함수 종속
C. 다치 종속
D. 조인 종속
✅ 정답: A. 부분 함수 종속
💡 해설
학생이름은 복합키 전체가 아닌 학번에만 종속
→ 부분 함수 종속 → 제2정규형 위반
🧪 문제 3
다음 릴레이션은 2NF는 만족하나, 3NF는 만족하지 못한다.
그 이유는 무엇인가?
| 사번 | 부서번호 | 부서명 |
|---|---|---|
| 1001 | D01 | 영업부 |
- 기본키: 사번
- 사번 → 부서번호 → 부서명
✍️ 보기
A. 이행 함수 종속 존재
B. 부분 함수 종속 존재
C. 반복 속성 존재
D. 다치 종속 존재
✅ 정답: A. 이행 함수 종속 존재
💡 해설
사번 → 부서번호 → 부서명
일반 속성이 다른 일반 속성에 종속된 구조 → 이행 함수 종속
→ 제3정규형 위반
📌 핵심 요약 정리
| 위반 정규형 | 주요 위반 요소 | 대표 키워드 |
|---|---|---|
| 1NF | 원자값 위반, 반복 속성 존재 | 복수 값, 쉼표 |
| 2NF | 부분 함수 종속 | 복합키 일부에만 종속 |
| 3NF | 이행 함수 종속 | A → B → C 구조 |