지웠지만 남겨두기

삭제 버튼을 눌러도 기록을 진짜로 없애지 않고, 삭제 표시만 해서 숨겨 두는 방식이에요. 실수는 표시만 지우면 되돌아오고, 분쟁과 환불에서는 남아 있는 기록이 증거가 돼요.

쉽게 말하면

엑셀 손님 명부에서 한 줄을 지우는 방법은 두 가지예요. 하나는 그 줄을 통째로 지워서 없애는 것. 다른 하나는 맨 끝 칸에 "삭제"라고 적고 필터로 숨기는 것이에요. 두 번째가 바로 지웠지만 남겨두기, 개발자 말로 소프트 삭제예요. 화면에서는 사라졌지만 시트 어딘가에는 그대로 남아 있어요. 필터만 풀면 언제든 다시 보이고요. 컴퓨터의 휴지통도 같은 원리예요. 지운 것 같지만, 비우기 전까지는 다 들어 있죠.

진짜 삭제
주문 행을 통째로 없앰 (되돌릴 수 없음)

실수 한 번이 영구 손실이에요. 환불 분쟁이 나면 보여줄 기록도 없어요.

삭제 표시
"삭제된 시각" 칸에 날짜만 기록 (행은 그대로)

화면에서는 사라지고, 실수했을 때는 표시만 지우면 그대로 돌아와요.

먼저 그림 하나만 맞춰 둘게요. 데이터베이스의 표는 엑셀 시트, 행은 한 줄, 열은 칸이라고 보면 돼요. 이 문서 전체가 그 그림 위에서 움직여요.

실제로는 이렇게 움직여요

방법은 허무할 만큼 단순해요. 주문 표에 "삭제된 시각"이라는 열을 하나 더 두는 거예요. 개발자들은 이 칸을 보통 deletedAt 이라고 불러요.

  1. 1누군가 삭제 버튼을 눌러요.
  2. 2그 행을 없애는 대신, "삭제된 시각" 칸에 지금 시각을 적어요. 엑셀로 치면 맨 끝 칸에 "삭제, 3월 2일"이라고 쓰는 거예요.
  3. 3손님과 사장님이 보는 목록은 그 칸이 비어 있는 행만 보여줘요. 엑셀 필터로 "삭제" 적힌 줄을 숨기는 것과 같아요.
  4. 4복구는 그 칸을 다시 비우는 것이에요. 그 순간 행이 목록에 다시 나타나요.

복구가 쉬운 이유가 여기 있어요. 없앤 것을 다시 만드는 게 아니라, 원래 있던 것을 다시 보여주기만 하면 되니까요. 언제 지웠는지 시각까지 남으니 "누가 언제 지웠나"를 따질 때도 단서가 돼요.

왜 지운 척만 하나

장사 기록은 지우는 순간이 아니라 지운 다음에 아쉬워져요. 상황별로 보면 차이가 확실해요.

상황진짜 삭제였다면삭제 표시라면
직원이 실수로 상품을 지움리뷰·판매 기록까지 같이 증발해요표시만 지우면 리뷰까지 그대로 돌아와요
환불 분쟁, 카드사가 기록 요구제출할 증거가 없어요주문·결제 기록을 꺼내 보여줄 수 있어요
지난달 매출 결산지운 주문만큼 숫자가 안 맞아요"취소된 주문 포함" 여부를 골라서 셀 수 있어요
주문에 붙어 있던 결제·배송 기록주인 잃은 기록이 되어 오류를 일으켜요주문이 남아 있으니 연결이 안 끊겨요

특히 넷째 줄이 중요해요. 주문 하나에는 결제 기록, 배송 기록, 리뷰가 줄줄이 매달려 있어요. 주문 행을 진짜로 없애면 매달린 기록들이 전부 미아가 돼요. 엑셀에서 한 줄을 지웠더니 다른 시트의 수식이 전부 깨지는 것과 같은 일이에요.

사장님이 실제로 겪는 장면

장면 1 · 직원이 새 메뉴를 올리다가

사장님, 신메뉴 등록하다가 기존 상품을 지워 버렸어요. 리뷰 300개 달린 그 상품이요.

소프트 삭제로 만들어져 있다면 사고가 아니라 해프닝이에요. 삭제 표시만 지우면 리뷰 300개까지 그대로 돌아와요. 진짜 삭제였다면 어제의 백업을 뒤져 되돌려야 하고, 백업 이후에 들어온 오늘 주문과 섞이는 골치 아픈 작업이 돼요.

장면 2 · 카드사에서 연락이 왔다

석 달 전 결제 건에 이의제기가 접수됐습니다. 주문 내역과 배송 완료 기록을 제출해 주세요.

