강의

멘토링

커뮤니티

Inflearn Community Q&A

xxxxxxxxxx's profile image
xxxxxxxxxx

asked

[Renewal] Creating NodeBird SNS with React

Introduction to Renewal Course

테이블 관계설정

Written on

·

257

0

데이터베이스에서
테이블 관계설정 시 모든테이블마다 관계를 정해줘야 하나요?

딱히 테이블의 관계가 없으면 관계를 안 정해줘도 무관한가요??

reactreduxnodejsexpressNext.js

Answer 7

0

xxxxxxxxxx님의 프로필 이미지
xxxxxxxxxx
Questioner

thanks see you soon

0

zerocho님의 프로필 이미지
zerocho
Instructor

migration은 기록을 남기는 방식이고 sync는 기록은 없는대신 편의를 위한 방식이라고 보시면 됩니다. alter: true나 force: true로 테이블을 쉽게 변경/재생성할 수 있습니다.

실무에서는 migration이 더 안전해서 추천드립니다.

0

xxxxxxxxxx님의 프로필 이미지
xxxxxxxxxx
Questioner

좀 더 공부하면서 알게된점을 적어보겠습니다.

migration 의 목적 및 특징

1. 스카마의 내용(테이블이름, 컬러명) 바꾸기 위해서 
2. 초기 데이터베이스 테이블 생성시에도 마이그레이션을 하여 만들수 있음.
  -->  관계설정도 가능함(1:1.....)
3. git의 버전관리와 비슷한거 같음(commit)

추가적으로 의문이 드는점이


그리고 강의에서는 sync를 이용하여 데이터베이스와 서버를 연결 하는거 같은데 또 테이블내용 수정시
sync({ alter: true })를 이용하면 테이블내용이 수정 된다는것을 알았습니다.

sync()를 이용하여 데이터베이스의 데이터베이스 테이블도 생성을 할 수 있고, 수정도 가능한것 같은데

migration과 sync는 비슷한개념이라고 보면 될까요?

주로 어느방식을 쓰는지 궁금합니다. 





0

zerocho님의 프로필 이미지
zerocho
Instructor

1. 관계가 있을때만 belongsTo가 필수입니다. 이게 없으면 UserId나 PostId같은 컬럼이 안 만들어져서요.

2.동작 시 에러는 없었나요? 이게 테이블명 컬럼명은 윈도우에서 대소문자를 구분하지 못할수도 있습니다. 리눅스나 맥만 대소문자를 구분하거든요

0

xxxxxxxxxx님의 프로필 이미지
xxxxxxxxxx
Questioner

그리고 추가 질문 있습니다.
마이그레이션을 이용하여 테이블 변경사항을 적용할려고 하는데 무엇이 문제인지 모르겠어요

목적:  테이블 이름명을 바꿀려고 합니다. 


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

xxxxxxxxxx님의 프로필 이미지
xxxxxxxxxx
Questioner

belongsTo나 belongsToMany는 필수입니다.

관계가 없는데도 belongsTo나 belongsToMany 적어야 된다는 말씀인가요?
아님 hasOne,hasMany,
belongsToMany 사용시에 적어야 된다는 말씀이신가요?

0

zerocho님의 프로필 이미지
zerocho
Instructor

관계가 없으면 연결 안하셔도 됩니다~. 있어도 사용하지 않으면 연결 안 해도 되긴 합니다~ 다만 belongsTo나 belongsToMany는 필수입니다.

xxxxxxxxxx's profile image
xxxxxxxxxx

asked

Ask a question