- RDBMS에서 중복 최소화를 위해 테이블 분리와 같이 데이터를 구조화하는 작업
- 불필요한 데이터 제거를 통한 데이터 무결성 유지 및 DB 저장 용량 줄이기
- CRUD시 생길 각종 이상현상을 방지
- 원자성
- 테이블 컬럼은 하나의 값(Atomic Value)만 갖도록 테이블을 분리하는 것
- 하나의 컬럼이 다중 값을 가지거나, 하나의 로우가 반복그룹을 가질경우 제 1 정규화 위배
- 예시
- 정규화 전
이름 수강과목 ----------------- 김민기 수학 오민혁 과학,국어 이진호 영어
- 정규화 후
이름 수강과목 ----------------- 김민기 수학 오민혁 과학 오민혁 국어 이진호 영어
- 완전 함수 종속
- 기본키를 제외한 모든 속성은 기본키 일부가 아닌 모든 기본키에 종속되어야 한다. 즉 기본키와 각 속성은 1대1 관계여야 한다
- 이행 종속
- 기본키가 아닌 모든 속성간에는 서로 종속 될 수 없다
- 서로 종속되는 속성끼리 따로 테이블 분리 필요
- 장점
- 소수의 테이블에 필드가 전부 들어가 있어 Join 연산이 줄어들기에 코드 복잡성이 줄어들고 빠른 조회 가능
- 단점
- DB 구조를 봤을 때, 목적 단위로 명확히 테이블 분리가 안 이뤄져 DB 구조 이해가 어렵다
- 중복된 불필요한 데이터 발생으로 데이터 무결성이 깨지고 3가지 이상 현상(Anomaly) 발생
- 삽입 이상 : 데이터 삽입시 의도치 않은 값들을 함께 삽입하지 않으면 데이터 저장이 불가능한 현상 (ex. NULL)
- 갱신 이상 : 데이터 갱신시 중복된 데이터 중 일부만 갱신할 때 데이터 불일치가 발생되는 현상
- 삭제 이상 : 현재 필요한 데이터를 삭제하지 않고서는 어떤 데이터를 삭제하는 것이 불가능한 현상