연결 테이블의 진짜 가치가 드러나는 부분은 **"관계에 속한 속성"**을 저장할 수 있다는 점이다.

주문-상품 예시에 다시 돌아가 보자.

이 두 값은 어디에 속하는 정보일까?

결局 **"어떤 주문에서, 어떤 상품을, 몇 개, 얼마에 샀는가"**라는 정보는 두 엔티티의 관계 속에만 존재한다.

그래서 이 정보들을 연결 테이블 order_product의 속성으로 옮긴다.

CREATE TABLE order_product (
  order_product_id BIGINT PRIMARY KEY,
  order_id         BIGINT NOT NULL,
  product_id       BIGINT NOT NULL,
  order_price      INT    NOT NULL,  -- 주문 당시 가격
  quantity         INT    NOT NULL,  -- 주문 수량
  CONSTRAINT fk_order_product_order
    FOREIGN KEY (order_id)   REFERENCES orders(order_id),
  CONSTRAINT fk_order_product_product
    FOREIGN KEY (product_id) REFERENCES product(product_id)
);

정리하면, 다대다 관계를 설계할 때 항상 다음 질문을 던진다.

"두 엔티티의 관계 속에서만 의미를 가지는 속성이 있는가?"