twocowsong

다 대 다 [N : N] 본문

IT/JPA

다 대 다 [N : N]

WsCode 2022. 6. 20. 20:59

관계형 DB는 정규화된 테이블 2개로 N : N 관계를 표현할 수 없습니다.

그래서 보통은 N : N 관계를 1 : N, N : 1 관계로 풀어내는 연결 테이블을 사용합니다.

 

예를 들어 회원들은 상품을 주문합니다.

반대로 상품들은 회원들에 의해 주문됩니다.

한 상품은 여러회원들에게 주문되고, 한 회원은 여러개의 상품을 주문함으로 둘은 N : N 관계를 가집니다.

따라서 회원 테이블과 상품 테이블만으로는 이 관계를 표현 할 수 없습니다.

중간에 연결 테이블을 추가해서 사용해야 합니다.

아래의 그림처럼 MEMBER_PRODUCT 연결 테이블을 추가했습니다.

테이블을 사용해서 N : N 관계를 1 : N, N : 1 관계로 풀어 낼 수 있습니다.

 

이 연결 테이블은 회원이 주문한 상품을 나타냅니다.

그런데 객체는 테이블과 다르게 객체 2개로 N : N 관계를 만들 수 있습니다.

예를들어 회원 객체는 컬렉션을 사용해서 상품들을 참조하면되고 반대로 상품들도 컬렉션을 사용해서 회원들을 참조하면 됩니다.

@ManyToMany를 사용하면 이런 N : N 관계를 편리하게 매핑할 수 있습니다

'IT > JPA' 카테고리의 다른 글

다 대 다 : 양방향  (0) 2022.06.26
다 대 다 : 단방향  (0) 2022.06.21
대상 테이블에 외래 키  (0) 2022.06.19
주 테이블 외래 키  (0) 2022.06.19
일 대 일 [ 1 : 1 ]  (0) 2022.06.18