현실 세계에서는 자연스럽게 다대다(N:M) 관계가 등장한다.
그러나 대부분의 관계형 데이터베이스에서는 테이블 간 N:M 관계를 직접 표현할 수 없다.
따라서 N:M 관계를 두 개의 1:N 관계로 분해해야 한다.
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 관계를 풀어줄 뿐 아니라, 그 관계 자체에 대한 추가 정보(수량, 금액, 상태, 이력 등)를 함께 저장할 수 있게 해 준다.
수강, 주문–상품 → 주문상품, 사용자–권한 → 사용자권한 등