[데이터베이스/ORM] 모델링과 Sequelize

Hyo Kyun Lee·2021년 12월 7일
0

데이터베이스/ORM

목록 보기
8/12

1. 모델링

모델링은 처음 보면 원론적인 내용일 수 있겠지만, 실무에서 그대로 활용하는 필수적인 내용이다.

모델링을 하면서 엔티티, 관계유형, 속성 등 처음 보았을때는 다소 이론적인 내용에 가깝게 보였다.

그러나 Sequelize를 작성하면서, 모델링에 대한 원론적인 내용이 그대로 활용된다는 것을 알게 되었다.

2. associate

두 model이 서로 연관관계가 있다면 associate

이후 belongsTo 등 세부적인 연관관계를 정의해준다.

2-0. 참조의 개념

참조 대상 : 부모 테이블, 피참조(참조를 받는 대상) : 자식 테이블

부모 테이블의 해당 속성을 참조하게 된다면, 해당 속성을 매개로 하여 부모 테이블의 column(data)들을 모두 불러올 수 있다(data Read, findByPk).

참조한 속성은 foreign key 설정을 통해 다른 테이블이 참조할 수 있도록 설정.

2-1. hasOne / belongsTo

hasOne
1:1 관계의 두 모델이 있을때, 부모(1) 테이블이 자식(1) 테이블에게 참조할 수 있는 속성을 제공하고자 할 때

belongsTo
1:1 관계의 두 모델이 있을때, 자식(1) 테이블이 부모(1) 테이블의 한 속성을 참조하고자 할 때

  • 각 부서는 한 명의 팀장을 보유하고 있다.
  • 부서와 팀장의 관계는 1:1이다.

2-2. hasMany / belongsTo

hasMany
1:N 관계의 두 모델이 있을때, 부모(1) 테이블이 자식(N) 테이블 여러 개에게 참조할 수 있는 속성을 제공하고자 할 때

belongsTo
자식 테이블이 부모 테이블을 참조하고자 할 때

  • 각 부서는 여러 명의 직원을 보유하고 있다.
  • 부서와 직원의 관계는 1:N이다.

2-3. belongsToMany

belongsToMany
M:N 관계의 두 모델이 있을때, 각 테이블들이 서로에게 참조할 수 있는 속성을 제공하고자 할 때

  • 각 직원들은 업무적으로 소통할 수 있는 여러 부서들과 함께 일한다.
  • 회사의 입장에서, 직원들과 부서들간의 관계는 M:N이다.

3. primary key / foreign key

서로 연결관계에 있는 테이블들이 참조하고자 하는 속성값이 있을때

  • 부모 테이블은 primary key를 제공
  • 자식 테이블은 해당 참조 속성을 foreign key로 설정

4. OnDelete : Cascade

부모 테이블의 Column(혹은 데이터)가 삭제된다면, 해당 속성을 참조하는 자식 테이블의 속성 혹은 데이터도 같이 삭제한다.

5. Op

Sequelize의 검색 객체

model의 columns들을 찾되, "word" 단어가 앞뒤로 포함되어 있는 모든 경우를 찾는다.

  models.test.findAll({
        where:{
            postName: {
                [Op.like]: "%" + word + "%"
            }
        }
    })

6. 참조 링크

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://ckim0531.tistory.com/entry/SQL-%ED%99%9C%EC%9A%A9-8-%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%A0%95%EC%9D%98%EC%96%B4DDL-Table-%EC%A0%9C%EC%95%BD-%EC%A1%B0%EA%B1%B4-FOREIGN-KEY

관련 명령어 사용하는 예제(강의)
https://www.youtube.com/watch?v=CMc7IVdYumw

Sequelize Op
https://victorydntmd.tistory.com/92

0개의 댓글