Sequelize Relration
시퀄라이즈 관계 설정하기
시퀄라이즈를 통해 mysql에 생성한 테이블간의 관계를 성립 시키기 위해 관계 설정을 해주어야 한다. 관계 설정에는 어떤 방식이 이용되는지 살펴 보도록 하자.
👉Relretions
Sequelize에서 관계를 설정하기 위해 사용하는 옵션은 다음과 같다.
관계 설정 옵션 | |
---|---|
hasOne, belongsTo | 1 대 1 관계 |
hasMany, belongsTo | 1 대 N 관계 |
belongsToMany | N 대 M 관계 |
3가지 관계에 대한 메서드는 표에 정리된 것과 같다.
👉관계 설정해보기
1 : 1 관계
일대일 관계를 맺는 방법은 참조될 정보를 가진 테이블에 hasOne 메서드를 키를 참조해가는 테이블에 belongsTo 메서드를 사용하면 된다.
예를 들어 유저 한명은 하나의 프로필 이미지를 가질 수 있다는 가정을 해보자.
1 |
// 유저 모델 |
이렇게 설정 시 Image테이블에 ‘MyId’라는 외래키 컬럼이 생성된다.
1 : N 관계
일대다 관계를 맺는 방법은 참조될 정보를 가진 테이블에 hasMany 메서드를 키를 참조해가는 테이블에 belongsTo 메서드를 사용한다.
예를 들어 유저 한명은 여러개의 게시물을 작성 할 수 있다고 가정을 해보자.
1 |
// 유저 모델 |
이렇게 설정시 Post테이블에 ‘UserId’라는 외래키 컬럼이 생기며 1 대 다 관계가 성립이 된다.
N : M 관계
다대다 관계를 맺는 방법은 관계를 맺을 테이블에 belongsToMany 메서드를 사용하고 through 옵션으로 중간 테이블을 생성해주면 된다.
예를 들어 게시물에서 해시태그를 사용하며 동일한 해시태그가 여러개의 게시물에 사용 될 수 있다는 가정을 해보자
1 |
// 게시물 모델 |
이렇게 설정시 Post 테이블의 정보와 Hashtag 테이블의 정보를 참조하고 있는 중간 테이블이 생성되며 다대다 관계가 성립이 된다.
Sequelize Relration
http://hanjuren.github.io/2021/09/09/sequelize/Sequelize-Relration/