관계: 차수·카디널리티·선택성

데이터 모델링의 이해 · 엔터티, 속성, 관계

이 페이지의 목차

핵심 요약

관계의 구성 요소와 1:1·1:M·M:N, 필수·선택 참여를 업무 문장으로 판별한다.

SQLD·SQLP 공통 모델링 문제에서는 관계의 최소·최대 기수성과 선택성을 업무 문장으로 판정한다. ERD 도구별 선 모양은 지문 범례가 우선이다.

학습 목표

  • 관계의 존재성과 행위성을 설명한다.
  • 관계 차수, 카디널리티와 선택성을 ERD에서 읽는다.

본문

개념 지도

도식
업무 사실→엔터티와 행 단위→속성·도메인→관계·카디널리티→제약

핵심 내용

관계는 두 엔터티 사이의 업무상 연관 규칙이다. 고객이 주문을 한다는 행위 관계, 부서에 사원이 소속된다는 존재 관계처럼 양쪽 관점의 관계명을 문장으로 읽어야 한다.

  • 관계 차수(Degree): 관계에 참여하는 엔터티 수
  • 카디널리티: 한 인스턴스와 대응하는 상대 인스턴스의 수(1:1, 1:M, M:N)
  • 선택성/Optionality: 관계 참여가 필수인지 선택인지(최소 1 또는 0)

논리 모델의 M:N 관계는 구현 단계에서 보통 연결 엔터티로 해소한다. 예를 들어 학생과 과목 사이의 수강 관계는 수강(학생번호, 과목번호, 수강일자) 같은 엔터티가 된다.

관계는 실제 업무 규칙으로 검증한다. “모든 주문은 반드시 한 고객에게 속하는가?”, “고객은 주문이 없어도 존재할 수 있는가?”처럼 양방향으로 질문한다.

최소·최대 카디널리티를 따로 읽기

도식
고객 1명  ── 주문 0..N건
주문 1건  ── 고객 정확히 1명

이 관계에는 두 방향의 규칙이 있다. 고객은 주문 없이도 존재할 수 있으므로 고객→주문의 최소값은 0이고, 주문은 반드시 고객 한 명에 속하므로 주문→고객의 최소·최대값은 모두 1이다.

SQL
CREATE TABLE orders (
  order_id    NUMBER PRIMARY KEY,
  customer_id NUMBER NOT NULL,
  CONSTRAINT orders_customer_fk
    FOREIGN KEY (customer_id) REFERENCES customer(customer_id)
);

NOT NULL은 주문 쪽 필수 참여를, FK는 참조 대상의 존재를 보장한다. 고객이 주문을 반드시 한 건 이상 가져야 한다는 반대 방향의 최소값은 이 DDL만으로 자동 보장되지 않으며 별도 업무 절차가 필요하다.

M:N을 연결 엔터티로 바꾸기

학생과 과목은 M:N이지만 실제 업무에는 수강일자·성적·상태 같은 관계 자체의 속성이 존재한다.

도식
학생 1 ── N 수강 N ── 1 과목
수강 PK = (학생번호, 과목번호, 학기)

연결 엔터티를 만들면 “한 학생이 같은 과목을 학기마다 다시 수강할 수 있는가?” 같은 업무 유일성을 PK로 표현할 수 있다.

식별 관계 여부

부모 식별자가 자식 PK에 포함되면 식별 관계다. 포함되지 않고 단순 FK로만 존재하면 비식별 관계다. 생명주기 종속성과 업무 식별 규칙을 확인해 선택하며, 선 굵기나 모양만 외우지 않는다.


시험 포인트

문항 풀이 보강: 관계를 검증하는 네 가지 질문

관계는 엔터티가 존재한다는 이유만으로 자동 생성되지 않는다. 다음을 업무 문장과 데이터 조합으로 확인한다.

  1. 두 엔터티 사이에 업무상 관심 있는 연관 규칙이 있는가?
  2. 두 엔터티의 정보를 함께 조회하거나 조합하는 업무가 있는가?
  3. 업무 기술서나 장표에 연결 규칙이 표현되어 있는가?
  4. 관계 연결을 가능하게 하는 동사와 조인 기준이 있는가?

관계의 표기에는 관계명, 차수(Degree), 카디널리티와 선택성이 포함된다. 두 엔터티가 참여하는 관계는 2항 관계이고, 한 고객이 주문 여러 건과 연결되면 1:M이다.

예시·텍스트
고객은 주문을 0건 이상 할 수 있다.
주문은 반드시 한 고객에 속한다.

이처럼 양쪽 방향으로 최소값(0 또는 1)과 최대값(1 또는 다수)을 각각 읽어야 한다. 선택 관계는 최소 카디널리티가 0이라는 뜻이고, 1:M의 M은 최대 카디널리티다.

문제에 적용하는 순서

  1. 두 엔터티를 주어와 목적어로 바꾸어 양방향 문장을 만든다.
  2. 각 방향의 최소와 최대를 따로 표시한다.
  3. M:N이면 연결 엔터티가 필요한지 확인한다.
  4. 단순히 함께 등장한다는 이유만으로 관계라고 판단하지 않는다.

자주 틀리는 부분

  • 1:M에서 FK는 일반적으로 M 쪽에 위치한다.
  • 선택 관계라고 해서 FK 컬럼이 항상 NULL 허용인 것은 아니다. 관계 구현 방식과 다른 제약을 함께 본다.
  • 관계명 없이 선만 그으면 행위의 의미와 방향을 검증하기 어렵다.

복습 문제

답을 생각한 뒤 정답과 근거를 펼쳐 보세요.

01

고객 1명이 주문 여러 건을 만들 수 있을 때 카디널리티는?

정답과 근거

고객 대 주문은 1:N 관계입니다.

02

M:N 관계를 물리 테이블로 바로 두기 어려운 이유는?

정답과 근거

두 부모의 조합별 속성과 식별 규칙을 둘 위치가 모호해지므로 교차 엔터티로 해소해야 합니다.

본문 예제

논리 모델의 M:N 관계는 구현 단계에서 보통 연결 엔터티로 해소한다. 예를 들어 학생과 과목 사이의 수강 관계는 수강(학생번호, 과목번호, 수강일자) 같은 엔터티가 된다.

03

고객 없이 주문이 생성될 수 있는지에 따라 관계의 최소 참여 수를 어떻게 표기하는가?

정답과 근거

주문이 고객 없이 가능하면 주문 쪽에서 고객 참여 최소값은 0, 반드시 고객이 있어야 하면 1로 표기합니다. 최대값은 한 주문당 고객 하나라는 업무 규칙에 따라 1입니다.