반응형
"데이터베이스를 설계할 때 왜 테이블을 여러 개로 쪼개야 할까요?"
"삽입 이상, 삭제 이상, 갱신 이상이 발생하는 원인과 1NF, 2NF, 3NF의 분해 조건을 깔끔하게 구분하는 방법은 무엇일까요?"
잘못 설계된 데이터베이스 테이블은 중복 데이터를 양성하고, 갱신이나 삭제 시 데이터 불일치를 일으킵니다. 이러한 부작용을 이상 현상(Anomaly)이라 부르며, 이를 해결하기 위해 테이블을 논리적으로 분해하는 과정을 정규화(Normalization)라고 합니다.
이번 글에서는 3대 이상 현상의 종류와 1정규형(1NF)부터 3정규형(3NF)까지의 단계별 정규화 과정을 핵심 시험 포인트 위주로 완벽 정리해 드립니다!
1. 정규화의 필요성과 3대 이상 현상(Anomaly)
정규화를 거치지 않은 릴레이션에는 데이터 중복이 발생하여 조작 시 다음과 같은 3가지 이상 현상이 나타납니다.

3대 이상 현상 세부 분석
- 삽입 이상 (Insertion Anomaly): 새 데이터를 삽입할 때 원하지 않는 불필요한 값까지 강제로 입력해야 하거나, 기본키가 없어서 데이터 입력이 불가능한 현상입니다.
- 예시: 수강 신청을 하지 않은 신입생 정보를 추가하려 할 때, 기본키인 '과목코드'가 NULL이 되어 학번 등록 자체가 불가능해지는 경우
- 삭제 이상 (Deletion Anomaly): 특정 튜플을 삭제할 때 그 데이터와 상관없는 유용한 연관 정보까지 원치 않게 연쇄 삭제되는 현상입니다.
- 예시: 어떤 과목을 수강 취소하여 해당 레코드를 지웠는데, 그 과목을 수강하던 학생의 인적사항까지 함께 삭제되는 경우
- 갱신 이상 (Modification/Update Anomaly): 중복 저장된 데이터 중 일부만 수정하여 데이터의 일관성(Consistency)이 깨지고 정보 불일치가 발생하는 현상입니다.
- 예시: 특정 학생의 전화번호가 변경되어 10개의 레코드 중 8개만 변경하고 2개를 누락하여 데이터가 서로 달라지는 경우
2. 단계별 정규화 과정 (1NF -> 2NF -> 3NF)
정규화는 데이터 중복을 최소화하기 위해 함수적 종속성(Functional Dependency)을 기반으로 릴레이션을 단계적으로 분해하는 과정입니다.

1.1단계: 제1정규형 (1NF - 원자값) 조건:
- 핵심 규칙: 릴레이션에 속한 **모든 속성의 도메인이 원자값(Atomic Value)**으로만 구성되어야 합니다.
- 해결 방법: 한 컬럼에 여러 개 들어있던 다중값(Repeating Group)을 분리하여 속성을 단일값으로 구성합니다.
2.2단계: 제2정규형 (2NF - 부분 함수 종속 제거) 조건:
- 핵심 규칙: 1NF를 만족하고, 기본키가 아닌 모든 속성이 기본키에 **완전 함수 종속(Full Functional Dependency)**되어야 합니다.
- 해결 방법: 복합 기본키(2개 이상의 속성으로 구성된 기본키)의 일부에만 종속되는 **부분 함수 종속성(Partial Functional Dependency)**을 제거하여 별도의 테이블로 분리합니다.
3.3단계: 제3정규형 (3NF - 이행적 함수 종속 제거) 조건:
- 핵심 규칙: 2NF를 만족하고, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속(Transitive Functional Dependency)을 하지 않아야 합니다.
- 해결 방법: A -> B 이고 B -> C 일 때 A -> C 가 성립하는 구조에서 B -> C 관계를 별도 테이블로 분리해 냅니다.
💡 한눈에 보는 정규화 단계별 암기 규칙 (시험 필수!)
정규화 단계와 암기 공식은 시험에 단골로 출제되는 핵심 파트입니다!
| 정규형 | 주요 조건 및 제거 대상 | 암기 공식 키워드 |
| 1NF | 도메인이 원자값으로 구성 (다중값 제거) | 도 |
| 2NF | 부분 함수 종속 제거 (완전 함수 종속) | 부 |
| 3NF | 이행적 함수 종속 제거 | 이 |
| BCNF | 결정자이면서 후보키가 아닌 것 제거 | 보 |
| 4NF | 다치 종속(Multi-valued Dependency) 제거 | 다 |
| 5NF | 조인 종속(Join Dependency) 제거 | 조 |
정규화 순서 암기 팁: "도 - 부 - 이 - 보 - 다 - 조"
(도메인 원자값 -> 부분 함수 종속 제거 -> 이행적 함수 종속 제거 -> BCNF 결정자 후보키 -> 다치 종속 제거 -> 조인 종속 제거)
📌 핵심 기출 포인트 체크
- 이상 현상 구분: 불필요한 정보가 함께 지워지는 것은 삭제 이상, 입력 시 NULL 문제가 생기는 것은 삽입 이상입니다.
- 2NF 분해 대상: 기본키가 복합키일 때 일부 속성에만 종속되는 현상을 해결하는 단계가 2NF입니다.
- 3NF 핵심 키워드: A -> B, B -> C 형태의 간접적 종속 관계인 '이행적 함수 종속'이 나오면 무조건 제3정규형(3NF) 문제입니다.
반응형
'전공과목 > 데이터베이스' 카테고리의 다른 글
| [데이터베이스] SQL 기초 및 핵심 문법: DDL, DML, DCL/TCL 완벽 정리 (0) | 2026.09.05 |
|---|---|
| [데이터베이스] 정규화(Normalization) 2: BCNF, 4NF, 5NF 및 역정규화(De-normalization) 완벽 정리 (0) | 2026.09.04 |
| [데이터베이스] 관계대수: 순수 관계 연산자와 일반 집합 연산자 개념 및 기출 풀이 완벽 정리 (0) | 2026.09.04 |
| [데이터베이스] 무결성 제약조건과 무결성 종류: 개체, 참조, 도메인 무결성 및 외래키 옵션 완벽 정리 (0) | 2026.09.03 |
| [데이터베이스] 관계형 데이터베이스(RDB) 모델: 테이블, 차수와 카디널리티, 키(Key) 완벽 구분 (0) | 2026.09.03 |