정규화는 데이터베이스 설계 과정에서 데이터의 중복을 최소화하고 무결성을 보장하기 위한 방법론입니다.
테이블 구조를 체계적으로 정리하여 불필요한 데이터 중복을 제거하고, 데이터 저장 공간을 효율적으로 사용하는 것을 목표로 합니다.
학생ID | 이름 | 수강과목
101 | Alice | 수학, 영어
102 | Bob | 과학 -> 정규화(1NF): 학생ID | 이름 | 수강과목
101 | Alice | 수학
101 | Alice | 영어
102 | Bob | 과학 1NF를 만족하고, 부분 함수 종속 제거
테이블의 모든 속성이 기본 키에 전적으로 의존해야 함
예시
학생ID | 과목코드 | 과목명
101 | MATH101 | 수학
101 | ENG102 | 영어
-> 정규화(2NF):
학생ID | 과목코드
101 | MATH101
101 | ENG102
과목코드 | 과목명
MATH101 | 수학
ENG102 | 영어
학생ID | 과목코드 | 교수ID | 교수명 -> 정규화(3NF): 학생ID | 과목코드 | 교수ID
교수ID | 교수명 정규화는 데이터베이스 설계에서 기본적인 원칙으로, 데이터 무결성을 유지하고 공간 효율성을 높이는 데 매우 중요합니다. 하지만 모든 상황에서 정규화가 최선은 아니며, 프로젝트의 특성과 성능 요구에 따라 정규화와 역정규화를 적절히 조합해야 함을 알게 되었습니다. 데이터베이스 설계의 목적과 사용 시나리오를 명확히 이해하는 것이 핵심이라고 느꼈습니다.