현재 선택한 데이터 아키텍처 과정

DAsP 이론 학습

이론 목록으로 돌아가기

다대다 관계와 교차 엔터티

다대다 관계는 양쪽 인스턴스가 서로 여러 건 연결될 수 있다는 개념적 업무 규칙이다. 상세화할 때 관계 자체의 발생을 교차 엔터티로 승격하여 두 1:N 관계로 해소하고, 관계에 종속된 속성과 반복 발생 조건을 교차 엔터티에 귀속시킨다.

예상 읽기 4

핵심 요약

M:N 관계는 개념 모델의 초기 발견 단계에서 유효할 수 있지만, 논리 구조를 상세화할 때는 각 연결 사건을 식별·관리할 교차 엔터티가 필요하다. 교차 엔터티의 식별자는 단순히 양쪽 부모 식별자를 붙이는 것으로 끝나지 않으며 같은 조합의 반복 발생, 관계 속성, 생명주기를 확인해야 한다.

학습 목표

  • M:N 관계가 의미하는 업무 규칙과 해소 시점을 설명한다.
  • 교차 엔터티의 성립 조건과 관계 속성을 판정한다.
  • 복합 식별자와 인조 식별자 선택 시 업무 유일성을 보존한다.
  • 주문항목·수강신청 사례의 잘못된 해소 방식을 찾는다.

1. 다대다 관계의 의미

한 A 인스턴스가 여러 B와 연결되고, 한 B 인스턴스도 여러 A와 연결될 수 있으면 M:N 관계다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
학생 M ─── 수강한다 ─── N 강좌

이 관계는 “누가 어떤 강좌를 수강하는가”라는 연결 사실을 나타내지만 신청일시·학기·상태·성적처럼 관계 자체의 속성을 어디에 둘지 설명하지 못한다. 관계 발생을 독립 인스턴스로 관리하면 수강신청이라는 교차 엔터티가 된다.

2. 교차 엔터티의 도출

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
학생 1 ─── N 수강신청 N ─── 1 강좌

2.1 교차 엔터티 성립 징후

  • 두 엔터티의 조합이 하나의 업무 사건을 만든다.
  • 연결마다 일시·상태·수량·역할 등 독립 속성이 있다.
  • 관계의 생성·변경·취소·종료를 추적해야 한다.
  • 같은 양쪽 조합이 시간·차수·역할에 따라 반복될 수 있다.
  • 다른 엔터티가 이 연결 사건을 참조한다.

관계 속성은 한쪽 부모에 종속되지 않는다. 주문수량은 상품 자체의 속성도, 주문 전체의 속성도 아니며 특정 주문에서 특정 상품을 선택한 주문항목에 속한다.

2.2 명명

교차 엔터티는 부모 이름을 기계적으로 이어 붙이기보다 실제 업무 사건을 나타낸다.

  • 학생+강좌 → 수강신청 또는 수강
  • 주문+상품 → 주문항목
  • 사원+프로젝트 → 프로젝트참여
  • 고객+마케팅캠페인 → 캠페인반응 또는 캠페인대상

업무 의미가 다르면 같은 부모 조합이라도 별도 교차 엔터티가 필요할 수 있다.

3. 식별자 설계

3.1 부모 식별자 조합

학생번호+강좌번호가 유일한지는 업무 규칙에 따라 달라진다. 학생이 같은 강좌를 다른 학기에 재수강할 수 있다면 학기 또는 수강차수가 추가되어야 한다.

3.2 인조 식별자

수강신청번호 같은 인조 키를 주 식별자로 사용할 수 있다. 그러나 중복 신청을 막아야 한다면 학생번호+강좌번호+학기코드를 대체 식별자로 보존한다.

3.3 식별 질문

  1. 양쪽 조합은 한 번만 발생하는가.
  2. 취소 후 재발생을 새 인스턴스로 보는가.
  3. 기간·차수·역할에 따라 같은 조합이 반복되는가.
  4. 관계 속성 중 발생을 구별하는 속성이 있는가.
  5. 다른 엔터티가 이 교차 사건을 참조하는가.

4. 해소 사례

4.1 주문과 상품

잘못된 방식: 주문에 상품번호1, 상품번호2, 상품번호3을 반복 컬럼으로 둔다.

문제:

  • 상품 수의 상한이 구조에 고정된다.
  • 항목별 수량·단가·할인·배송상태를 표현하기 어렵다.
  • 상품별 주문 조회와 무결성 관리가 복잡해진다.

개선:

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
주문 1 ── N 주문항목 N ── 1 상품
주문항목: 주문번호, 항목순번, 상품번호, 주문수량, 적용단가, 할인금액

적용단가는 주문 시점의 가격이므로 상품의 현재 판매가와 분리해 주문항목에 둔다.

4.2 사원과 프로젝트

