node.js에서 mysql 사용 - 2 (table relation)

gogigogigogi·2024년 12월 10일

테이블 관계(relationship)

  • 테이블은 서로 관계를 맺으며 1:1, 1:N, N:N 등의 관계 형태를 가질 수 있다.

    models/index.js 에서 테이블 모델을 만들고 관계 설정을 한 후에 db객체에 담아 내보내기한다.

1:1 관계

  • user와 profile 테이블 관계처럼 한명의 유저는 해당하는 유저의 프로필만을 가진다. 반대로도 특정 프로필은 특정 유저에게만 속해있다.
  • 하나의 레코드(튜플)는 다른 테이블의 레코드 하나에만 연결되는 경우

    생성 방법

  • 모델은 생성 관리하는 models/index.js에서 관계 설정
  • hasOne() - pk를 가지는 테이블쪽 기준으로 사용한다.
  • belongsTo() - fk를 가지는 테이블쪽 기준으로 사용한다.

1:N 관계

  • team와 player 테이블 관계처럼 하나의 팀은 여러개명의 player를 가진다.
  • 하나의 레코드(튜플)가 다른 테이블의 레코드 여러개와 연결되는 경우

    생성 방법

  • 모델은 생성 관리하는 models/index.js에서 관계 설정
  • hasMany() - pk를 가지는 테이블쪽 기준으로 사용한다.
  • belongsTo() - fk를 가지는 테이블쪽 기준으로 사용한다.

M:N 관계

  • team와 game 테이블 관계처럼 각 팀들은 각각 여러개의 game을 가지고 각 game 은 각각 여러 팀에 연결되어 있을 수 있다.
  • 여러개의 레코드(튜플)가 다른 테이블의 레코드 여러개와 연결되는 경우

    생성 방법

  • 모델은 생성 관리하는 models/index.js에서 관계 설정
  • belongsToMany() - fk를 가지는 테이블쪽 기준으로 사용한다.
  • through - 해당 속성값으로 중간 테이블 모델을 설정한다.
    • 중간 테이블이 다대다 관계를 가진 각 테이블의 pk를 외래키로 가지고 있다.

foreignKey 속성 값을 지정할때 임의의 문자열을 사용해야 한다면, foreignKey값을 임의로 하고
대신 sourceKey 속성 값으로 테이블내 존재하는 컬럼명을 지정해야 한다.

0개의 댓글