정규화, 반정규화
- 하나의 종속성이 하나의 릴레이션에 표현될 수 있도록 분해해가는 과정
- 데이터베이스의 논리적 설계 단계에서 수행
정규화의 목적
- 데이터 구조의 안전성 및 무결성을 유지
- 어떠한 릴레이션이라도 데이터베이스 내에서 표현 가능하게 만듦
- 효과적인 검색 알고리즘 생성 가능
- 데이터 중복을 배제해 이상(Anomaly)의 발생 방지 및 자료 저장 공간의 최소화
- 개체와 속성의 누락 여부 확인 가능
- 데이터 삽입 시 릴레이션을 재구성할 필요성을 줄임
이상(Anomaly)의 개념 및 종류
- 정규화를 거치지 않아 데이터베이스 내에 데이터들이 불필요하게 중복되어 릴레이션 조작 시 예기치 못하게 발생하는 곤란한 현상
삽입 이상(Insertion Anomaly)
- 릴레이션에 데이터를 삽입할 때 의도와 상관없이 원하지 않은 값들도 함께 삽입되는 현상
삭제 이상(Deletion Anomaly)
- 릴레이션에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
갱신 이상(Update Anomaly)
- 릴레이션에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 모순이 생기는 현상
정규화의 원칙
- 정보의 무손실
- 분리의 원칙
- 데이터의 중복성 감소
정규화 과정
1NF(제1정규형)
- 릴레이션에 속한 모든 도메인(Domain)이원자 값(Atomic Value)만으로 되어 있는 정규형
2NF(제2정규형)
- 릴레이션 R이 1NF고, 기본키가 아닌 모든 속성이 기본키에 대해 완전 함수적 종속을 만족하는 부분적 함수 종속을 제거한 정규형
3NF(제3정규형)
- 릴레이션 R이 2NF고 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수 종속 관계를 만족하지 않는 정규형
- A -> B 이고 B -> C일 때 A -> C를 만족하는 관계(이행 규칙)
BCNF(Boyce-Codd 정규형)
- 릴레이션 R에서 모든 결정자가 후보키인 정규형
- 모든 BCNF가 종속성을 보존하는 것은 아님(강한 제 3정규형, 보이스/코드 정규형)
4NF(제4정규형)
- 릴레이션 R에 다치 종속이 성립하는 경우 R의 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
5NF(제5정규형)
- 릴레이션 R의 모든 조인 종속이 R의 후보키를 통해서만 성립되는 정규형
반정규화 개념
- 시스템의 성능 향상, 개발 및 운영의 편의성 등을 위해 정규화된 데이터 모델을 통합, 중복, 분리하는 과정으로 의도적으로 정규화 원칙을 위배하는 행위
- 그러나 데이터의 일관성 및 정합성이 저하될 수 있음
반정규화 방법
테이블 통합
- 1:1 관계 | 1:N 관계 | 슈퍼타입/서브타입 {테이블 통합}
테이블 분할
- 수평 분할, 수직 분할 -> 기본키의 유일성 관리가 어려워짐
중복 테이블 추가
- 집계 테이블 | 집행 테이블 | 특정 부분만을 포함하는 테이블 {추가}
중복 속성 추가
출처: https://m.blog.naver.com/wook2124/222108772955