해결된 질문
21.04.07 16:44 작성
·
1.2K
0
강좌에는 카테고리-상품에 N:M 다대다 관계로 해놓으셨는데요!
제가 30살인데 29살에 퇴사하고 혼자 JPA공부해서 학교다니던 친구와 백1프론트1을 맡아서 프로젝트를 만들고있는데.. 1:N, N:1은 좀 해결했는데 N:M에서 막히고있어요ㅠㅠ 약간 힌트라도 주실 수 있으신지 해서 여쭤봅니다. 질문이 너무 많아서 힘드시면 직접적으로 말씀하셔도괜찮습니다..!
만약에 이런 경우는 어떻게 하나요?
1.여러명의 회원은 여러개의 게시글을 찜목록에 추가할 수 있다.
1-1. 여러명의 회원은 여러개의 공고를 찜목록에 추가할 수 있다.
1-2. 여러명의 회원은 여러개의 기업을 찜목록에 추가할수있다.
USER(회원)과 기업/공고/게시글 엔티티 사이에 중간테이블을 놓고 유저ID랑, 각각 필요한 기업/공고/게시글 아이디로 매핑해놓은 상태인데요 - 검은색
이렇게 하는게 맞는지 궁금합니다.
[회원]은 여러개의 [이력서]로 [공고]에 [지원]할 수 있다라고 해서
이력서와 공고의 N:M관계를 해소하고자 중간테이블을 만들고 지원한다라는 APPLY 엔티티를 따로 만들었는데, JPA에서도 이렇게 하면 되는건가요..?
DB상으로는 외래키가 PK가 되면서 한 테이블안에 PK가 없어도 된다는 식으로 들었는데, 검색을해보니 JPK는 PK가 있어야된다하더라구요!?
만약에 N:M관계 중간에 중간테이블을 만들면 보통은 외래키 2개가 들어가는데, JPA식으로 만들면 PK, FK, FK해서 총 3개가 만들어지는게 맞나요?
이렇게 나오는데.. intelliJ나 datagrip에서는 흔히 까마귀발이라고 하는 1:N, N:1 관계는 안보여주더라구요..!
그리고 mysql workbench reverse engineer모드로 erd를 그려봤는데..여기에서는 1:1관계도 1:N으로 나오는데...(분명히 유저와 멤버는 @OneToOne으로 양방향 매핑했는데도 이렇게 나옵니다.
혹시 DB를 설계하면서 잘 되었는지 erd로 뽑아보고싶은데, 아직 완벽하게 보여주는 건 없는건가요..?
답변 2
1
2021. 04. 07. 23:28
안녕하세요. 보키님
1. 이렇게 여러곳과 연관관계가 있으면 연관관계를 다 제거하고 테이블을 단순하게 구성하는게 더 나은 선택일 수 있습니다.
테이블의 구성 컬럼이 type(게시판, 공고), id 이렇게요. 공통 코드 테이블도 보통 이런식으로 설계합니다.
2. (2) ~한다,~되다의 V 중간테이블
JPA 기본편 강의 다대다를 참고해주세요.
3. 중간테이블 질문
JPA 기본편 강의 다대다를 참고해주세요.
4. 이 부분은 저도 잘 모르겠습니다.
감사합니다.
0
2021. 04. 08. 00:15
역시 강의참고해서 많이혼자 해봐야겠네요...! 감사합니다