💡 2. 정규화를 하는 이유

이유 설명
데이터 중복 최소화 동일한 정보가 여러 테이블에 반복 저장되면 업데이트가 어려움
데이터 일관성 유지 중복된 데이터 중 하나만 변경되어도 불일치 발생 가능
데이터 무결성 확보 잘못된 데이터 삽입/수정/삭제 방지
관리 용이성 향상 구조가 명확해져 쿼리, 유지보수, 확장이 쉬워짐

⚖️ 4. 정규화의 단점

단점 설명
JOIN이 많아짐 테이블이 여러 개로 나뉘므로 쿼리가 복잡
성능 저하 가능성 읽기(SELECT) 시 여러 테이블을 합쳐야 해서 속도 저하 가능
실무에서는 부분정규화(De-normalization) 성능을 위해 일부 중복 허용하기도 함

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

모든 속성(컬럼)이 원자값(Atomic Value)을 가져야 한다.

학생ID 이름 수강과목
1 홍길동 DB, 알고리즘
2 김철수 자료구조

수강과목에 여러 값(DB, 알고리즘)이 들어있어요. 즉, 하나의 칸에 여러 값이 들어가 있음 → 원자성이 깨졌음.

학생ID 이름 수강과목
1 홍길동 DB
1 홍길동 알고리즘
2 김철수 자료구조

→ 이제 각 속성이 하나의 값만 가지죠.


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

1NF를 만족하면서, 기본키의 부분집합이 결정자가 되지 않도록 한다. 즉, 부분 함수 종속 제거.

학생ID 과목ID 학생이름 과목이름 점수

→ 기본키는 (학생ID, 과목ID) 하지만 학생이름학생ID에만 종속, 과목이름과목ID에만 종속 → 부분 종속 발생

✅ 정규화 후 (2NF)