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

DAP 이론 학습

이론 목록으로 돌아가기

관계·기수성·선택성 정의

관계는 두 엔터티의 인스턴스가 어떤 업무 의미로 연결되는지를 나타낸다. 관계명은 양방향 동사구로 명확히 읽고, 기수성은 최대 연결 수, 선택성은 최소 연결 수를 업무 규칙에 따라 정하며 식별·비식별, 재귀·병렬 관계까지 구분한다.

예상 읽기 5

핵심 요약

관계선은 단순한 외래키 연결이 아니라 업무 규칙이다. 고객-주문이라는 엔터티 쌍만으로는 주문이 고객 없이 존재 가능한지, 고객 한 명이 주문을 몇 건 가질 수 있는지, 어떤 역할로 연결되는지 알 수 없다. 관계명·기수성·선택성을 문장으로 검증해야 한다.

학습 목표

  • 관계의 성립 근거와 관계명을 업무 문장으로 작성한다.
  • 최대 기수성과 최소 선택성을 구분한다.
  • 식별·비식별 관계의 의미를 판정한다.
  • 재귀·병렬 관계와 현재 데이터에 의존한 잘못된 판정을 찾는다.

1. 관계의 정의와 성립 근거

관계는 한 엔터티의 인스턴스가 다른 엔터티의 인스턴스와 맺는 업무상 연관이다. 다음 근거로 도출한다.

  • 업무 규칙: “고객은 계약을 체결한다.”
  • 사건의 주체·대상: “사원이 주문을 승인한다.”
  • 식별 의존: 주문항목은 특정 주문에 속한다.
  • 참조와 분류: 상품은 하나의 상품분류에 속한다.
  • 계층·재귀: 조직은 상위 조직을 가질 수 있다.

단순히 두 테이블에 같은 컬럼명이 있다는 사실만으로 업무 관계를 확정하지 않는다. 반대로 물리 외래키가 아직 없어도 업무 규칙상 관계가 존재할 수 있다.

2. 관계의 구성요소

2.1 관계명

관계명은 엔터티 사이의 업무 의미를 동사형으로 표현한다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
고객은 주문을 한다.
주문은 고객에 의해 접수된다.
  • 두 방향에서 자연스럽게 읽는다.
  • 관련된다, 연결된다처럼 의미가 약한 표현을 피한다.
  • 병렬 관계가 있으면 역할을 구분한다. 예: 사원이 부서에 소속된다, 사원이 부서를 관리한다.
  • 관계명은 구현 컬럼명보다 업무 사건을 설명한다.

2.2 기수성

기수성은 일반적으로 한 인스턴스가 반대편 엔터티의 인스턴스와 연결될 수 있는 최대 수를 나타낸다.

  • 1: 최대 한 개
  • N: 여러 개 가능

2.3 선택성

선택성은 연결의 최소 수를 나타낸다.

  • 필수: 최소 1개, 관계 없이 존재할 수 없음
  • 선택: 최소 0개, 관계 없이도 존재 가능

업무 규칙 “고객은 주문을 하지 않을 수도 있다”에서 고객 기준 주문은 선택(0)이다. “모든 주문은 반드시 한 고객에게 속한다”에서 주문 기준 고객은 필수(1)다.

2.4 판정 표

최소..최대의미예시 문장
0..1없거나 하나사원은 주차공간을 배정받지 않거나 하나 배정받는다
1..1반드시 하나주문은 반드시 한 주문고객을 가진다
0..N없거나 여러 개고객은 주문을 하지 않거나 여러 번 한다
1..N하나 이상 여러 개주문은 하나 이상의 주문항목으로 구성된다

3. 관계의 유형

3.1 식별 관계와 비식별 관계

  • 식별 관계: 부모 식별자가 자식의 주 식별자 구성에 참여한다. 자식의 식별이 부모에 의존한다.
  • 비식별 관계: 부모 식별자가 자식에 참조 속성으로 이관되지만 자식 주 식별자에는 포함되지 않는다.

예를 들어 주문항목주문번호+항목순번으로 식별하면 주문과 주문항목은 식별 관계가 될 수 있다. 주문항목번호라는 독립 인조 키를 주 식별자로 사용하고 주문번호는 일반 참조라면 비식별 관계로 구현할 수 있다. 어떤 방식을 택하든 “주문항목은 주문 없이 존재할 수 없다”는 존재 의존 규칙을 별도로 확인한다.

식별성과 선택성은 같은 개념이 아니다. 비식별 관계라도 외래키가 필수여서 부모 연결이 반드시 필요할 수 있다.

3.2 재귀 관계

같은 엔터티의 인스턴스끼리 역할이 다른 관계를 맺는다.

  • 조직은 상위 조직을 가질 수 있다.
  • 사원은 다른 사원을 관리할 수 있다.
  • 상품은 대체 상품을 가질 수 있다.

상위·하위, 관리자·부하처럼 역할명을 명확히 하고 최상위 조직처럼 부모가 없는 예외를 선택성에 반영한다.

3.3 병렬 관계

같은 두 엔터티 사이에 업무 의미가 다른 관계가 둘 이상 존재한다. 사원-부서의 소속 부서와 관리 부서, 주문-주소의 청구 주소와 배송 주소처럼 역할별 관계명과 기수성을 별도로 정의한다.

