물리삭제와 논리삭제
물리삭제와 논리삭제
DB에서 데이터를 삭제하는 방법에는 물리삭제
와 논리삭제
가 있다.
물리삭제
SQL의 delete 명령어 사용해서 직접 데이터 삭제하는 방법
말 그대로 진짜 삭제한다.
논리삭제
UPDATE 명령어를 사용해서 삭제 여부를 알 수 있는 컬럼에 데이터가 삭제되었다는 값을 넣어서 표현
이게 그 deleted 칼럼에 true, false로 삭제되었는지 표시하는 방법이다.
즉, 실제로 삭제되는게 아니라 삭제된 척 하는 것이다.
장점
- 데이터를 삭제하지 않기 때문에 삭제되기 전의 상태로 쉽게 되돌릴 수 있다.
단점
- 삭제해도 DB 저장공간을 차지한다. -> DB가 비대해진다.
- 삭제지만 update 명령을 실행해서 혼란을 야기할 수 있다?(타 블로그 피셜.)
비교 예시
id | 이름 | 번호 | 삭제여부 |
---|---|---|---|
1 | 이찬호 | 010-1234-1234 | 0 |
2 | 김다빈 | 010-1234-5678 | 0 |
물리삭제의 경우
delete from user where id=2
를 통해서 삭제
결과
id | 이름 | 번호 | 삭제여부 |
---|---|---|---|
1 | 이찬호 | 010-1234-1234 | 0 |
논리 삭제의 경우
update user set 삭제여부=1 where id=2
를 통해 업데이트
결과
id | 이름 | 번호 | 삭제여부 |
---|---|---|---|
1 | 이찬호 | 010-1234-1234 | 0 |
2 | 김다빈 | 010-1234-5678 | 1 |
뭘 선택해야 할까
정답은 없다.
삭제 후에도 필요해질 수도 있다고 생각되는 정보는 논리삭제로 필요하지 않은 정보는 물리삭제로 처리하는게 좋을 것 같다.
회원탈퇴에 관한 것은 좀 더 생각해볼 거리가 많은 것 같아서 따로 정리하였다.
DB 회원탈퇴처리