OneK-2
Published 2024. 7. 23. 11:16
M : N 관계 그냥 쓰면 안되나? Spring

DB모델링을 하다 보면 자연스럽게 다대다 관계를 마주하게 된다. 

이제는 습관적으로 테이블을 나누고 있지만, 그냥 써버리면 안되나? 라는 질문을 받았을 때 명확하게 답변하기 위해, 어떠한 대답을 해야할 지 생각해보았다.

 

테이블 간 연관관계

우선 다대다 관계에 대한 이야기를 하기에 앞서, 3가지의 연관관계를 대표적인 예시로 설명해 보려고 한다.

주문, 상품, 회원, 장바구니

  1. 일대일 (1 : 1)
    • 주문(1) - 장바구니(1)
    • 장바구니 하나는 주문 하나를 생성한다.
  2. 일대다 (1 : N)
    • 유저(1) - 주문(N)
    • 한 명의 유저가 여러개의 주문을 만들 수 있다.
  3. 다대다 (M : N)
    • 주문(N) - 상품(M)
    • 주문은 여러 상품을 담을 수 있고, 같은 상품도 여러 번 주문 될 수 있다.

 

다대다 관계 (M:N)

그래서 왜?

  1. 유지보수 및 확장성 떨어짐
    • 연관된 정보들이 많아서 데이터의 삽입, 갱신, 삭제가 어렵다.
  2. 성능 이슈
    • 연관 관계가 복잡해지면서, 조인을 할 때 쿼리 또한 더 복잡해짐.
    • 이중 조회가 발생함
  3. 데이터 중복
    • 데이터의 원자성을 해친다. PK가 중복될 수 있다.

 

결론! 그대로 쓰지말고, 분리하자~

'Spring' 카테고리의 다른 글

JPA  (1) 2024.07.29
왜 DTO를 사용하는가?  (1) 2024.07.22
Gradle Dependecies  (0) 2024.07.19
스프링 빈과 주요 어노테이션  (0) 2024.07.17
Web서버 vs WAS  (1) 2024.07.16
profile

OneK-2

@인문학여행

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그