[TIL] DB 정규화 VS 비정규화

Manta·2024년 11월 7일
0

TIL

목록 보기
21/22

💡 정규화 vs. 비정규화

정규화 데이터베이스(normalized database)는
중복을 최소화하도록 설계된 데이터베이스를 말한다.

비정규화 데이터베이스(denormalized database)는
읽는 시간을 최적화하도록 설계된 데이터베이스를 말한다.

정규화(Normalized)란 무엇인가?

관계형 데이터베이스에서 중복을 최소화하기 위해 데이터를 구조화하는 작업이다. 좀 더 구체적으로는 하나의 종속성이 하나의 릴레이션에 표현될 수 있도록 분해해가는 과정이라 할 수 있다.

장점

  • 데이터베이스 변경 시 이상 현상(Anomaly) 제거

  • 저장 공간의 최소화 가능

  • 효과적인 검색 알고리즘 생성 가능

  • 데이터 삽입 시 릴레이션 재구성의 필요성 감소

  • 데이터 구조의 안정성 및 무결성 유지

단점

  • 릴레이션 간의 JOIN 연산 증가
    → 이로 인한 질의에 대한 응답 시간 저하

비정규화(Denormalization)란 무엇인가?

하나 이상의 테이블에 데이터를 중복해 배치하는 최적화 기법이다.

장점

  • 빠른 데이터 조회
    → 조인 비용이 줄어들기 때문

  • 살펴볼 테이블이 줄어들기 때문에 데이터 조회 쿼리가 간단해짐
    → 따라서 버그 발생 가능성도 줄어든다

단점

  • 데이터 갱신이나 삽입 비용이 높음

  • 데이터 갱신 또는 삽입 코드를 작성하기 어려워짐

  • 데이터 간의 일관성이 깨어질 수 있다. 어느 쪽이 올바른 값인가?

  • 데이터를 중복하여 저장하므로 더 많은 저장 공간이 필요

profile
공부할게 너무 만타🫠

0개의 댓글