8-1. 왜 N:M 관계를 직접 사용할 수 없는가

현실 세계에서는 자연스럽게 다대다(N:M) 관계가 등장한다.

그러나 대부분의 관계형 데이터베이스에서는 테이블 간 N:M 관계를 직접 표현할 수 없다.

따라서 N:M 관계를 두 개의 1:N 관계로 분해해야 한다.

8-2. 연관 엔티티(Association / Bridge Entity) 도입

N:M 관계를 풀기 위해 연관 엔티티(Association Entity) 를 새로 만든다.

예: 학생 – 과목 – 수강

[학생]
- 학생ID (PK)
- 이름

[과목]
- 과목ID (PK)
- 과목명

[수강]
- 수강ID (PK)
- 학생ID (FK → 학생)
- 과목ID (FK → 과목)
- 수강신청일자
- 성적

관계 요약
- 학생(1) — (N)수강
- 과목(1) — (N)수강

예: 주문 – 상품 – 주문상품

[주문]
- 주문ID (PK)
- 회원ID (FK → 회원)
- 주문일시

[상품]
- 상품ID (PK)
- 상품명
- 판매가

[주문상품]
- 주문상품ID (PK)
- 주문ID (FK → 주문)
- 상품ID (FK → 상품)
- 주문수량
- 주문단가

관계 요약
- 주문(1) — (N)주문상품
- 상품(1) — (N)주문상품

이처럼 연관 엔티티는 단순히 N:M 관계를 풀어줄 뿐 아니라, 그 관계 자체에 대한 추가 정보(수량, 금액, 상태, 이력 등)를 함께 저장할 수 있게 해 준다.

8-3. 연관 엔티티 설계 팁