모델링은 처음 보면 원론적인 내용일 수 있겠지만, 실무에서 그대로 활용하는 필수적인 내용이다.
모델링을 하면서 엔티티, 관계유형, 속성 등 처음 보았을때는 다소 이론적인 내용에 가깝게 보였다.
그러나 Sequelize를 작성하면서, 모델링에 대한 원론적인 내용이 그대로 활용된다는 것을 알게 되었다.
두 model이 서로 연관관계가 있다면 associate
이후 belongsTo 등 세부적인 연관관계를 정의해준다.
참조 대상 : 부모 테이블, 피참조(참조를 받는 대상) : 자식 테이블
부모 테이블의 해당 속성을 참조하게 된다면, 해당 속성을 매개로 하여 부모 테이블의 column(data)들을 모두 불러올 수 있다(data Read, findByPk).
참조한 속성은 foreign key 설정을 통해 다른 테이블이 참조할 수 있도록 설정.
hasOne
1:1 관계의 두 모델이 있을때, 부모(1) 테이블이 자식(1) 테이블에게 참조할 수 있는 속성을 제공하고자 할 때
belongsTo
1:1 관계의 두 모델이 있을때, 자식(1) 테이블이 부모(1) 테이블의 한 속성을 참조하고자 할 때
hasMany
1:N 관계의 두 모델이 있을때, 부모(1) 테이블이 자식(N) 테이블 여러 개에게 참조할 수 있는 속성을 제공하고자 할 때
belongsTo
자식 테이블이 부모 테이블을 참조하고자 할 때
belongsToMany
M:N 관계의 두 모델이 있을때, 각 테이블들이 서로에게 참조할 수 있는 속성을 제공하고자 할 때
서로 연결관계에 있는 테이블들이 참조하고자 하는 속성값이 있을때
부모 테이블의 Column(혹은 데이터)가 삭제된다면, 해당 속성을 참조하는 자식 테이블의 속성 혹은 데이터도 같이 삭제한다.
Sequelize의 검색 객체
model의 columns들을 찾되, "word" 단어가 앞뒤로 포함되어 있는 모든 경우를 찾는다.
models.test.findAll({
where:{
postName: {
[Op.like]: "%" + word + "%"
}
}
})
table 연결관계
https://velog.io/@josworks27/Sequelize-Association
table 연결관계 및 관련 sequelize 메소드
https://velog.io/@jujube0/SOPT-5%EC%B0%A8-%EC%84%B8%EB%AF%B8%EB%82%98
외래키, 외래키 옵션(On Delete, Cascade)
https://bamdule.tistory.com/45
부모 테이블, 자식 테이블
https://jcross77.tistory.com/53
관련 명령어 사용하는 예제(강의)
https://www.youtube.com/watch?v=CMc7IVdYumw
Sequelize Op
https://victorydntmd.tistory.com/92