4. 관계 도출과 검증 절차

  1. 업무 문장에서 주어·동사·목적어와 역할을 찾는다.
  2. 두 엔터티 인스턴스 사이의 관계명과 발생 근거를 적는다.
  3. 한 방향씩 최소·최대 연결 수를 질문한다.
  4. 현재 데이터가 아니라 허용 가능한 업무 규칙으로 판정한다.
  5. 식별 의존, 존재 의존과 변경 가능성을 검토한다.
  6. 재귀·병렬·다대다 여부와 관계 속성을 확인한다.
  7. 예외 시나리오와 반대 방향 문장으로 검증한다.

4.1 현재 데이터 함정

현재 모든 고객이 주문을 1건 이상 가지고 있어도 신규 가입 직후 주문이 없는 고객이 허용된다면 선택성은 0이다. 현재 최대 주문 수가 5건이어도 업무상 제한이 없다면 최대 기수성은 N이다. 표본 데이터의 우연한 상태를 업무 규칙으로 오인하지 않는다.

5. 사례

업무 규칙:

  1. 모든 계약은 반드시 한 고객과 체결한다.
  2. 고객은 계약이 없을 수도 있고 여러 계약을 가질 수 있다.
  3. 계약은 담당 사원이 없을 수 있으나 한 번에 최대 한 명만 담당한다.
  4. 사원은 여러 계약을 담당할 수 있다.

판정:

  • 고객 기준 계약: 0..N
  • 계약 기준 고객: 1..1
  • 계약 기준 담당사원: 0..1
  • 사원 기준 담당계약: 0..N

관계명은 고객은 계약을 체결한다, 사원은 계약을 담당한다처럼 각 역할을 구분한다.

시험 판단 포인트

  • 기수성은 최대 연결 수, 선택성은 최소 연결 수를 중심으로 구분한다.
  • 관계는 양방향 문장으로 읽어 두 엔터티의 규칙을 모두 확인한다.
  • 식별 관계와 필수 관계는 동일하지 않다.
  • 현재 데이터 분포보다 허용되는 업무 규칙을 우선한다.
  • 재귀·병렬 관계는 역할명을 생략하면 의미가 모호해진다.

자주 틀리는 부분

  • 부모 쪽 선택성과 자식 쪽 선택성을 뒤집어 읽는다.
  • 외래키가 널이 아니면 반드시 식별 관계라고 판단한다.
  • 현재 존재하는 최대 건수를 최대 기수성으로 확정한다.
  • 동일 엔터티 쌍의 여러 관계를 하나로 합쳐 역할을 잃는다.
스스로 확인하기

개념 확인 문제

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

01[객관식] 관계 선택성의 설명으로 가장 적절한 것은? - A. 연결 가능한 최대 인스턴스 수 - B. 관계 참여에 필요한 최소 인스턴스 수 - C. 관계선의 화면 색상 - D. 테이블의 전체 행 수
정답 및 해설

정답: B

  • 선택성은 관계 참여가 0부터 가능한지 최소 1이 필요한지를 나타낸다.
  • A는 최대 기수성, C·D는 관계 의미와 무관하다.
02[객관식] 식별 관계에 대한 설명으로 옳은 것은? - A. 모든 필수 관계는 식별 관계다. - B. 부모 식별자가 자식 주 식별자 구성에 참여한다. - C. 외래키는 반드시 널을 허용한다. - D. 자식은 항상 독립 인조 키를 사용한다.
정답 및 해설

정답: B

  • 식별 관계에서는 부모 식별자가 자식 주 식별자 일부가 된다.
  • A는 비식별 필수 관계가 가능하므로 틀리고, C·D는 식별 관계의 필수 조건이 아니다.
03[참·거짓] 현재 모든 고객이 주문을 가지고 있다면 고객 기준 주문 관계의 최소값은 업무 규칙 확인 없이 1로 확정할 수 있다.
정답 및 해설

정답: 거짓

  • 현재 데이터는 우연한 상태일 수 있다. 신규 고객이 주문 없이 존재 가능한지 업무 규칙으로 최소값을 결정한다.
04[판독형] “부서는 사원을 0명 이상 둘 수 있고, 사원은 반드시 한 부서에 소속된다”는 규칙의 양방향 최소·최대 수를 작성하라.
정답 및 해설

모범 답안

  • 부서 한 건 기준 사원은 0..N이다.
  • 사원 한 건 기준 소속 부서는 1..1이다.
  • 부서는 사원을 소속시킨다 / 사원은 부서에 소속된다로 양방향 검증한다.
05[사례 판단] 사원과 부서 사이에 소속 관계와 관리 관계가 있다. 두 관계를 합치면 안 되는 이유와 각각 확인할 선택성 질문을 제시하라.
정답 및 해설

모범 답안

  • 소속과 관리 책임은 다른 업무 의미와 역할을 가지므로 병렬 관계로 구분한다.
  • 소속 관계: 사원이 부서 없이 존재 가능한지, 한 사원이 여러 부서에 동시 소속 가능한지 확인한다.
  • 관리 관계: 모든 부서에 관리자가 반드시 필요한지, 한 사원이 여러 부서를 관리할 수 있는지 확인한다.
  • 하나로 합치면 소속 부서와 관리 부서를 구별할 수 없다.