그 손님은 이미 탈퇴했고 주문도 삭제된 상태였어요. 그런데 삭제 표시 방식이라 기록이 전부 남아 있었고, 그대로 제출해서 이의제기를 방어했어요. 분쟁에서는 기록이 곧 증거예요. 지운 척만 해 둔 덕에 이긴 거예요. 이의제기가 뭔지는 이의제기(차지백)에서 자세히 다뤄요.

증상이 보이면 AI에게 이렇게 말해요

소프트 삭제에서 나는 사고는 대부분 필터를 한 군데 빼먹어서 생겨요. 엑셀 필터는 시트 전체에 한 번 걸면 끝이지만, 서비스는 목록·검색·통계가 각각 다른 문으로 데이터를 꺼내서, 문마다 필터를 걸어야 하거든요. 증상만 알아보면 고치는 건 한 문장이에요.

이런 증상짚이는 원인AI에게 이렇게 말해요
삭제한 주문이 매출 통계에 계속 잡혀요목록에는 필터를 걸었는데 통계 계산에는 안 걸었어요"통계와 매출 계산에서도 삭제 표시된 주문은 빼 줘"
삭제했는데 검색하면 나와요검색이라는 문에 필터가 빠졌어요"검색 결과에서도 삭제 표시된 항목은 숨겨 줘"
탈퇴한 손님 이메일로 재가입이 안 돼요숨겨진 행이 "이미 가입된 이메일"로 잡히고 있어요"탈퇴한 회원의 이메일을 중복 검사에서 어떻게 다룰지 정해 줘"
실수로 지운 걸 되돌리고 싶어요소프트 삭제라면 표시만 지우면 돼요"관리자 화면에 삭제된 항목 보기와 복구 버튼을 만들어 줘"

증상을 그대로 말해도 돼요

원인을 몰라도 괜찮아요. "삭제했는데 통계에 나와요"라고 증상만 말해도 AI가 필터 빠진 곳을 찾아요. 위 표의 문장들은 더 정확히 짚어 주고 싶을 때 쓰는 지름길이에요.

지금은 신경 쓰지 않아도 되는 때

만들면서 연습 데이터를 넣었다 지웠다 하는 단계라면, 소프트 삭제는 아직 남의 얘기예요. 지워서 아까운 게 없으니까요. 이 단계에서는 마음껏 지우면서 만드는 게 오히려 빨라요.

신경 쓸 시점은 딱 하나예요. 진짜 손님의 주문·결제·기록이 쌓이기 시작하는 날. 결제를 붙이고 문을 여는 그 시점에, 아까운 기록들에 삭제 표시 방식을 깔아 달라고 한 번 말해 두면 돼요. 반대로 임시 메모나 장바구니처럼 지워져도 아무도 안 아쉬운 것까지 전부 남겨 둘 필요는 없어요.

기준은 하나예요

"이거 지워지면 아까운가?" 아까운 것(주문·결제·손님 기록)이 생기는 날부터 신경 쓰면 돼요. 그 전에는 이 문서를 잊고 지내도 돼요.

자주 묻는 것

Q. 안 지우고 다 남겨 두면 데이터가 쌓여서 느려지지 않나요?
주문 수만 건, 수십만 건 수준까지는 체감이 안 돼요. 데이터베이스는 그 정도를 위해 만들어진 물건이에요. 진짜로 커져서 정리가 필요해지면 그때 "몇 년 지난 기록은 창고로 옮기자" 같은 정리 정책을 세우면 되고, 그건 한참 뒤의 행복한 고민이에요.
Q. 손님이 "내 정보 지워 주세요"라고 하면, 삭제 표시로 처리하면 되나요?
안 돼요. 이건 소프트 삭제로 때우면 안 되는 대표적인 경우예요. 개인정보는 법이 진짜 파기를 요구할 수 있어요. 한편 거래 기록은 법이 일정 기간 보관을 요구하기도 해서, 지워야 할 것과 남겨야 할 것이 갈려요. 정확한 기간과 범위는 단정하지 않을게요. 개인정보보호위원회(privacy.go.kr)와 공정거래위원회 안내에서 내 업종 기준을 확인하는 게 정확해요. 개인정보 처리방침손님 정보 다루기에서 이어서 볼 수 있어요.
Q. 백업이 있으면 소프트 삭제는 필요 없지 않나요?
역할이 달라요. 백업은 가게 전체를 어제 시점으로 찍어 둔 사진이라, 되돌리면 어제 이후의 다른 기록까지 같이 영향받아요. 소프트 삭제는 그 행 하나만 지금 즉시 되살려요. 화재 보험과 소화기의 관계예요. 둘 다 있어야 해요.
Q. 컴퓨터 휴지통이랑 같은 건가요?
네, 휴지통이 소프트 삭제의 가장 유명한 예예요. 지운 것 같지만 실제로는 옮겨 둔 것뿐이고, 비우기 전까지는 복구가 돼요. 서비스의 소프트 삭제도 똑같은 발상이에요.
Q. 바이브캠퍼스에서 만들면 알아서 이렇게 되나요?
알아서 될 거라고 믿지 말고 한 번 말해 두는 게 안전해요. 스튜디오 채팅에 "주문·결제 기록은 삭제해도 진짜로 지우지 말고 삭제 표시만 해 줘"라고 요청하면 돼요. 이미 만든 프로젝트에도 같은 문장으로 바꿔 달라고 할 수 있어요.

