관계형 데이터 모델링 - N:M 관계의 처리

최민수·2023년 3월 20일
0

CS 전공지식

목록 보기
17/36


Entity 연관관계가 N:M(다대다)인 상황이 문제가 되는 이유

위의 상황을 보자.

Author 테이블과 Topic 테이블이 있는데, 여러 명의 작가가 한 개의 글을 쓸 수 있고 한 명의 작가가 여러 개의 글을 쓸 수 있는 상황의 M:N 연관관계가 있는 상황이다.

여기에서 두 테이블의 join 조건을 만들어주기 위해 어느 테이블이든 column을 추가해 foreign key를 추가 해보자. 그럼 위의 그림에서 노란색으로 표시된 방법 2가지가 있을 수 있겠다. 그러나 값이 2개 이상이 들어간 row도 있고 null인 row도 존재한다. 따라서 저 방법으로는 join 을 할 수가 없다.


따라서 중간에 매핑 테이블을 둬야 한다

중간의 write 테이블이 author 테이블과 topic 테이블의 매핑 테이블이다. 각각의 글을 어떤 저자가 썼느냐, 또 각각의 저자는 어떤 글을 썼냐에 대한 정보를 나타내 주는 테이블이다.

이렇게 연결 테이블을 두면, 매핑 테이블의 정보를 기반으로 한 다리 건너서 join 이 가능하다.

참고로 프로젝트를 할 때 N:M 연관관계가 나오면 역시 @ManyToMany 로 절대 처리하지 않는다. 위의 방법대로 매핑된 테이블의 클래스를 한 개 정의해서(보통 테이블 두개 이름을 붙여서 만듦. AuthorTopic.java, OrderItem.java 와 같이) @OneToMany, @ManyToOne 관계로 풀어서 연관관계를 맺는다.


영상 출처: 생활코딩, 관계형 데이터 모델링 - 5.5.1. N:M 관계의 처리
관계형 데이터 모델링 - 5.5.2. N:M 관계의 처리 - 내용 정정

profile
CS, 개발 공부기록 🌱

0개의 댓글