데이터 베이스 정규화
- 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법이며 데이터를 분해하는 과정
- 목적
- 불필요한 데이터(data redundancy)를 제거해 불필요한 중복을 최소화한다.
- 삽입, 갱신, 삭제 시 발생할 수 있는 각종 이상 현상(Anomaly)를 방지하기 위해서, 테이블의 구성을 논리적이로 직관적으로 한다.
정규화 원칙
- 정보의 무손실
- 분해된 릴레이션이 표현하는 정보는 분해되기 전의 정보를 모두 포함해야 한다.
- 최소 데이터 중복
- 이상 현상을 제거, 데이터 중복을 최소화
- 분리의 원칙
- 하나의 독립된 관계성은 하나의 독립된 릴레이션으로 분리해서 표현
반정규화
- 반정규화(De-normalization)은 시스템의 성능 향상을 위해 정규화된 데이터 모델을 통합하는 작업으로, 의도적으로 정규화원칙을 위배하는 행위이다. 따라서 정규화와 반정규화는 Trade-off 관계에 있다.
- 반정규화의 종류로는 테이블 통합/분할/추가, 중복 속성 추가 등이 있다.
- 반정규화를 수행하면 테이블이 단순해지고 관리 효율성이 증가하지만, 데이터 일관성이나 무결성이 보장되지 않을 수 있다. 의도적으로 중복을 생성하여 검색 기능은 향상되지만, 갱신, 삭제 등의 성능은 낮아진다.
- 반 정규화의 대상
- 수행 속도가 많이 느린 경우
- 테이블의 조인(JOIN) 연산을 지나치게 사용하여 데이터를 조회하는 것이 기술적으로 어려운 경우
- 테이블에 많은 데이터가 있고, 다량의 범위 혹은 특정 범위를 자주 처리해야 하는 경우
제 1 정규화 (1NF)
- 1정규화는 모든 속성이 도메인 원자값으로 구성되어 있도록 바꾸는 과정을 의미
- 복수의 속성을 갖는 속성을 분리
- 기존의 테이블과 one to many 관계를 형성