본문으로 건너뛰기
SQLD 준비실
이론 전체 목차 열기 4 / 32

데이터 모델링의 이해 · ERD와 관계 4 / 32

ERD 표기와 관계 차수 읽기

ERD에서 관계선, 선택성, 1:1·1:N·M:N 관계를 읽고 SQL 조인 결과와 연결하는 방법을 정리합니다.

출제 빈도 ★★★☆☆ 관련 문제 4개 | 1:11:NM:NIEBarker

ERD는 테이블 그림이 아니라 업무 규칙 지도입니다

ERD는 엔터티와 엔터티 사이의 관계를 시각적으로 표현한 모델입니다. 시험에서는 ERD를 보고 어떤 테이블에 외래키가 들어가야 하는지, 관계가 필수인지 선택인지, 결과 행 수가 어떻게 늘어날 수 있는지 묻습니다.

예를 들어 고객과 주문의 관계는 보통 다음과 같이 해석합니다.

고객 1명은 주문을 0건 이상 할 수 있습니다.
주문 1건은 고객 1명에 속합니다.

이 문장을 테이블로 옮기면 주문 테이블에 고객번호 외래키가 들어갑니다.

관계 차수

관계의미설계 기준
1:1한 행이 상대 한 행과 연결합칠지 분리할지 업무와 보안 기준으로 판단
1:N한 행이 상대 여러 행과 연결N쪽에 외래키를 둡니다
M:N양쪽 모두 여러 행과 연결교차 엔터티로 풀어냅니다

M:N 관계는 그대로 구현하기 어렵습니다. 학생과 과목은 M:N 관계이므로 수강 엔터티를 사이에 둡니다.

학생 1:N 수강 N:1 과목

이렇게 바꾸면 SQL 조인 경로도 명확해집니다.

선택성과 필수성

관계는 반드시 있어야 하는 관계와 없어도 되는 관계로 나뉩니다.

구분의미
필수 관계상대 인스턴스가 반드시 존재주문은 고객이 있어야 합니다
선택 관계상대 인스턴스가 없어도 됨고객은 아직 주문이 없을 수 있습니다

선택 관계는 SQL에서 OUTER JOIN이 필요한 상황과 연결됩니다. 주문이 없는 고객까지 보여주어야 한다면 고객을 기준으로 LEFT OUTER JOIN을 사용합니다.

식별 관계 표기 읽기

식별 관계는 부모 식별자가 자식의 주 식별자에 포함되는 관계입니다. 자식 엔터티가 부모 없이는 독립적으로 식별되기 어렵습니다.

주문(주문번호)
주문상세(주문번호, 순번)

주문상세의 식별자에 주문번호가 포함되므로 주문과 주문상세는 식별 관계로 표현할 수 있습니다.

비식별 관계는 부모 키가 자식의 일반 외래키로 들어가지만 자식의 주 식별자에는 포함되지 않습니다.

식별 관계

주문(주문번호)
주문상세(주문번호, 순번)
        └─────┴── PK
  • 부모 키가 자식 PK의 일부입니다.
  • 자식은 부모 없이 독립적으로 식별되기 어렵습니다.
  • ERD에서 보통 실선으로 표기합니다.

비식별 관계

부서(부서번호)
사원(사원번호, 부서번호)
      └── PK       └── FK only
  • 부모 키가 자식의 일반 FK로만 들어갑니다.
  • 자식은 자체 PK로 독립 식별됩니다.
  • ERD에서 보통 점선으로 표기합니다.

ERD를 SQL로 바꾸는 방법

  1. 엔터티를 테이블로 봅니다.
  2. 속성을 컬럼으로 봅니다.
  3. 주 식별자를 기본키 후보로 봅니다.
  4. 1:N 관계에서 N쪽 외래키를 찾습니다.
  5. 선택 관계라면 OUTER JOIN 가능성을 고려합니다.
  6. M:N 관계라면 중간 테이블을 거쳐 조인합니다.

시험장에서 유의할 지점

  • M:N 관계를 외래키 하나로만 해결하려는 경우가 있습니다.
  • 선택 관계인데 내부 조인만 고려하는 경우가 있습니다.
  • 관계 차수의 기준을 전체 테이블 크기로 혼동하는 경우가 있습니다.
  • 식별 관계와 비식별 관계를 외래키 존재 여부만으로 판단하기 쉽습니다.

한 문장 요약

ERD의 관계 차수와 선택성은 외래키 위치와 SQL 조인 방식을 결정합니다.