CS

[SQLD] 관계(Relationship)

2026년 02월 10일 01:00

SQLD 1과목 – 관계(Relationship)

관계(Relationship)란?

관계(Relationship) 는 두 엔터티(Entity) 간에 존재하는 업무적 연관성을 의미한다.

  • 관계는 엔터티 단위가 아니라 인스턴스(행) 단위에서 성립 여부를 판단
  • 엔터티의 정의나 범위가 바뀌면 관계의 종류·방향도 달라질 수 있음

관계의 종류

① 존재적 관계

  • 한 엔터티의 존재 여부가 다른 엔터티에 영향을 미치는 관계
  • 주로 부모–자식 구조
  • 어떤 엔터티는 다른 엔터티가 있어야만 존재 가능

  • 부서 – 사원 → 부서가 사라지면 소속 사원의 존재에 영향

② 행위적 관계

  • 업무 행위에 의해 새로운 엔터티가 생성되거나 변경되는 관계
  • 어떤 행동의 결과로 데이터가 발생

  • 고객 – 주문 → 고객의 “주문한다”라는 행위로 주문 엔터티 생성

📌 주의

  • ERD에서는 존재적/행위적 관계를 구분하지 않음
  • 개념 이해용 분류일 뿐

관계의 구성 요소 ⭐⭐

① 관계명(Relationship Name)

  • 관계의 의미를 표현
  • 동사형으로 표현

  • 고객 (주문한다) 주문
  • 학생 (수강한다) 강의
  • 부서 (배치한다) 사원

② 차수(Cardinality)

  • 두 엔터티가 얼마나 많이 연결되는지
  • 인스턴스 간의 수량 관계를 의미

1 : 1 (일대일)

  • 한 인스턴스가 하나의 인스턴스와만 연결

  • 사원 – 사원증
  • 국가 – 수도

1 : N (일대다)

  • 하나는 여러 개와 연결 가능

  • 부서 – 사원
  • 고객 – 계좌

N : M (다대다)

  • 양쪽 모두 여러 개와 연결

특징

  • 조인 시 카테시안 곱 위험
  • 실제 모델링에서는
    • 연결(교차) 엔터티 추가
    • N:M → 1:N + 1:N으로 분해

  • 학생 – 강의
  • 직원 – 프로젝트

선택성(Optionality)

선택성은 관계가 반드시 존재해야 하는지 여부를 나타낸다.

① 필수 관계 (Mandatory)

  • 반드시 상대 엔터티와 관계를 가져야 함

  • 사원 → 부서
  • 계좌 → 고객

👉 계좌가 있으면 반드시 고객이 있어야 함

② 선택 관계 (Optional)

  • 관계가 없어도 엔터티 존재 가능

  • 부서 → 사원
  • 고객 → 계좌

👉 부서는 사원이 없어도 존재 가능

📌 중요

  • 같은 두 엔터티라도 관계의 방향에 따라 필수/선택이 달라질 수 있음

ERD에서의 관계 표현

sqld-relation

① 차수 표현

IE 표기법

  • | : 1
  • |< : N

Barker 표기법

  • IE와 동일하게 < 사용
  • | 기호는 사용하지 않음 (식별/비식별 관계 표현에 사용되기 때문)

② 필수 / 선택 관계 표현

IE 표기법

  • 필수 관계: 원이 없음
  • 선택 관계: 원을 그림

Barker 표기법

  • 필수 관계: 실선
  • 선택 관계: 점선