이상(Anomaly)
정규화 되지 않은 데이터베이스에서 데이터 중복으로 인해 발생하는 데이터 불일치 현상을 말한다.
- 갱신 이상: 반복된 데이터 중에 일부만 갱신할시 발생하는 데이터 불일치
- 삽입 이상: 불필요한 정보를 함께 저장하지 않고서는 어떤 정보를 저장하는 것이 불가능
- 삭제 이상: 필요한 정보를 함께 삭제하지 않고 서는 어떤 정보를 삭제한는 것이 불가능
이러한 이상현상을 정규화를 통해 방지할 수 있다.
정규화란
관계형 데이터에스에서 중복을 최소화하기 위해 데이터를 구조화하는 작업이다. 데이터의 중복은 저장공간을 낭비하고, 어떤 한 데이터가 갱신됐을 때 다른 데이터에는 반영되지 않는 문제가 발생할 수 있다. 이러한 문제를 해결하기 위해 단계를 나누어 정규화 과정을 거쳐 정규화를 진행한다.
제 1정규화
테이블 컬럼이 원자값(하나의 값)을 갖도록 테이블을 분해하는 것
제 2정규화
제 1정규화를 진행한 테이블에 대해 오나전 함수 종속을 만족하도록 테이블을 분해. 쉽게말하면 기본키의 부분 집합이 결정자가 되지 않도록 테이블을 분리하는 것
제 3정규화
제 2정규화 후, 이행적 종속을 없애도록 테이블을 분해하는 것.
BCNF 정규화
제3 정규화를 진행한 테이블에 대해 모든 결정자가 후보키가 되도록 테이블을 분해하는 것
정규화의 장점
- 데이터 구조의 안정성과 무결성 유지
- 저장 공간 최소화
- 데이터 삽입 시 테이블 재구성 필요성 감소
정규화의 단점
- 테이블간의 JOIN 연산 증가로 인해 질의에 대한 응답 시간이 저하된다.
이러한 단점 때문에 반정규화라는 개념이 등장하였다.
반정규화란
하나 이상의 테입르에 데이터를 중복해 배치하는 최적화 기법으로, 시스템의 성능 향상, 개발 및 운영의 편의성 등을 위해 정규화된 데이터 모델을 통합, 중복, 분리하는 과정으로, 의도적으로 정규화 원칙을 위배하는 행위이다.
반정규화의 장점
- 빠른 데이터 조회(JOIN 비용이 줄기 때문)
- JOIN 구문을 사용하지 않아 쿼리가 간단해지므로써 실수할 여지가 줄어들음
반정규화의 단점
데이터 갱신이나 삽입의 비용이 높고 쿼리가 까다로움
데이터의 일관성이 깨지는 위험이 발생할 수 있음
데이터 중복으로 인한 더 많은 저장공간 차지
결국 정규화와 반정규화는 데이터 갱신비용, 저장공간, 조회 비용, 이상(Anomaly)사이에서 서비스별로 더 유리한 전략을 택해야 한다.
참고:
https://byeongyeon.tistory.com/69
'데이터베이스' 카테고리의 다른 글
Transaction (4) | 2022.03.18 |
---|---|
SQL vs NO SQL (0) | 2022.03.18 |
SQL Injection (0) | 2022.03.17 |
SQL JOIN에 대해(작성 중) (0) | 2022.03.16 |
관계형 데이터베이스의 키(Key) (0) | 2022.03.12 |