[MySQL] 테이블 간 관계 설정

Hyebin·2021년 8월 26일
0

DB

목록 보기
3/4
post-thumbnail

각 테이블간 관계를 설정할 수 있는데 아래와 같이 나눠질 수 있다.

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

1:1 관계

테이블 레코드(행) 하나당 다른 테이블의 한 레코드(행)와 연결되어 있는 경우이다.

User 테이블은 Phone 테이블의 phone_id를 외래키로 참조하고 있다.

유저와 전화번호 간의 관계를 아래와 같이 가정해보면 1:1 관계가 된다.

  • 한 개의 전화번호당 한 명의 유저를 가진다.
  • 한 명의 유저는 한 개의 전화번호를 가질 수 있다.

1:N 관계

테이블의 레코드(행) 하나당 여러 개의 레코드(행)와 연결되어 있는 경우이다.

다시 전화번호와 유저를 예로 아래와 같은 가정을 한다.

  • 한 유저가 여러 개의 전화번호를 가질 수 있다.
  • 한 개의 전화번호는 한 유저만 가질 수 있다.
    유저는 여러개를 가질 수 있지만 전화번호는 한 유저에게만 할당된다. 이때 유저와 전화번호는 일대다 관계가 된다.

N:N 관계

여러 개의 레코드(행)가 여러 개의 레코드를 가지는 관계이다. N:N 관계일 때는 따로 조인 테이블을 만들어서 관리해야한다.

여행상품이 있다고 하다면 양방향에서 다수를 가지는 아래의 경우 다대다 관계가 된다.

  • 한 고객은 여러 개의 여행상품을 이용할 수 있다.
  • 한 여행 상품은 여러명의 고객을 가질 수 있다.

customer_package 테이블은 customer_id와 package_id를 묶는 조인테이블 역할을 한다.

0개의 댓글