15

같은 주소가 100군데 있어요

Day 1: 같은 주소가 100군데 있어요 - 정규화

학습 목표

데이터 중복의 위험성을 체감한다 정규화가 왜 필요한지 이해한다

첫 데이터 수정 업무

"김철수 고객 주소 변경됐대. 업데이트 좀 해줘."

간단한 업무라고 생각했다.

에디터 로딩 중...

"끝났습니다."


고객센터 전화

30분 후, 고객센터에서 전화가 왔다.

"김철수 고객님 주문 내역에 주소가 안 바뀌었다는데요?"

이상해서 확인해봤다.

에디터 로딩 중...

결과:

에디터 로딩 중...

주문 테이블에도 주소가 있었다.


더 큰 문제

배송 테이블도 확인했다.

에디터 로딩 중...

결과:

에디터 로딩 중...

배송 테이블에도 주소가 있었다.

결제 테이블은?

에디터 로딩 중...

김철수 고객의 주소가 무려 4개 테이블, 총 107곳에 저장되어 있었다.


주소 하나 바꾸려면

에디터 로딩 중...

한 곳이라도 빠뜨리면? 데이터 불일치. 김철수의 주소가 서울도 되고 성남도 되는 상황.


이게 바로 "비정규화의 저주"

문제설명
중복 저장같은 정보가 여러 곳에
갱신 이상하나만 바꾸면 불일치
저장 공간 낭비똑같은 문자열 반복 저장
실수 위험사람이 직접 다 바꿔야 함

해결책: 정규화

선임이 알려줬다.

"고객 정보는 customers 테이블 하나에만 저장하고, 다른 테이블에서는 customer_id로 참조하는 거야. 이걸 정규화라고 해."

에디터 로딩 중...

한 곳만 수정하면 끝.

이번 주에 이 정규화를 제대로 배워보자.