중복을 없애는 정리, 정규화
주문이 들어올 때마다 한 표에 고객 이름과 전화번호를 같이 적는다고 해봐요. 같은 손님이 열 번 주문하면 그 이름이 열 줄에 똑같이 적혀요. 그러다 손님이 전화번호를 바꾸면? 열 줄을 다 고쳐야 하고, 하나라도 빠뜨리면 어떤 칸은 옛 번호 그대로예요. 반복해 적은 게 화근이죠. 이 반복을 떼어 깔끔하게 정리하는 게 정규화예요.
같은 정보를 자꾸 반복해 적으면
앞에서 공통 열로 두 표를
이어 보는 법을 배웠어요.
이번엔 표 하나를 들여다봐요.
주문이 들어올 때마다
같은 표에 한 줄씩 적는데,
고객 이름과 전화번호도 같이 적어요.
같은 손님이 여러 번 주문하면
그 이름과 번호가 줄마다 똑같이 반복돼요.
칸이 점점 같은 글자로 채워지죠.
고객 이름을 눌러봐요. 같은 손님 정보가 여러 줄에 똑같이 반복된 게 한눈에 강조돼요.
같은 정보가 줄마다 박혀 있죠.
우선 자리가 아까워요.
똑같은 이름을 몇 번이고 적으니까요.
더 큰 문제는 따로 있어요.
손님이 전화번호를 바꾸면
그 손님이 적힌 줄을 다 찾아 고쳐야 해요.
하나라도 빠뜨리면
어떤 줄은 새 번호, 어떤 줄은 옛 번호.
같은 손님인데 정보가 어긋나 버려요.
반복되는 부분을 떼어 나눠요
해결은 의외로 간단해요.
반복되는 부분을 떼어
따로 표를 만드는 거예요.
고객 이름과 전화번호는
주문마다 적을 게 아니라
고객만 모은 표에 한 번씩만 적어요.
그러면 주문 표에는
고객 정보가 통째로 빠지고
표가 훨씬 가벼워져요.
나누기를 눌러봐요. 반복되던 고객 정보가 주문 표에서 떨어져 나가 별도 고객 표로 모여요.
고객 정보가 한 군데로 모였죠.
이제 손님이 번호를 바꿔도
고객 표의 한 줄만 고치면 돼요.
주문이 백 건이든 천 건이든
고칠 곳은 딱 한 줄이에요.
빠뜨릴 일도, 어긋날 일도 없어요.
그런데 한 가지 걱정이 생겨요.
주문 표에서 고객 정보를 빼버렸으니,
어느 주문이 누구 건지 어떻게 알죠?
공통 열로 다시 이어요
여기서 앞서 배운 잇기가 살아나요.
나눌 때 그냥 떼기만 하면 안 돼요.
두 표에 같은 열을 하나 남겨 둬요.
고객 표에는 고객번호와 이름을,
주문 표에는 고객 이름 대신 고객번호만.
이 고객번호가 둘을 잇는 끈이에요.
주문 표의 번호를 보고
고객 표에서 같은 번호를 찾으면
그 주문이 누구 건지 바로 알 수 있죠.
주문 줄의 고객번호를 눌러봐요. 같은 번호를 가진 고객 표의 줄로 끈이 이어지며 누구 주문인지 드러나요.
번호 하나로 두 표가 이어졌죠.
정보는 한 곳에만 적혀 있어도
끈을 따라가면 언제든 합쳐 볼 수 있어요.
반복은 사라지고
고칠 곳은 한 군데로 줄었는데
필요한 정보는 그대로 다 모이죠.
이게 정규화의 핵심이에요.
그런데 좋은 것도 지나치면 탈이 나요.
표를 너무 잘게 나누면 어떻게 될까요?
너무 나누면 다시 합치기도 해요
반복이 싫다고 무작정 잘게 나누면
표가 자꾸 늘어나요.
주소는 주소 표, 등급은 등급 표,
자잘한 것마다 표를 따로 두는 식이죠.
그러면 손님 한 명을 제대로 보려고
표를 서너 개씩 끈으로 이어 붙여야 해요.
이어 붙이는 일이 많아질수록
보는 데 시간이 더 걸려요.
반복은 줄었지만 속도가 느려지는 거예요.
잘게 나눔과 일부러 합침을 번갈아 눌러봐요. 나눌수록 이어 붙일 표가 늘고, 합치면 반복은 생겨도 한 번에 보여요.
나눔과 합침은 서로 주고받아요.
잘게 나누면 반복이 줄어 깔끔하지만
볼 때마다 표를 이어 붙이느라 느려요.
자주 같이 보는 정보라면
일부러 한 표에 합쳐 두기도 해요.
그러면 반복이 조금 생기는 대신
이어 붙일 필요 없이 한 번에 빨리 봐요.
이렇게 일부러 합치는 걸
비정규화라고 불러요. 균형의 문제죠.
정리해볼까요
한 줄로 모으면 이래요.
한 표에 같은 정보를 반복해 적으면
자리도 낭비되고 불일치도 생겨요.
그래서 반복되는 부분을 떼어
별도 표로 나누고
공통 열로 다시 이어요.
그러면 정보는 한 곳에만 두고
필요할 때 끈을 따라 합쳐 봐요.
단, 너무 잘게 나눠 느려지면
일부러 합치기도 해요. 그게 균형이에요.
핵심을 차례로 눌러 되짚어봐요. (반복은 낭비·불일치 → 반복을 떼어 나누기 → 공통 열로 잇기 → 너무 나누면 일부러 합치기)
이제 표를 깔끔하게 정리하는
생각의 틀을 갖게 됐어요.
반복을 떼어 나누고 관계로 잇되,
지나치면 다시 합치는 균형.
이건 표뿐 아니라
무언가를 정리할 때 두루 통하는 지혜예요.
중복을 줄여 실수를 막고,
필요하면 다시 모아 빠르게 보는 솜씨.
다음 이야기로 함께 이어가봐요.