정규화 (Normalization)
- 하나의 릴레이션에 하나의 의미만 존재할 수 있도록 릴레이션을 분해해 나가는 과정
- 저장 공간 최소화, 자료 구조 안정화, 이상(Anomaly) 현상 방지
제 1정규형 (1NF)
제 2정규형 (2NF)
- 제 1정규형 만족
- 완전 함수 종속 (부분 함수 종속 제거)
제 3정규형 (3NF)
BCNF (Boyce/Code NF)
- 제 3정규형 만족
- 릴레이션의 모든 결정자가 후보키에 해당
제 4정규형 (4NF)
- BCNF 만족
- 다치 종속성 제거
- 특정 속성 값에 따라 선택적인 속성을 분리하는 과정
제 5정규형 (5NF)
- 제 4정규형 만족
- 후보키를 통하지 않은 조인 종속 관계 제거
반정규화 (De-Normalization)
- 정규화된 데이터 모델을 의도적으로 정규화 원칙에 위배하여 통합, 중복, 분리 수행
테이블 통합
- 두 개의 테이블이 조인되는 경우가 많아 하나의 테이블로 합쳐 사용하는 것이 성능 향상에 도움이 되는 경우
테이블 분할
- 수직(속성 기준) 또는 수평(레코드 기준) 분할
중복 테이블 추가
- 정규화로 인해 수행 속도가 느려진 경우
- 많은 범위의 데이터를 자주 처리해야하는 경우
- 특정 범위의 데이터만 자주 처리해야하는 경우
중복 속성 추가
- 조인이 자주 발생하는 속성인 경우
- 접근 경로가 복잡한 속성인 경우
- 액세스의 조건으로 자주 사용되는 속성인 경우