Inflearn Community Q&A
테이블 관계설정
Written on
·
257
0
데이터베이스에서
테이블 관계설정 시 모든테이블마다 관계를 정해줘야 하나요?
딱히 테이블의 관계가 없으면 관계를 안 정해줘도 무관한가요??
Answer 7
0
0
migration은 기록을 남기는 방식이고 sync는 기록은 없는대신 편의를 위한 방식이라고 보시면 됩니다. alter: true나 force: true로 테이블을 쉽게 변경/재생성할 수 있습니다.
실무에서는 migration이 더 안전해서 추천드립니다.
0
좀 더 공부하면서 알게된점을 적어보겠습니다.
migration 의 목적 및 특징
1. 스카마의 내용(테이블이름, 컬러명) 바꾸기 위해서
2. 초기 데이터베이스 테이블 생성시에도 마이그레이션을 하여 만들수 있음.
--> 관계설정도 가능함(1:1.....)
3. git의 버전관리와 비슷한거 같음(commit)
추가적으로 의문이 드는점이
그리고 강의에서는 sync를 이용하여 데이터베이스와 서버를 연결 하는거 같은데 또 테이블내용 수정시
sync({ alter: true })를 이용하면 테이블내용이 수정 된다는것을 알았습니다.
sync()를 이용하여 데이터베이스의 데이터베이스 테이블도 생성을 할 수 있고, 수정도 가능한것 같은데
migration과 sync는 비슷한개념이라고 보면 될까요?
주로 어느방식을 쓰는지 궁금합니다.
0
1. 관계가 있을때만 belongsTo가 필수입니다. 이게 없으면 UserId나 PostId같은 컬럼이 안 만들어져서요.
2.동작 시 에러는 없었나요? 이게 테이블명 컬럼명은 윈도우에서 대소문자를 구분하지 못할수도 있습니다. 리눅스나 맥만 대소문자를 구분하거든요
0
그리고 추가 질문 있습니다.
마이그레이션을 이용하여 테이블 변경사항을 적용할려고 하는데 무엇이 문제인지 모르겠어요
목적: 테이블 이름명을 바꿀려고 합니다.
CL
1. sequelize migration:create --name rename_test // 마이그레이션스 폴더에 파일이 생성됨(날짜시간 이름)
2. 작성 후 sequelize db:migrate 실행.
3. user.js 파일에서 테이블 이름명 변경 후 서버 시작
이렇게 한후 workbench에서 테이블 이름 바꼈는지 확인을 해봤는데 안바뀌는데 무엇을 잘못하고 있는걸까요??
```
module.exports = {
up: async (queryInterface, Sequelize) => {
/**
* Add altering commands here.
*
* Example:
* await queryInterface.createTable('users', { id: Sequelize.INTEGER });
*/
---------------------------------------------------
queryInterface.renameTable('Users', 'users')
},
down: async (queryInterface, Sequelize) => {
/**
* Add reverting commands here.
*
* Example:
* await queryInterface.dropTable('users');
*/
-------------------------------------------------
queryInterface.renameTable('users', 'Users')
}
};
```
0
belongsTo나 belongsToMany는 필수입니다.
관계가 없는데도 belongsTo나 belongsToMany 적어야 된다는 말씀인가요?
아님 hasOne,hasMany, belongsToMany 사용시에 적어야 된다는 말씀이신가요?
0
관계가 없으면 연결 안하셔도 됩니다~. 있어도 사용하지 않으면 연결 안 해도 되긴 합니다~ 다만 belongsTo나 belongsToMany는 필수입니다.




