<aside> 💡

연관관계란 하나의 객체가 다른 객체를 참조(소유)하는 관계를 의미한다. 즉, A객체가 B객체를 “알고있는 것” 또는 “A가 B를 가지고있는 것” 을 의미한다.

보통 다대다 관계는 1:N, N:1 관계로 구성하고, 연결 테이블이 각 테이블의 PK를 FK로 참조한다고 볼 수있다.

</aside>

Member 테이블과 Product 테이블이 있다고 가정 했을 때 한명의 회원여러개의 상품을 찜 할 수 있고, 한개의 상품여러명의 회원에게 찜 당할 수 있다.


1. 객체와 테이블간의 연관관계

<aside> 💡

객체와 테이블간의 연관관계를 맺는 차이를 이해해야한다.

객체간 연관관계에서는 각각 단방향 연관관계로 서로를 참조하고있다. Member에서는 Team의 객체로, Team에서는 Member를 List형태로 저장해서 참조한다.

반면, 테이블에서는 MEMBER에서는 TEAM_ID(FK)로, TEAM에서는 TEAM_ID(PK)로 서로를 JOIN하는 형식이다. 외래키 하나로 참조가 가능해진다.

</aside>

1-1. 객체와 테이블의 양방향 관계

1-2. 둘 중 하나로 외래키 관리

스크린샷 2025-04-14 161957.png

<aside> 💡

위 문제들 때문에 룰이 생기는데 이게 바로 “연관관계의 주인” 이다. 둘 중 하나가 연관관계의 주인으로 설정이 되야한다.

</aside>

1-3. 연관관계의 주인