◾ 정규화가 필요한 이유
- 한 릴레이션에 여러 엔티티의 애트리뷰트들을 혼합하게 되면, 정보가
중복 저장
되고, 저장 공간 낭비
를 하게됨
- 그리고 중복된 정보로 인해
이상 현상
발생
- 동일 정보를 한 릴레이션에는 변경하고, 나머지 릴레이션은 변경하지 않은 경우
🔎 이상 현상 종류
- 원하지 않는 값이 연쇄적으로 삭제되거나 수정 또는 삽입되는 현상
삽입 이상
: 원하지 않는 자료가 삽입되거나, 자료가 부족해 삽입이 되지 않는 상황
삭제 이상
: 원하지 않는 정보 손실 발생하는 상황
갱신 이상
: 정확하지 않은 정보가 갱신되어 정확한 정보 파악 확인 못하는 상황
💬 정규화
관계형 데이터 베이스에서 중복을 최소화하기 위해 데이터를 구조화하는 작업
◾ 제 1 정규형 : 도메인의 제약조건
- 애트리뷰트의 도메인이 오직 원자값만 포함하고, 튜플의 모든 애트리뷰트가 도메인에 속하는 하나의 값을 가져야 만족
◾ 제 2 정규형 : 부분적 함수종속 제거
- 모든 비주요 애트리뷰트들이 주요 애트리뷰트에 대해 완전 함수적 종속일 때 만족
◾ 제 3 정규형 : 이행적 함수종속 제거
- 비 주요 애트리뷰트도 기본키에 대해 이행적으로 종속되지 않을 때 만족
X -> Y
이며 Y -> Z
일 경우
◾ BCNF 정규형
💬 정규화의 장점과 단점
◾ 장점
- 이상 현상 방지
- 중복 제거, 불필요한 데이터 최소화
- 데이터베이스 구조 확장 용이
◾ 단점