이미지 출처: wikipedia

 일단 굳이 모든 경우에 soft delete를 하는 건 안 좋은 것 같다. 대충 생각해보면 isDeleted라는 컬럼이 true, false로 나뉘는 거니까 경우에 수가 두 배로 늘어나고, 생각해야할 것도 늘어난다. 코드도 늘어난다. 그래서 적재적소에 잘 쓰되 좀 간편하게 사용하기 위해서 repository나 manager같은 데이터를 다루는 객체에서 삭제되지 않은 것만 가져오도록 따로 만들어 놓는 것도 좋은 생각같다. 예시로는 화해 기술블로그에 나와있다.

 위에서 말한 적재적소는 고객 cs가 많거나 log데이터 같은 걸 가지고 있으면 좋을 때인 것 같다. 고객 cs가 많은 업종 같은 경우에는 history가 있을 때 상황을 이해하고 설명하기 좋기 때문이다. log 데이터 같은 걸로 이용하기 위해서 soft delete를 사용해 놓으면 데이터분석에도 좋을 것 같다. hard delete로 지워버리면 나중에 데이터 분석을 하고 싶을 때 그 시점에 데이터는 비워져 버리는 거니까.

 번외로 왜 컬럼명, 변수명을 지을 때 type, state이런 걸로 안 짓는지 프로젝트 진행하면서 잘 알게 되었다. 나중에 다른 field가 추가될 때, 또 다른 타입, 상태 같은 걸 추가하고 싶을 때 아주 찝찝한 상황이 온다. 그런 상황에서는 씁쓸하게 comment를 남겨 놓았지만, 다른 테이블 볼 때 comment가 없으면 '이건 이건가..?'라고 추측하거나 만든 사람한테 물어봐야해서 좀 귀찮은 상황이 오더라...

+ Recent posts