정규화
2025. 3. 4. 16:27ㆍ자격증/정보처리기사
📌 정규화(Normalization)란?
- 데이터베이스에서 중복을 최소화하고 데이터 무결성을 보장하기 위한 과정.
- **정규형(Normal Form, NF)**은 1NF, 2NF, 3NF, BCNF, 4NF, 5NF 등의 단계가 있음.
- 핵심 목표: 데이터 중복을 제거하고, 이상(Anomaly)을 방지하여 데이터 무결성을 높이는 것.
🔹 정규형(NF)별 차이점과 적용 방법
1. 제1정규형 (1NF) → 원자성 (Atomicity)
📌 조건
- 모든 컬럼의 값이 원자적(Atomic)이어야 한다.
- 즉, 한 칸(셀)에 여러 값이 들어가면 안 됨.
✅ 적용 방법
- 다중값(Multivalued)이 들어가 있으면 각 값을 개별 행으로 분리.
🔹 예제 (1NF 위반)
고객ID강좌명강사번호
A01 | 영어회화, 토익 | P001, P002 |
🔺 강좌명과 강사번호에 여러 개의 값이 들어있음 → 1NF 위반
✅ 1NF 적용 후
고객ID강좌명강사번호
A01 | 영어회화 | P001 |
A01 | 토익 | P002 |
🔹 한 칸(셀)에 하나의 값만 포함되도록 변환하면 1NF 만족!
2. 제2정규형 (2NF) → 부분 종속 제거
📌 조건
- 1NF를 만족하면서, 기본 키의 일부가 아닌 속성은 기본 키 전체에 종속되어야 한다.
- 즉, **부분 함수 종속(Partial Dependency)**을 제거해야 함.
✅ 적용 방법
- 기본 키의 일부에만 종속되는 속성이 있으면 별도 테이블로 분리.
🔹 예제 (2NF 위반)
고객ID강좌명강사번호강사이름
A01 | 영어회화 | P001 | 홍길동 |
A02 | 토익 | P002 | 김철수 |
- 기본 키 = (고객ID, 강좌명)
- 강사번호와 강사이름은 강좌명에만 종속됨. (즉, 고객ID와 무관함) → 2NF 위반
✅ 2NF 적용 후
🔹 고객-강좌 테이블
고객ID강좌명
A01 | 영어회화 |
A02 | 토익 |
🔹 강좌 테이블
강좌명강사번호강사이름
영어회화 | P001 | 홍길동 |
토익 | P002 | 김철수 |
🔹 이제 모든 속성이 기본 키 전체에 종속되므로 2NF 만족!
3. 제3정규형 (3NF) → 이행적 종속 제거
📌 조건
- 2NF를 만족하면서, 기본 키에 직접 종속되지 않는 속성이 없어야 한다.
- 즉, 이행적 종속(Transitive Dependency) 제거가 필요함.
✅ 적용 방법
- 기본 키가 아닌 속성이 또 다른 속성을 결정하면 별도 테이블로 분리.
🔹 예제 (3NF 위반)
강좌명강사번호강사이름
영어회화 | P001 | 홍길동 |
토익 | P002 | 김철수 |
- 강사이름은 강좌명에 의해 결정되는 것이 아니라, 강사번호(P001, P002)에 의해 결정됨.
(즉, 강좌명 → 강사번호 → 강사이름이라는 이행적 종속이 발생) → 3NF 위반
✅ 3NF 적용 후
🔹 강좌 테이블
강좌명강사번호
영어회화 | P001 |
토익 | P002 |
🔹 강사 테이블
강사번호강사이름
P001 | 홍길동 |
P002 | 김철수 |
🔹 강사이름을 강사번호 테이블로 분리하면 3NF 만족!
4. BCNF (Boyce-Codd Normal Form) → 복합키 종속 제거
📌 조건
- 3NF를 만족하면서, 모든 결정자가 후보키(Super Key)여야 한다.
- 즉, 후보키가 아닌 속성이 다른 속성을 결정하면 BCNF 위반.
✅ 적용 방법
- 후보키가 아닌 속성이 또 다른 속성을 결정하면 별도 테이블로 분리.
🔹 예제 (BCNF 위반)
학생ID과목교수
S01 | 데이터베이스 | 김교수 |
S02 | 운영체제 | 이교수 |
- 기본 키 = (학생ID, 과목)
- 하지만 과목 → 교수 종속성이 존재. (즉, 과목이 교수명을 결정)
- BCNF 위반
✅ BCNF 적용 후
🔹 학생-수업 테이블
학생ID과목
S01 | 데이터베이스 |
S02 | 운영체제 |
🔹 과목-교수 테이블
과목교수
데이터베이스 | 김교수 |
운영체제 | 이교수 |
🔹 정리: 정규형 단계별 특징
정규형핵심 개념
1NF | 원자성 (한 칸에 하나의 값) |
2NF | 부분 종속 제거 (기본 키 전체에 종속) |
3NF | 이행적 종속 제거 (기본 키만이 다른 속성을 결정) |
BCNF | 모든 결정자가 후보키여야 함 |
반응형
'자격증 > 정보처리기사' 카테고리의 다른 글
정보처리기사 디자인 패턴 외우는 법 (0) | 2025.02.19 |
---|---|
C언어의 표준 출력 함수 (1) | 2024.01.10 |
제품 소프트웨어 패키징 (0) | 2023.12.12 |
기능 요구사항 vs 비기능 요구사항 (0) | 2023.04.03 |
1. 요구사항 확인 (0) | 2022.10.06 |