본문 바로가기
자격증 준비/SQLD

관계(Relationship)란 무엇인가: 1:1, 1:N, N:M 쉽게 이해하기

by 코딩사무소장 2026. 3. 12.
반응형

관계(Relationship)란 무엇인가: 1:1, 1:N, N:M 쉽게 이해하기

데이터 모델링을 공부하다 보면 관계(Relationship)라는 개념이 꼭 나옵니다. 그런데 처음에는 엔터티, 속성, 식별자까지도 헷갈리는데 관계까지 나오면 더 복잡하게 느껴질 수 있습니다. 결론부터 말하면 관계는 엔터티와 엔터티가 서로 어떻게 연결되는지를 나타내는 개념입니다. 이 글에서는 SQL 초보자와 SQLD 준비생이 헷갈리지 않도록 관계의 의미, 1:1·1:N·N:M 차이, 자주 하는 실수까지 한 번에 정리해보겠습니다.

이 글은 이런 분께 추천합니다
  • 관계(Relationship)가 무엇인지부터 헷갈리는 분
  • 1:1, 1:N, N:M 차이를 쉽게 정리하고 싶은 분
  • SQLD 데이터 모델링 파트를 공부하는 분
  • 엔터티끼리 어떻게 연결되는지 감이 안 오는 비전공자

관계란 무엇인가

관계는 엔터티와 엔터티가 서로 연결되는 방식입니다.

예를 들어 쇼핑몰을 생각해보면 회원, 주문, 상품 같은 엔터티가 있습니다. 여기서 회원은 주문을 할 수 있고, 주문에는 상품이 포함될 수 있습니다. 이런 연결 구조를 설명하는 것이 바로 관계입니다.

쉽게 말하면 관계는 “누가 누구와 어떻게 연결되는가”를 보여주는 것입니다.

왜 관계를 알아야 할까

관계를 이해해야 테이블을 어떻게 나눌지, 외래키를 어디에 둘지, JOIN을 어떻게 할지 정할 수 있습니다.

  • 엔터티 간 연결 구조를 명확히 할 수 있다
  • PK와 FK 설계가 쉬워진다
  • JOIN 구조를 이해하기 쉬워진다
  • 중복 없이 데이터를 나누는 데 도움이 된다

즉, 관계를 이해하면 데이터 모델링 전체 그림이 훨씬 또렷해집니다.

관계는 보통 세 가지를 먼저 본다

입문 단계에서는 아래 세 가지 관계를 먼저 이해하면 됩니다.

  • 1:1 관계
  • 1:N 관계
  • N:M 관계

이 세 가지만 정확히 이해해도 SQLD 데이터 모델링 문제의 기본 틀은 대부분 잡힙니다.

1:1 관계란

1:1 관계는 한 쪽의 한 데이터가 다른 쪽의 한 데이터와만 연결되는 관계입니다.

예를 들어 회원과 회원상세정보를 나눠 저장한다고 해보겠습니다.

회원 1명 ↔ 회원상세정보 1개

회원 한 명에게 상세정보가 하나씩만 있다면 1:1 관계로 볼 수 있습니다.

1:1 관계 예시

  • 회원 ↔ 회원상세정보
  • 사원 ↔ 사원증
  • 주민 ↔ 주민등록정보

1:N 관계란

1:N 관계는 한 쪽의 한 데이터가 다른 쪽의 여러 데이터와 연결될 수 있는 관계입니다.

가장 자주 나오는 관계이고, 실무에서도 매우 흔합니다.

예를 들어 회원과 주문 관계를 생각해보겠습니다.

회원 1명 → 주문 여러 개

회원 한 명은 주문을 여러 번 할 수 있지만, 하나의 주문은 보통 한 회원에 속합니다. 그래서 회원과 주문은 1:N 관계라고 볼 수 있습니다.

1:N 관계 예시

  • 회원 ↔ 주문
  • 부서 ↔ 사원
  • 교수 ↔ 과목

N:M 관계란

