2025-11-09

오늘 배운 것

✅ 한 줄 정의

데이터의 중복을 제거하고,

데이터 간의 논리적 종속 관계를 정리하여

데이터베이스의 구조를 체계적으로 정리하는 과정

→ 결국엔 데이터 무결성(정합성)을 높이고

→ 유지 보수를 더 쉽게 만들기 위함이야!


🔁 왜 정규화가 필요할까?

문제 발생 이유
🔁 데이터 중복 같은 정보가 여러 테이블/컬럼에 존재
🐛 이상(Anomaly) 발생 삽입/수정/삭제 시 의도치 않은 오류 발생
🧹 설계가 지저분 한 테이블에 여러 역할이 섞여 있음

🔥 이상 현상의 종류 (Anomaly)

종류 설명
삽입 이상 어떤 데이터를 넣기 위해 불필요한 값도 강제로 입력해야 함
갱신 이상 중복된 데이터를 변경할 때 하나만 바꾸면 불일치 발생
삭제 이상 의도하지 않은 정보까지 삭제되는 경우

🧩 정규화 단계


1️⃣ 제1정규형 (1NF)

모든 컬럼이 원자값(Atomic Value)을 가져야 함

반복되는 그룹은 테이블을 분리해야 함!

📌 즉, 한 셀에 여러 값 금지

 hobby: "축구, 농구"
 hobby 테이블로 분리!

2️⃣ 제2정규형 (2NF)

1NF 만족 + 부분 함수 종속 제거

📌 “복합키일 때만” 신경 씀!

[수강 테이블]
PK: (학생ID, 과목ID)
점수 → ✅ OK
학생이름 → ❌ (학생ID에만 종속 → 분리해야 함!)

3️⃣ 제3정규형 (3NF)

2NF 만족 + 이행적 함수 종속 제거

📌 기본키에 종속된 컬럼이

다른 컬럼에 종속되면 분리!

[학생 테이블]
학번 (PK), 학과코드, 학과이름 ❌

→ 학과이름은 학과코드에 종속! → 학과 테이블로 분리해야 함

results matching ""

    No results matching ""