abcdefghijklm:n

eland·2024년 7월 23일
post-thumbnail

오늘은 M:N에 대한 고민을 해보았다.

우선 테이블의 연관 관계에 대해 알아보자.

RDB관점에서 테이블의 연관 관계는 1:1, 1:N, M:N관계가 있다.

이마트를 배경으로 에시를 들어보면

1:1 관계

이마트 상품 테이블과 상품 정보 테이블은 1:1 관계다.
상품 테이블은 하나의 상품 정보 테이블만 가질 수 있고, 마찬가지로 상품 정보 테이블 역시 하나의 상품 테이블만 가질 수 있기 때문이다.

N:1 관계

또한 이마트 회원 정보와 주문 정보 테이블은 1:N 관계로 볼 수 있다.

하나의 회원 정보는 여러 개의 주문 정보를 가질 수 있습니다. 반대로, 하나의 주문 정보는 하나의 회원 정보에만 속하기 때문이다.

M:N

마지막으로 이마트 상품과 주문 정보 테이블은 M:N 관계로 볼 수 있다.

하나의 상품은 여러 번 주문될 수 있으며, 하나의 주문은 여러 개의 상품을 포함할 수 있기때문이다. 하지만 실제로는 이를 구현하기 위해 중간 테이블을 두어 다대다 관계를 해소하는 것이 좋다.


그럼 마지막에서 말했듯이 왜 M:N을 사용하지 말고 중간 테이블을 통해 다대다 관계를 해소하는 것이 나을까??

나는 이에 대해 3가지 라고 생각했다.
첫번째로 data참조시 조회 쿼리를 어떻게 작성 할 지의 모호함이 문제이고,

두번 째로는 M:N의 관계에서 M과 N 값이 커질 경우 update나 delete를 할 때 자원 소모가 크다는 문제 점이 있다.

RDB를 사용하는 이유가 보안인데 해당 data가 접근할 수 있는 길이 많아진다(사실 잘 모르겠다. 인터넷에 너무 당연한 소리만 있어서 한번 새로운걸 생각해 보려고 했는데 잘 모르겠다.)

profile
더 이상 핑계를 댈 때가 아니다.

0개의 댓글