Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

DBMS의 일대다(1:N)와 다대일(N:1) 관계, 개념부터 예시까지 한 번에 이해하기

데이터베이스 관리 시스템(DBMS)에서 엔터티(개체) 사이의 관계는 일대다(1:N) 또는 다대일(N:1) 형태로 나타날 수 있습니다. 두 관계는 방향만 반대일 뿐 본질적으로 같은 구조이며, 어떤 엔터티를 기준으로 바라보는지에 따라 명칭이 달라집니다. 아래에서 각 개념을 예시와 함께 자세히 살펴보겠습니다.

일대다(One-to-Many) 관계란?

일대다 관계는 한 엔터티의 하나의 인스턴스가 다른 엔터티의 여러 인스턴스와 연결되는 관계를 의미합니다. 즉, '하나'가 '여러 개'에 대응되는 구조입니다.

관계를 도식으로 표현하면 다음과 같습니다.

DBMS의 일대다(1:N)와 다대일(N:1) 관계, 개념부터 예시까지 한 번에 이해하기

예시로 이해하는 일대다 관계

한 명의 학생은 동시에 여러 개의 프로젝트에 참여할 수 있습니다. 이때 학생(Student)프로젝트(Project)는 서로 다른 엔터티입니다.

예를 들어, 특정 학생이 한 학기에 2개의 프로젝트를 동시에 진행한다고 가정해 보겠습니다. 이 경우 '한 명의 학생 : 여러 개의 프로젝트' 구조가 성립하므로, DBMS 관점에서 일대다(1:N) 관계라고 할 수 있습니다.

DBMS의 일대다(1:N)와 다대일(N:1) 관계, 개념부터 예시까지 한 번에 이해하기

다대일(Many-to-One) 관계란?

다대일 관계는 그 반대로, 한 엔터티의 여러 인스턴스가 다른 엔터티의 단 하나의 인스턴스와 연결되는 관계를 의미합니다.

관계를 도식으로 표현하면 다음과 같습니다.

DBMS의 일대다(1:N)와 다대일(N:1) 관계, 개념부터 예시까지 한 번에 이해하기

예시로 이해하는 다대일 관계

하나의 프로젝트에는 여러 명의 학생이 참여할 수 있습니다. 예를 들어, 대학에서 5명으로 구성된 팀에게 한 달 안에 완성해야 하는 프로젝트 하나가 배정되었다고 생각해 보세요.

이 경우 '여러 명의 학생 : 하나의 프로젝트'라는 구조가 되며, 이는 학생(Student)프로젝트(Project) 두 엔터티 간의 다대일(N:1) 관계를 보여주는 전형적인 예입니다.

DBMS의 일대다(1:N)와 다대일(N:1) 관계, 개념부터 예시까지 한 번에 이해하기

일대다 vs 다대일, 핵심 정리

두 관계는 결국 같은 상황을 서로 다른 방향에서 바라본 것입니다.

  • 학생 → 프로젝트 기준: 한 학생이 여러 프로젝트를 수행하므로 일대다(1:N)
  • 프로젝트 → 학생 기준: 하나의 프로젝트에 여러 학생이 참여하므로 다대일(N:1)

즉, 관계의 종류 자체는 동일하지만 어느 엔터티를 주체로 삼느냐에 따라 부르는 이름이 달라진다는 점이 핵심입니다. 데이터베이스 설계 시 이러한 카디널리티(Cardinality, 관계 대응 수)를 정확히 파악해야 테이블 구조와 외래 키(Foreign Key) 설정을 올바르게 할 수 있습니다.