개발자

memberId 매핑에 관한 질문

4월 27일조회 42

게시물이나, 댓글, 좋아요 등 여러 테이블에 memberId가 매핑이 될텐데 제가 일하기 시작한지 초반에, "memberId는 최대한 많이 매핑을 안해두는게 좋다" 라고 배웠습니다. 심지아 많은 테이블에 memberId가 들어가는데, 하나도 연관성 매핑을 안두고 설계를 한적도 있어요. 지금 새로운 프로젝트에서 게시물이나 댓글, 그리고 좋아요를 구현하고 있는데, 게시물을 목록으로 조회할때 각 게시물 작성자의 프로필 이미지와 닉네임, 댓글을 조회할때, 작성자의 프로필 이미지와 닉네임, 그리고 누가 좋아요를 눌렀는지 보려고 목록으로 좋아요 누른이의 프로필 이미지와 닉네임을 보여주고 싶은데, JPA 매핑 없이 구현하려니 너무 많은 query가 나가면서 수동으로 매핑 시켜줘야할것같은데.. 1. 이 경우 각 테이블과 멤버 테이블의 연관성을 설정해주는게 좋나요? 아니면 2. 많은 query가 나가도 어쩔 수 없고, paging으로 가져와 가져오는 댓글/좋아요/게시물 수를 줄이고, response dto에 수동으로 멤버 정보를 넣어주는게 좋을까요?? 아니면 3. 더 효율적인 방법이 있을까요? 미리 감사합니다!

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 1

cozy님의 프로필 사진

안녕하세요 ! 말씀해주신 글로 보았을 때, 질문의 핵심 의도는 테이블 간의 제약 조건(PK, FK 기반으로 1:N, M:N 관계 설정) 을 해주어야 하는가 인 것 같습니다. query로 주로 쓸 지, JPA와 같은 ORM 기반으로 주로 쓸 지는 사실 개인의 취향이나 소속 팀의 정책에 따른다라고 생각합니다. 제약 조건을 사용하는 이유는 관계의 표기도 있겠지만, 데이터의 정합성을 맞춰주기 위함도 있습니다. 쉽게 예시를 들자면, id가 1번인 게시글이 있고 그와 관련에 댓글이 있다고 가정해봅시다. 제약조건이 없이 게시글을 삭제해도 댓글들은 지워야 할 의무가 없는거죠. 디스크에는 쓰지 않는 데이터는 적재될 것이고 데이터를 보다보면 출처를 모를 데이터가 될 꺼에요 ! 제약조건을 사용하게 되면 CASCADE 같은 옵션으로 그런 걱정은 할 필요가 없게 되는거죠 그러나 현업에서는 생각보다 FK를 통해 관계 설정을 안한 케이스를 많이 보고 들었습니다. 이유는 결국 관리가 어렵다! 라는 거죠. 일은 바쁘고 급한데 ROW 한줄을 지우기 위해 테이블 간의 관계를 고려하여 순서대로 지우는 것이 번거롭기 떄문이라고 저는 생각해봤습니다. 답변이 도움되셨으면 좋겠네요~고생하세요

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!