정규화의 배경
한 릴레이션(테이블)에 여러 엔티티(정보를 저장하고 관리하기 위한 집합적인 것)의 애트리뷰트(칼럼)들이 혼합하게 되면 정보가 중복 저장되며, 저장공간이 낭비하게 된다.
중복된 정보로 인해 이상 현상(Anomaly)이 발생하게 된다
갱신 이상
- 삽입 이상 : 불필요한 정보를 함께 저장하지 않고서는 어떤 정보를 저장하는것이 불가능하다
- 삭제 이상 : 필요한 정보를 함께 삭제하지 않고서는 어떤 정보를 삭제하는 것이 불가능하다
- 갱신 이상 : 반복된 데이터 중에 일부를 갱실 할 시 데이터의 불일치가 발생한다
정규화 작업
정규화 작업이란 관계형 데이터베이스에서 중복을 최소화하기 위해 데이터를 구조화하는 작업이다
- 제 1 정규화
: 속성의 도메인이 오직 원자값만을 포함
- 제 2 정규화
: 부분적 함수 종속을 제거 (기본키가 아닌 다른 속성에 종속되거나 기본키를 구성하는 속성 주 일부만 종속)
- 제 3 정규화
: 이행적 함수 종속을 제거 (X -> Y, Y -> Z, X -> Z 가 성립 할 때)
정규화 장점
1. 이상현상(Anomaly)을 해결할 수 있다
2. 데이터의 중복을 최소화 할 수 있다.
정규화 단점
1. 테이블의 분해로 인해 JOIN 연산이 많아진다.
반정규화
JOIN으로 인한 성능저하가 나타나는 경우 반정규화를 하는 전략이 필요하다
반정규화를 과도하게 적용하다 보면 데이터의 무결성이 깨질 수 있으므로 주의가 필요하다
'프로그래밍 > DB' 카테고리의 다른 글
관계 (0) | 2021.09.15 |
---|---|
DDL과 DML, DCL, TCL (0) | 2021.09.14 |
인덱스(Index) (0) | 2021.09.14 |
정규화(Normalization)와 반정규화(De-Normalization) (0) | 2021.09.09 |
트랜잭션 이해 2 - 격리, 단계, 수준 (0) | 2021.09.07 |