<aside> 📖

학습 목표

1. 역정규화 검토

1-1. 역정규화란?

✅ 정규화 vs. 역정규화 비교

구분 정규화 역정규화
목적 데이터 무결성, 중복 최소화 성능 개선, 조인 최소화
특징 테이블 분리, 관계 명확 일부 데이터 중복 허용
주 용도 데이터 정합성 유지 우선 조회 성능 최적화, 복잡한 보고서 등
데이터 일관성 자동 보장 (제약조건) 수동 유지 필요 (트리거, 배치 등)

1-2. 역정규화 적용 사례 예시

📄 실무에서 발생하는 전형적인 역정규화 사례

사례 설명 효과
1 회원 테이블에 최근 주문일자 추가 주문 조인 없이 조회 가능
2 게시판 테이블에 댓글 수 컬럼 추가 매 조회 시 COUNT() 방지
3 상품 테이블에 브랜드명 중복 저장 조인 감소, 가독성 향상
4 판매 통계 테이블에 월/일자별 합계 컬럼 추가 집계 성능 향상
5 결제 이력에 회원 나이 그룹(20대/30대 등) 캐시 빠른 분석용 집계 가능
6 주문 상세에 카테고리명, 상품명 중복 저장 보고서, 검색 속도 개선

1-2-1. ✅ 예시 SQL (댓글 수 누적 컬럼 예시)

ALTER TABLE posts ADD COLUMN comment_count INTEGER DEFAULT 0;

-- 댓글 작성 시 UPDATE
UPDATE posts SET comment_count = comment_count + 1 WHERE post_id = 10;

-- 댓글 삭제 시 UPDATE
UPDATE posts SET comment_count = comment_count - 1 WHERE post_id = 10;

이처럼, 조회 속도 향상 / JOIN 감소 목적으로 컬럼을 추가하는 사례가 많습니다.


1-3. 역정규화의 장단점 분석

구분 장점 단점
성능 JOIN 감소, 조회 속도 향상 갱신 복잡성 증가 (INSERT, UPDATE 추가 작업 필요)
유지보수 데이터 구조가 단순, 특정 쿼리에서 편리 데이터 중복으로 정합성 문제 발생 위험
활용성 통계, 보고서 등 반복 조회 시 성능 유리 스키마 변경 시 영향 범위가 넓음
트레이드오프 읽기 성능 ↑, 쓰기 복잡도 ↑ 읽기 속도 ↔ 유지보수 비용 판단 필요