• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

belongsTo에 의해 생겨난 Id에 대한 질문

20.05.06 08:18 작성 조회수 111

0

6:58초쯤 내용인데요, 제가 Sql 기본기가 없어서 질문드립니다.

belongsTo를 하면서 UserId, ReweetId가 생기는 건 이해했는데요,

저 UserId라는게 User테이블에 자동으로 붙는 id를 갖고 온거 맞나요?

제가 foreignKey랑 좀 헷갈리는 것 같네요

답변 4

·

답변을 작성해보세요.

0

stefan CHO님의 프로필

stefan CHO

질문자

2020.05.07

내용 찾았습니다. 혹시 다른분들을 위해서 질문 안 지우고 남겨둘게요.

https://velog.io/@cadenzah/sequelize-document-4

블로그내용 보시면 ,

"MySQL의 경우, 이미 정의가 완료되어 DB에 실제로 생성된 테이블에는 외래 키 설정을 통한 새로운 컬럼의 추가 등을 할 수 없습니다. 해당 테이블을 제거한 뒤 다시 Sequelize 코드를 실행해야 제대로 적용됩니다." 라고 되어있습니다.

db자체를 지웠다가 다시 npx sequelize db:create 하닌깐 생성되었습니다.

0

stefan CHO님의 프로필

stefan CHO

질문자

2020.05.06

이게 터미널 내용인데요,

RetweetId란 말이 있긴한데.. 잘모르겠네요 의미를

  npm run dev            

> react-nodebird-server@1.0.0 dev /Users/eunwoo/nodeBird-react-node/ch1/back
> nodemon

[nodemon] 2.0.3
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): index.js routes/**/* config/**/* passport/**/* models/**/* nodemon.json
[nodemon] watching extensions: js,json
[nodemon] starting `node index.js`
(node:64676) [SEQUELIZE0004] DeprecationWarning: A boolean value was passed to options.operatorsAliases. This is a no-op with v5 and should be removed.
server is running on http://localhost:3065
Executing (default): CREATE TABLE IF NOT EXISTS `Users` (`id` INTEGER NOT NULL auto_increment , `nickname` VARCHAR(20) NOT NULL, `userId` VARCHAR(20) NOT NULL UNIQUE, `password` VARCHAR(100) NOT NULL, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_general_ci;
Executing (default): SHOW INDEX FROM `Users` FROM `react_nodebird`
Executing (default): CREATE TABLE IF NOT EXISTS `Posts` (`id` INTEGER NOT NULL auto_increment , `content` TEXT NOT NULL, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, `UserId` INTEGER, `RetweetId` INTEGER, PRIMARY KEY (`id`), FOREIGN KEY (`UserId`) REFERENCES `Users` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, FOREIGN KEY (`RetweetId`) REFERENCES `Posts` (`id`) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci;
Executing (default): SHOW INDEX FROM `Posts` FROM `react_nodebird`
Executing (default): CREATE TABLE IF NOT EXISTS `Comments` (`id` INTEGER NOT NULL auto_increment , `content` TEXT NOT NULL, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, `UserId` INTEGER, `PostId` INTEGER, PRIMARY KEY (`id`), FOREIGN KEY (`UserId`) REFERENCES `Users` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, FOREIGN KEY (`PostId`) REFERENCES `Posts` (`id`) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci;
Executing (default): SHOW INDEX FROM `Comments` FROM `react_nodebird`
Executing (default): CREATE TABLE IF NOT EXISTS `Hashtags` (`id` INTEGER NOT NULL auto_increment , `name` VARCHAR(20) NOT NULL, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci;
Executing (default): SHOW INDEX FROM `Hashtags` FROM `react_nodebird`
Executing (default): CREATE TABLE IF NOT EXISTS `Images` (`id` INTEGER NOT NULL auto_increment , `src` VARCHAR(200) NOT NULL, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, `PostId` INTEGER, PRIMARY KEY (`id`), FOREIGN KEY (`PostId`) REFERENCES `Posts` (`id`) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_general_ci;
Executing (default): SHOW INDEX FROM `Images` FROM `react_nodebird`
Executing (default): CREATE TABLE IF NOT EXISTS `PostHashtag` (`createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, `HashtagId` INTEGER , `PostId` INTEGER , PRIMARY KEY (`HashtagId`, `PostId`), FOREIGN KEY (`HashtagId`) REFERENCES `Hashtags` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (`PostId`) REFERENCES `Posts` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci;
Executing (default): SHOW INDEX FROM `PostHashtag` FROM `react_nodebird`
Executing (default): CREATE TABLE IF NOT EXISTS `Like` (`createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, `PostId` INTEGER , `UserId` INTEGER , PRIMARY KEY (`PostId`, `UserId`), FOREIGN KEY (`PostId`) REFERENCES `Posts` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (`UserId`) REFERENCES `Users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci;
Executing (default): SHOW INDEX FROM `Like` FROM `react_nodebird`
Executing (default): CREATE TABLE IF NOT EXISTS `Follow` (`createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, `FollowingId` INTEGER , `FollowerId` INTEGER , PRIMARY KEY (`FollowingId`, `FollowerId`), FOREIGN KEY (`FollowingId`) REFERENCES `Users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (`FollowerId`) REFERENCES `Users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_general_ci;
Executing (default): SHOW INDEX FROM `Follow` FROM `react_nodebird`

 

0

stefan CHO님의 프로필

stefan CHO

질문자

2020.05.06

감사합니다. 그리고 foreignKey 로 설정해준 followingId, followerId가 지금 제 db에서는 보이지가 않는데, 중간테이블이 있는 경우에는 데이터가 들어가야지 관련된 Id칼럼이 생기나요?

아니면 제가 그냥 뭘 빼먹어서 그런걸까요?

다른건 다생겼는데, RetweetId랑 위에 2개만 안생기네요

0

네 맞습니다. 그리고 그게 foreignKey입니다.