본문 바로가기

JPA/양방향연관관계

N:M(다 대 다) 매핑 1: 매핑테이블

RDB에서는 정규화된 테이블 2개로 N:M 관계를 매핑하는 것이 불가능하다.

(정규화란 Table을 아름답게 만드는 과정(?)이다. 정규화에 대해 더 궁금하다면 검색을!!!)

따라서 매핑테이블을 따로 추가해서 N:M 관계를 풀어내야 한다.


매핑 테이블 만들어보기

학생이 수강신청을 한다고 해보자. 학생은 여러 과목을 수강신청할 수 있고, 한 과목은 여러 학생에 의해 수강신청될 수도 있다.
여기서 학생은 Student이고 과목은 Subject라고 한다면, Student:Subject = N:M(다 대 다)관계가 성립한다.
하지만 DB에서 테이블 2개로 N:M 관계를 매핑할 수 없다.

그래서 Student, Subject와 더불어 매핑테이블이 추가로 설계된다.

매핑테이블로 StudentSubject이라는 테이블을 새로 만들었다.

이제 Student, StudentSubject, Subject의 관계를 살펴보자!!!

Student:StudentSubject = 1:N, StudentSubject:Student=N:1이 성립한다.
최종적으로 Student:Subject=N:M이 성립한다.

 


오늘 가장 중요했던 점은 N:M(다대다) 관계를 풀어낼 때는
매핑테이블을 추가해서 1:N, N:1의 관계로 풀어내야 한다는 점이었다.

다음 시간에는 설계한 테이블을 JPA를 사용해서 직접 매핑해보자!!!!

 

 

참고강의: 배달의 민족 개발팀장 김영한 강사님의 JPA 강의