피드 CRUD, 피드의 댓글 CRUD 기능이 제공되는 서비스에 피드와 댓글 좋아요 기능을 추가하려고 한다.
그 과정에서 좋아요 Entity를 설계할 때 겪었던 고민들에 대해서 적어두려 한다.
Like
테이블은 Feed
를 위한 것이라 생각하고 Comment
테이블은 'like_count' 컬럼을 추가하여 해결하기로 했다.
단점: 사용자 입장에서 내가 어떤 댓글에 좋아요를 눌렀는지 확인할 방법이 없어진다.
FeedLike
와 CommentLike
를 각각 따로 만들어 각 Entity에 대한 좋아요를 관리하도록 설계하였다.
단점: 다른 테이블에도 좋아요 기능이 추가된다면 그때마다 "좋아요 테이블을 따로 추가해야 하나?" 하는 회의감이 들었다.
따라서 두 좋아요 테이블을 합치기로 하였다.
하나의 Like
테이블에 ’feed_id’ 컬럼과 ‘comment_id’ 컬럼을 둘 다 넣어서 두 엔티티를 관리할 수 있도록 했고, nullable로 설정하여 feed에 대한 좋아요라면 comment_id가 null이 되게 했다.
단점: