자격증/SQLD

[SQLD/자격증] 정규화(Normalization) 완전 정복 제1정규형 ~ 제3정규형

2주녘 2025. 5. 25. 15:28
반응형

🧠 SQL 정규화(Normalization) 완전 정복: 제1정규형 ~ 제3정규형까지!

안녕하세요! 오늘은 SQLD 시험과 실무에서 모두 중요한 데이터베이스 정규화(Normalization) 개념에 대해 다뤄보겠습니다.

정규화란? 👉 데이터 중복을 제거하고 이상(anomaly)을 방지하여 데이터베이스 구조를 논리적으로 정리하는 과정입니다.

이번 글에서는 제1정규형부터 제3정규형까지 예제와 함께 아주 자세히 설명드릴게요. 📚✨


✅ 정규화가 필요한 이유

정규화가 되지 않은 테이블은 아래와 같은 문제를 일으킬 수 있습니다:

  • 삽입 이상: 일부 속성만 입력할 수 없음
  • 삭제 이상: 일부 데이터를 삭제하면 관련 정보도 같이 사라짐
  • 갱신 이상: 데이터를 일부 수정할 때 여러 군데 수정을 해야 함 → 무결성 깨질 수 있음

🧩 예제 테이블 (비정규형)

학번 이름 연락처 수강과목
1001 홍길동 010-1234-5678 DB, 운영체제
1002 김영희 010-2345-6789 자료구조
1003 이철수 010-3456-7890 DB, 자료구조, 통계학

위 테이블은 비정규형(unnormalized form)입니다. 왜냐하면 하나의 셀(수강과목)에 여러 개의 값이 들어있기 때문입니다. 그럼 정규화를 단계별로 진행해볼게요!


🔹 제1정규형 (1NF: First Normal Form)

정의: 모든 속성의 값이 원자값(Atomic Value)을 가져야 한다.

하나의 셀에는 하나의 값만 존재해야 함

📌 변환 후 테이블

학번 이름 연락처 수강과목
1001 홍길동 010-1234-5678 DB
1001 홍길동 010-1234-5678 운영체제
1002 김영희 010-2345-6789 자료구조
1003 이철수 010-3456-7890 DB
1003 이철수 010-3456-7890 자료구조
1003 이철수 010-3456-7890 통계학

✅ 효과

  • 원자값만 남기므로 검색이 쉬워짐
  • 하지만 여전히 중복된 정보(이름, 연락처 등)가 존재함

🔹 제2정규형 (2NF: Second Normal Form)

정의: 제1정규형을 만족하면서, 기본키의 부분집합이 결정자가 되는 종속성이 없어야 함 (부분함수 종속 제거)

즉, 복합키인 경우 부분키에만 종속된 속성 제거

📌 예시 분석

  • 기본키: (학번, 수강과목)
  • 이름, 연락처는 학번에만 종속되어 있음 → 부분함수 종속 → 2NF 위반!

📌 2NF로 분해된 테이블

학생 테이블

학번 이름 연락처
1001 홍길동 010-1234-5678
1002 김영희 010-2345-6789
1003 이철수 010-3456-7890

수강 테이블

학번 수강과목
1001 DB
1001 운영체제
1002 자료구조
1003 DB
1003 자료구조
1003 통계학

✅ 효과

  • 부분함수 종속 제거
  • 중복 데이터가 줄어듦

🔹 제3정규형 (3NF: Third Normal Form)

정의: 제2정규형을 만족하면서, 이행적 함수 종속이 없어야 함

A → B, B → C 이면 A → C는 이행적 종속. 이걸 제거해야 3NF!

📌 예시 테이블 (추가된 속성)

학번 수강과목 교수명
1001 DB 김교수
1002 자료구조 이교수
1003 통계학 박교수
  • 교수명은 수강과목에 따라 결정됨 → 학번 → 수강과목 → 교수명 → 이행적 종속!

📌 3NF로 분해된 테이블

수강 테이블

학번 수강과목
1001 DB
1002 자료구조
1003 통계학

과목 테이블

수강과목 교수명
DB 김교수
자료구조 이교수
통계학 박교수

✅ 효과

  • 이행적 종속 제거 → 유지보수 편해짐
  • 데이터 무결성 보장

📝 마무리 정리

정규형 정의 목적 제거대상
1NF 모든 속성이 원자값 셀마다 하나의 값 반복 속성 (다중값)
2NF 부분함수 종속 제거 키에 완전 종속된 속성만 유지 부분 종속
3NF 이행적 함수 종속 제거 비속성 간 종속 제거 이행 종속

정규화는 단순히 암기하는 게 아니라, 데이터를 얼마나 구조적으로 잘 관리할 수 있느냐를 보여주는 지표입니다.

반응형