✅ 정규화(Normalization) [도부이결다조]
정규화는 데이터베이스의 관계형 스키마를 잘못 설계된 상태에서 바람직한 형태로 변환하기 위한 과정입니다. 함수적 종속성 등의 이론을 활용하여 스키마를 더 작은 속성의 세트로 분해하고, 데이터 중복과 이상 현상을 최소화하여 데이터의 일관성과 효율성을 개선합니다.
정규화 과정은 여러 단계로 이루어지며, 각 단계는 특정 종속성을 제거하거나 분해하여 스키마를 개선합니다.
💡 제1 정규화(1NF) [도]
릴레이션의 모든 도메인이 원자값(atomic value)을 가지도록 분해한다. 이를 위해 다중 값 속성을 개별 속성으로 분리한다.
예를 들어, 학생 테이블에 '주소'라는 속성이 있을 경우, 주소를 도시, 도로명, 우편번호 등의 개별 속성으로 분리한다.
💡 제2 정규화(2NF) [부]
부분 함수적 종속성을 제거하여 모든 속성이 기본키에 대해서만 완전 함수적 종속성을 갖도록 한다. 이를 위해 기본키가 아닌 속성들 중에서 기본키에 완전히 종속되지 않는 부분집합을 새로운 테이블로 분리한다.
예를 들어, 학생 테이블에 학과코드와 학과명이라는 속성이 있을 경우, 학과코드에만 종속되는 학과명을 새로운 테이블로 분리한다.
💡 제3 정규화(3NF) [이]
이행적 함수 종속성을 제거하여 모든 속성이 기본키에 대해서만 이행적으로 함수적 종속성을 갖도록 한다. 이를 위해 비기본키 속성 간의 이행적인 종속성이 있는 경우, 중간에 있는 속성들을 새로운 테이블로 분리한다.
예를 들어, 주문 테이블에 고객명, 고객주소, 고객전화번호가 있을 경우, 고객명에 종속된 고객주소와 고객전화번호를 새로운 테이블로 분리한다.
💡 보이스-코드 정규형(BCNF) [결]
모든 결정자가 후보키에 속하도록 한다. 이를 위해 결정자가 후보키가 아닌 함수적 종속성이 존재하는 경우, 해당 속성을 새로운 테이블로 분리한다.
💡 제4 정규화(4NF) [다]
다중 값 종속성을 제거하여 릴레이션을 분해한다. 다중 값 종속성이란 한 릴레이션의 튜플이 다른 튜플의 다중 값에 종속되는 경우를 말한다. 이를 위해 다중 값 종속성이 있는 속성들을 새로운 테이블로 분리한다.
💡 제5 정규화(5NF) [조]
조인 종속성을 제거하여 릴레이션을 분해한다. 조인 종속성이란 한 릴레이션의 튜플이 다른 릴레이션의 조인 결과에 종속되는 경우를 말한다. 이를 위해 조인 종속성이 있는 속성들을 새로운 테이블로 분리한다.