N:M 관계는 양쪽 모두 여러 개와 연결될 수 있는 관계입니다.

예를 들어 학생과 과목을 생각해보겠습니다.

학생 여러 명 ↔ 과목 여러 개

학생 한 명은 여러 과목을 들을 수 있고, 과목 하나도 여러 학생이 들을 수 있습니다. 그래서 학생과 과목은 N:M 관계입니다.

N:M 관계 예시

  • 학생 ↔ 과목
  • 주문 ↔ 상품
  • 사용자 ↔ 권한

N:M 관계는 왜 바로 구현하지 않을까

데이터베이스에서는 보통 N:M 관계를 그대로 두지 않고, 중간 엔터티를 만들어 1:N + N:1 형태로 나누어 표현합니다.

예를 들어 학생과 과목 사이에는 수강신청이라는 중간 엔터티를 둘 수 있습니다.

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

이렇게 바꾸면 관계를 더 안정적으로 관리할 수 있고, 성적이나 신청일 같은 추가 정보도 함께 저장하기 쉬워집니다.

1:1, 1:N, N:M 관계를 표로 비교하면

관계 종류 의미 예시
1:1 한 쪽 하나 ↔ 다른 쪽 하나 회원 ↔ 회원상세정보
1:N 한 쪽 하나 ↔ 다른 쪽 여러 개 회원 ↔ 주문
N:M 양쪽 모두 여러 개 학생 ↔ 과목

초보자가 관계에서 자주 하는 실수

자주 하는 실수 1

1:N 관계를 1:1처럼 생각하는 것

예를 들어 회원은 주문을 여러 번 할 수 있는데, 이를 1:1처럼 보면 설계가 잘못될 수 있습니다.

자주 하는 실수 2

N:M 관계를 그대로 테이블에 넣으려는 것

보통은 중간 엔터티를 만들어 풀어야 관리와 확장이 쉬워집니다.

자주 하는 실수 3

관계 방향보다 의미를 먼저 안 보는 것

숫자만 외우기보다 “한 회원이 주문을 몇 개 할 수 있는가?”처럼 실제 업무 의미로 생각하는 것이 더 중요합니다.

비전공자는 이렇게 외우면 쉽다

  • 1:1 = 하나는 하나와만 연결
  • 1:N = 하나가 여러 개를 가질 수 있음
  • N:M = 서로 여러 개씩 연결 가능
  • N:M은 보통 중간 엔터티로 풀어준다고 기억하면 쉽습니다.

핵심 요약

  • 관계는 엔터티와 엔터티가 어떻게 연결되는지 보여주는 개념입니다.
  • 1:1은 하나와 하나의 관계입니다.
  • 1:N은 하나와 여러 개의 관계입니다.
  • N:M은 양쪽 모두 여러 개와 연결되는 관계입니다.
  • N:M 관계는 보통 중간 엔터티로 나누어 구현합니다.

FAQ

관계는 왜 중요한가요?

엔터티 간 연결 구조를 알아야 외래키, JOIN, 테이블 분리가 자연스럽게 설계되기 때문입니다.

1:N 관계는 가장 쉽게 어떻게 이해하면 되나요?

하나의 데이터가 다른 여러 데이터와 연결될 수 있는 구조라고 생각하면 쉽습니다. 예를 들면 회원 1명과 주문 여러 개입니다.

N:M 관계는 왜 바로 구현하지 않나요?

보통 중간 엔터티를 둬야 관리와 확장이 쉬워지고, 추가 정보도 안정적으로 저장할 수 있기 때문입니다.

SQLD에서도 관계 유형이 자주 나오나요?

네. 데이터 모델링 기본 개념이라 엔터티, 식별자, 외래키와 함께 자주 연결되어 나옵니다.

관계는 숫자로만 외우면 되나요?

숫자보다 실제 업무 의미로 이해하는 것이 중요합니다. 누가 몇 개를 가질 수 있는지 생각하면 훨씬 쉽게 보입니다.

반응형