본문 바로가기

데이터베이스

정규화와 반정규화

이상(Anomaly)

정규화 되지 않은 데이터베이스에서 데이터 중복으로 인해 발생하는 데이터 불일치 현상을 말한다. 

  • 갱신 이상: 반복된 데이터 중에 일부만 갱신할시 발생하는 데이터 불일치
  • 삽입 이상: 불필요한 정보를 함께 저장하지 않고서는 어떤 정보를 저장하는 것이 불가능
  • 삭제 이상: 필요한 정보를 함께 삭제하지 않고 서는 어떤 정보를 삭제한는 것이 불가능

이러한 이상현상을 정규화를 통해 방지할 수 있다.

 

 

정규화란

관계형 데이터에스에서 중복을 최소화하기 위해 데이터를 구조화하는 작업이다. 데이터의 중복은 저장공간을 낭비하고, 어떤 한 데이터가 갱신됐을 때 다른 데이터에는 반영되지 않는 문제가 발생할 수 있다. 이러한 문제를 해결하기 위해 단계를 나누어 정규화 과정을 거쳐 정규화를 진행한다.

 

제 1정규화

테이블 컬럼이 원자값(하나의 값)을 갖도록 테이블을 분해하는 것

 

제 2정규화

제 1정규화를 진행한 테이블에 대해 오나전 함수 종속을 만족하도록 테이블을 분해. 쉽게말하면 기본키의 부분 집합이 결정자가 되지 않도록 테이블을 분리하는 것

 

제 3정규화

제 2정규화 후, 이행적 종속을 없애도록 테이블을 분해하는 것. 

 

BCNF 정규화

제3 정규화를 진행한 테이블에 대해 모든 결정자가 후보키가 되도록 테이블을 분해하는 것

 

 

정규화의 장점

  • 데이터 구조의 안정성과 무결성 유지
  • 저장 공간 최소화
  • 데이터 삽입 시 테이블 재구성 필요성 감소

 

정규화의 단점

  • 테이블간의 JOIN 연산 증가로 인해 질의에 대한 응답 시간이 저하된다.

 

이러한 단점 때문에 반정규화라는 개념이 등장하였다.

 

반정규화란

하나 이상의 테입르에 데이터를 중복해 배치하는 최적화 기법으로, 시스템의 성능 향상, 개발 및 운영의 편의성 등을 위해 정규화된 데이터 모델을 통합, 중복, 분리하는 과정으로, 의도적으로 정규화 원칙을 위배하는 행위이다.

 

반정규화의 장점

  • 빠른 데이터 조회(JOIN 비용이 줄기 때문)
  • JOIN 구문을 사용하지 않아 쿼리가 간단해지므로써 실수할 여지가 줄어들음

 

반정규화의 단점

데이터 갱신이나 삽입의 비용이 높고 쿼리가 까다로움

데이터의 일관성이 깨지는 위험이 발생할 수 있음

데이터 중복으로 인한 더 많은 저장공간 차지

 

 

결국 정규화와 반정규화는 데이터 갱신비용, 저장공간, 조회 비용, 이상(Anomaly)사이에서 서비스별로 더 유리한 전략을 택해야 한다.

 

 

참고:

https://byeongyeon.tistory.com/69

 

정규화와 반정규화

정규화 정규화 배경 한 릴레이션에 여러 엔티티의 애트리뷰트들을 혼합하게 되면 정보가 중복 저장되며, 저장 공간을 낭비하게 된다. 또한 중복된 정보로 인해 갱신 이상이 발생하게 된다. 동일

byeongyeon.tistory.com

https://owlyr.tistory.com/20

 

[데이터베이스] 정규화 vs. 비정규화(반정규화)

💡 정규화 vs. 비정규화(반정규화) 데이터베이스 정규화 데이터베이스 비정규화 데이터베이스 비정규화(Denormalization, 반정규화)란 무엇인가? 장점, 단점 비정규화 대상 주의점 정규화(Normalized)란

owlyr.tistory.com

 

'데이터베이스' 카테고리의 다른 글

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