대댓글 작성을 위한 DB self join

권태형·2023년 2월 27일
0

이집은

목록 보기
9/12
post-custom-banner

이번 프로젝트를 진행하면서 대댓글의 필요성이 있다고 판단하여 대댓글 작성을 위한 API를 만들려고 했다.

'대댓글을 어떻게 만들까?' 라고 처음에 생각했을 때는 새로 테이블을 하나 더 만들어서 대댓글을 따로 관리하는 테이블을 만들려고 구조를 떠올리게 됬다. 이렇게 관리하면 당연하게 recomment테이블에 commentId가 관계설정이 되고 cascade설정도 간단하게 처리 될 것 같아서 처음에 구상을 했었는데,

구글링을 좀 해보니 recomment테이블을 새로 만드는 형식 보다는 comment테이블을 self join해서 테이블을 하나만 관리하는 경우가 많았다.

아래는 DB self join설정의 일부이다.

static associate(db) {
    db.Comments.hasMany(db.Comments, {
      as: 'reComments',
      foreignKey: 'parentCommentId',
      targetKey: 'commentId',
    });
    db.Comments.belongsTo(db.Comments, {
      as: 'parentComment',
      foreignKey: 'parentCommentId',
      targetKey: 'commentId',
    });
  }

생각해보면 대댓글도 어차피 댓글인 것이다. 그런데 나는 이걸 대댓글과 댓글을 따로 분류하려고 했다.

만약 이렇게 된다면 대댓글 또한 수정 삭제 조회에 대한 API를 따로 만들었어야 했을 것이다.

profile
22년 12월 개발을 시작한 신입 개발자 ‘권태형’입니다. 포스팅 하나하나 내가 다시보기 위해 쓰는 것이지만, 다른 분들에게도 도움이 되었으면 좋겠습니다. 💯컬러폰트가 잘 안보이실 경우 🌙다크모드를 이용해주세요.😀 지적과 참견은 언제나 환영합니다. 많은 댓글 부탁드립니다.
post-custom-banner

0개의 댓글