15분
같은 주소가 100군데 있어요
Day 1: 같은 주소가 100군데 있어요 - 정규화
같은 주소가 100군데 있어요
데이터 모델링 > Day 1: 같은 주소가 100군데 있어요 - 정규화
학습 목표
데이터 중복의 위험성을 체감한다 정규화가 왜 필요한지 이해한다
첫 데이터 수정 업무
"김철수 고객 주소 변경됐대. 업데이트 좀 해줘."
간단한 업무라고 생각했다.
에디터 로딩 중...
"끝났습니다."
고객센터 전화
30분 후, 고객센터에서 전화가 왔다.
"김철수 고객님 주문 내역에 주소가 안 바뀌었다는데요?"
이상해서 확인해봤다.
에디터 로딩 중...
결과:
에디터 로딩 중...
주문 테이블에도 주소가 있었다.
더 큰 문제
배송 테이블도 확인했다.
에디터 로딩 중...
결과:
에디터 로딩 중...
배송 테이블에도 주소가 있었다.
결제 테이블은?
에디터 로딩 중...
김철수 고객의 주소가 무려 4개 테이블, 총 107곳에 저장되어 있었다.
주소 하나 바꾸려면
에디터 로딩 중...
한 곳이라도 빠뜨리면? 데이터 불일치. 김철수의 주소가 서울도 되고 성남도 되는 상황.
이게 바로 "비정규화의 저주"
| 문제 | 설명 |
|---|---|
| 중복 저장 | 같은 정보가 여러 곳에 |
| 갱신 이상 | 하나만 바꾸면 불일치 |
| 저장 공간 낭비 | 똑같은 문자열 반복 저장 |
| 실수 위험 | 사람이 직접 다 바꿔야 함 |
해결책: 정규화
선임이 알려줬다.
"고객 정보는 customers 테이블 하나에만 저장하고, 다른 테이블에서는 customer_id로 참조하는 거야. 이걸 정규화라고 해."
에디터 로딩 중...
한 곳만 수정하면 끝.
이번 주에 이 정규화를 제대로 배워보자.