-
Sequelize 1 : N 관계 설정, Cascade 적용자료 정리 2020. 2. 26. 16:18
db에 테이블사이 관계가 이어져 있는 경우가 있을 수 있습니다.
이 데이터베이스의 테이블 같은 경우에는
users 테이블은 boards 테이블과 1 : N의 관계를 가지고 있고
boards는 containers와 1 : N,
containers와 cards는 1 : N의 관계를 가지고 있습니다.
이러한 관계를 가진 테이블은
hasonMany
container.associate = function (models) { container.belongsTo(models.board, { foreignKey: 'boardId', targetKey: 'id', onDelete: 'cascade' }); //하위 테이블의 옵션에 속성을 넣어 줘야 한다. container.hasMany(models.card, { foreignKey: 'containerId', sourceKey: 'id' }); }
Cascade 란?
관계로 이어져 있는 상태에는 생성을 할 때에는 문제 없이 생성이 되지만
1의 관계의 있는 데이터를 삭제 할 때 문제가 발생합니다.
1의 테이블의 데이터가 삭제 될 때 그 데이터와 이어져 있는 N관계를 가진 테이블의 데이터를 모두 삭제해야 합니다.
위에 db의 관계의 예를 들면 users의 테이블의 어떤 데이터를 삭제하면 users의 삭제된 테이블의 관계되어있는 boards 데이터를 모두 찾아 삭제해야 하고 boards와 관계되어 있는 containers의 데이터를 찾아 삭제 containers의 삭제된 데이터와 관련된 cards를 찾아 삭제하는 과정이 너무 복작하고 많아진다.
그러한 복잡한 일을 덜어 주는 속성이 바로 Cascade 입니다.
그래서 관계를 설정할 때 하위(N)의 관계 옵션에 넣어줘야 합니다.
onDelete : "Cascade"
'자료 정리' 카테고리의 다른 글
CSS 기초 부터 (0) 2020.04.07 axios 와 fetch의 다른 점 (0) 2020.02.29 socket.io ( node.js ) (0) 2020.02.25 let, const , var 비교 분석 (0) 2020.02.21 Javascript의 장, 단점 (0) 2020.02.20