프로젝트참여에는 참여시작일, 종료일, 역할, 투입률이 있다. 사원의 직급이나 프로젝트의 총예산이 아니라 특정 사원이 특정 프로젝트에 참여한 관계에 종속된 속성이다.

4.3 개념 단계와 논리 단계

개념 모델 초기에 M:N 관계를 표시해 핵심 업무 구조를 빠르게 합의할 수 있다. 하지만 관계 속성과 반복 발생이 확인되면 교차 엔터티를 후보로 승격한다. 논리 모델에서는 일반적으로 직접 M:N 관계를 해소하여 식별자와 상세 관계를 정의한다.

5. 비교와 구분

구분단순 M:N 관계교차 엔터티
표현양쪽 다수 연결 규칙연결 사건을 독립 인스턴스로 관리
속성관계 속성 배치가 어려움일시·상태·수량·역할 등을 보유
식별개별 연결 식별이 불명확부모 조합 또는 인조 키로 식별
사용 단계개념적 발견·초기 합의 가능상세 개념·논리 모델에서 필요

시험 판단 포인트

  • M:N은 무조건 잘못된 발견이 아니라 상세화가 필요한 업무 규칙이다.
  • 교차 엔터티에는 양쪽 부모가 아니라 관계에 종속된 속성을 둔다.
  • 부모 식별자 조합이 항상 유일하다고 가정하지 않는다.
  • 인조 키를 사용해도 실제 중복 금지 조합을 대체 식별자로 유지한다.
  • 반복 컬럼으로 M:N을 회피하면 확장성과 무결성이 훼손된다.

자주 틀리는 부분

  • 교차 엔터티를 만들고도 원래 M:N 관계를 중복 유지한다.
  • 상품의 현재 가격과 주문 시점 적용단가를 같은 속성으로 본다.
  • 재수강·재참여가 가능한데 부모 키 두 개만으로 식별한다.
  • 관계 속성을 편의상 한쪽 부모 엔터티에 넣는다.
스스로 확인하기

개념 확인 문제

문제를 누르면 바로 아래에서 정답과 해설을 확인할 수 있습니다.

01[객관식] 교차 엔터티가 필요한 가장 강한 징후는? - A. 두 엔터티 이름의 글자 수가 길다. - B. 연결마다 일시·상태·수량 등 독립 속성과 생명주기가 있다. - C. 한쪽 엔터티의 데이터가 적다. - D. 물리 테이블에 인덱스가 없다.
정답 및 해설

정답: B

  • 연결 사실 자체가 독립 속성과 생명주기를 가지면 관계를 엔터티로 승격할 필요가 크다.
  • A·C·D는 업무 관계의 독립성과 무관하다.
02[객관식] 주문과 상품의 M:N 관계를 해소한 주문항목에 가장 적절한 속성은? - A. 상품의 표준상품명 - B. 주문 고객의 생년월일 - C. 해당 주문에서 적용된 단가와 주문수량 - D. 상품분류의 설명
정답 및 해설

정답: C

  • 적용단가와 수량은 특정 주문에서 특정 상품을 선택한 관계에 종속된다.
  • A·D는 상품 또는 상품분류, B는 고객에 속한다.
03[참·거짓] 인조 수강신청번호를 PK로 사용하면 동일 학생·강좌·학기의 중복 신청 규칙을 별도로 정의할 필요가 없다.
정답 및 해설

정답: 거짓

  • 인조 PK는 각 행을 기술적으로 구별할 뿐 업무상 중복 신청을 막지 않는다. 자연 후보 조합을 대체 식별자나 UNIQUE 규칙으로 보존한다.
04[식별자 설계] 학생이 같은 강좌를 학기별로 재수강할 수 있다. 수강신청의 자연 후보 식별자와 인조 키 사용 시 보존할 대체 식별자를 제시하라.
정답 및 해설

모범 답안

  • 자연 후보 식별자: 학생번호+강좌번호+학기코드; 재신청 차수를 별도 건으로 허용하면 신청차수까지 포함한다.
  • 인조 수강신청번호를 PK로 사용하더라도 실제 중복 금지 범위에 맞는 자연 조합을 대체 식별자로 유지한다.
05[사례 판단] 사원과 프로젝트 사이에 참여시작일·종료일·역할·투입률을 관리한다. 엔터티와 관계 구조, 속성 귀속 이유를 설명하라.
정답 및 해설

모범 답안

  • 사원 1-N 프로젝트참여 N-1 프로젝트 구조로 해소한다.
  • 참여시작일·종료일·역할·투입률은 사원 자체나 프로젝트 전체가 아니라 특정 사원의 특정 프로젝트 참여 사실에 따라 달라지므로 프로젝트참여에 둔다.
  • 같은 사원이 같은 프로젝트에 재참여할 수 있는지 확인해 기간·차수 또는 인조 식별자를 설계한다.