PromleeBlog
sitemap
aboutMe

posting thumbnail
데이터베이스 정규화와 반정규화
Database Normalization vs. Denormalization

📅

🚀

들어가기 전에 🔗

이번 시간에는 데이터를 체계적으로 정리하는 기술, 바로 데이터베이스
정규화(Normalization)
에 대해 알아보겠습니다.
그리고 왜 때로는 그 원칙을 거슬러, 의도적으로 데이터를 중복시키는
반정규화(Denormalization)
를 수행하는지에 대해서도 함께 탐구해 보겠습니다.

데이터베이스를 처음 설계할 때, 우리는 종종 모든 정보를 하나의 거대한 테이블에 담고 싶은 유혹에 빠집니다.
하지만 이런 설계는 곧 데이터의 불일치와 유지보수의 어려움이라는 큰 문제로 이어집니다.
정규화는 이러한 문제를 해결하기 위한, 데이터를
나누는 기술입니다.

🚀

정규화(Normalization): 데이터의 중복을 제거하라 🔗

정규화
는 데이터베이스의 테이블을 설계할 때, 데이터의
중복을 최소화
하고
데이터의 무결성을 보장
하기 위해 테이블을 구조화하는 과정입니다.
👍
무결성이란 데이터가 정확하고 일관되며 신뢰할 수 있는 상태를 의미합니다.

정규화의 단계 (Normal Forms) 🔗

정규화는 여러 단계로 이루어져 있으며, 보통 3차 정규형까지 만족하면 '정규화되었다'고 말합니다.

🚀

반정규화(Denormalization): 때로는 규칙을 깨뜨려라 🔗

정규화는 데이터의 무결성을 지키는 훌륭한 원칙이지만, 때로는
성능
에 좋지 않은 영향을 줍니다.
테이블을 잘게 나눌수록, 원하는 데이터를 얻기 위해 여러 테이블을 연결하는
JOIN 연산
이 많아지기 때문입니다.
JOIN은 데이터베이스에서 매우 비용이 큰 작업 중 하나입니다.

반정규화
는 이렇게 지나친 정규화로 인해 저하된 조회 성능을 향상시키기 위해, 의도적으로
정규화 원칙을 위배하고 테이블을 통합하거나 데이터의 중복을 허용하는 과정
입니다.

데이터의 조회가 매우 빈번하게 일어나고, 이로 인한 성능 저하가 심각할 때 사용합니다.
또한, 데이터의 변경이 거의 일어나지 않아 데이터 불일치의 위험이 적은 경우에 고려할 수 있습니다.
(예: 통계 분석을 위한 데이터 웨어하우스, 월별 랭킹 보드 등)

결국 반정규화는
조회 성능 향상
이라는 이점과
데이터 일관성 저하
라는 비용 사이의
트레이드오프
를 고려한 전략적인 선택입니다.
정규화와 반정규화
정규화와 반정규화

🚀

주요 면접 예상 질문 🔗

정규화와 반정규화는 데이터베이스 설계의 기본 철학이므로, 그 차이와 트레이드오프를 묻는 질문이 자주 나옵니다.

1. 데이터베이스 정규화란 무엇이며, 왜 필요한가요? 🔗

정규화의 핵심 목표를 명확히 설명하는 것이 중요합니다.
정규화는 데이터베이스 테이블을 설계할 때,
데이터의 중복을 최소화
하고
무결성을 보장
하기 위해 테이블을 구조화하는 과정입니다.
데이터 중복으로 인해 발생할 수 있는 삽입, 갱신, 삭제 이상의
데이터 불일치 문제
를 방지하고, 데이터베이스의 구조를 더 안정적이고 유지보수하기 쉽게 만들기 위해 반드시 필요합니다.

2. 반정규화는 어떤 경우에 고려하며, 그로 인한 장단점은 무엇인가요? 🔗

트레이드오프 관계를 이해하고 있는지를 확인하는 질문입니다.
반정규화는 정규화로 인해 조회 성능이 저하될 때, 특히
JOIN 연산이 너무 많아져 병목 현상이 발생할 때
고려합니다.
의도적으로 데이터의 중복을 허용하거나 테이블을 통합하여 JOIN의 수를 줄이는 방식입니다.
장점
은 원하는 데이터를 더 빠르게 조회하여
시스템의 성능을 향상
시킬 수 있다는 것입니다.
하지만
단점
으로는 데이터의 중복이 발생하므로
데이터 일관성을 유지하기가 더 어려워지고
, 데이터 수정 시 여러 곳을 함께 변경해야 하는
유지보수 비용
이 증가한다는 점이 있습니다.

🚀

결론 🔗

오늘은 데이터를 정리하는 원칙인 정규화와, 때로는 그 원칙을 거스르는 반정규화에 대해 알아보았습니다.

참고 🔗