헷갈리기 쉬운 것

소프트 삭제 = 백업? 아니에요. 백업은 가게 전체의 사본을 따로 떠 두는 것이고, 소프트 삭제는 시트 안에서 행 하나에 표시를 하는 거예요. 백업은 백업과 되살리기에서 따로 다뤄요.

실행취소(Ctrl+Z)랑 뭐가 달라요? 실행취소는 방금 한 일을 그 화면 안에서 무르는 것이고, 창을 닫으면 보통 사라져요. 소프트 삭제는 데이터베이스에 남는 기록이라 석 달 뒤에도 복구가 돼요. 짧은 후회는 실행취소가, 긴 후회는 소프트 삭제가 맡아요.

삭제 표시 = 영원히 보관? 그것도 아니에요. 표시해 둔 것들도 언젠가는 정리해요. 보관 기간을 정해 두고 기간이 지나면 진짜로 지우는 게 정석이고, 특히 개인정보는 그렇게 해야 하는 경우가 있어요. 뒤의 더 깊이에서 조금 더 얘기할게요.

확인해 보세요

직원이 실수로 단골손님의 주문 기록을 지웠어요. 소프트 삭제로 만들어져 있다면?

하나 더

손님이 개인정보 삭제를 요청했어요. 삭제 표시만 해 두면 끝일까요?

직접 해보기

내 프로젝트에 한 문장 심어 두세요

스튜디오 채팅에 이렇게 말해 보세요. "주문과 결제 기록은 삭제 버튼을 눌러도 진짜로 지우지 말고 삭제 표시만 해 줘. 관리자 화면에 삭제된 항목 보기와 복구 버튼도 만들어 줘." 이 한 문장이 미래의 사고 하나를 미리 지워요.

스튜디오 열기

더 깊이 (안 읽어도 괜찮아요)

개발자들이 부르는 이름 · 소프트 삭제, 논리 삭제 다 같은 말이에요. 표에 두는 칸은 deletedAt(삭제된 시각)이나 isDeleted(삭제 여부) 같은 이름을 써요. 반대로 진짜로 없애는 것은 하드 삭제라고 불러요. 외주 개발자가 "논리 삭제로 처리해 뒀어요"라고 하면 "기록은 남아 있고 복구 가능하다"는 뜻이니 안심해도 돼요.

엑셀 비유가 안 맞는 지점 · 엑셀 필터는 시트에 한 번 걸면 끝이지만, 서비스는 목록·검색·통계·중복 검사가 저마다 다른 길로 데이터를 꺼내요. 그래서 길마다 필터를 걸어야 하고, 한 군데 빼먹는 게 이 방식의 가장 흔한 사고예요. "삭제했는데 어디선가 또 나온다"는 증상은 십중팔구 이거예요. 또 하나, 엑셀 필터는 누구나 풀 수 있지만 서비스에서는 삭제된 행을 보는 권한을 관리자에게만 줘야 해요.

영원히 두지는 않아요 · 삭제 표시가 쌓인 행도 언젠가는 정리해요. "표시된 지 몇 년이 지나면 진짜로 지운다" 같은 보관 기간 정책을 정해 두는 게 정석이에요. 특히 개인정보는 목적이 끝나면 파기하거나 따로 분리해 보관해야 하는 의무가 걸릴 수 있어요. 법정 기간은 업종마다 달라서 여기서 숫자로 단정하지 않아요. 개인정보보호위원회 안내가 기준점이에요. 누가 언제 지우고 복구했는지 발자국을 남기는 얘기는 감사 로그와 이어져요.

이것만 기억하세요

  • ·지웠지만 남겨두기는 행을 없애는 대신 삭제 표시를 하고 숨기는 방식이에요. 엑셀에서 줄을 지우는 대신 "삭제"라고 적고 필터로 가리는 것과 같아요
  • ·복구는 표시만 지우면 돼요. 실수 한 번이 영구 손실이 되지 않아요
  • ·분쟁과 환불에서는 남아 있는 기록이 증거예요
  • ·개인정보 삭제 요청은 지운 척으로 안 돼요. 파기 의무는 개인정보보호위원회 안내로 확인해요
  • ·진짜 손님과 주문이 생기기 전까지는 신경 쓰지 않아도 돼요
VibeCampus新規ビルド