인프런 커뮤니티 질문&답변

teamdevelop님의 프로필 이미지
teamdevelop

작성한 질문수

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

시퀄라이즈 실습하기

sequelize 테이블 생성시 primary key 없게 생성 방법

작성

·

681

0

안녕하세요 

제로초님 강의를 보면서 시퀄라이즈를 통해 테이블 생성중에 있습니다. 

제가 만드려는 프로젝트에서 

테이블에 primaryKey 없이 foreignkey로만 된 테이블들이 있는데 혹시 이런경우엔 어떤식으로 작성해야하는지 알 수 있을까요??

검색을 해보니 시퀄라이즈는 하나 이상의 프라이머리키가 반드시 존재하여야 한다고 하는데, 

제가 만드려는 테이블 예시를 들자면,

a: a_id(primaryKey), a_name, a_start_date

b: a_id(foreignKey, a테이블 참조), c_id(foreignKey, c테이블 참조), b_orderNumber

c: c_id(primaryKey)

d: c_id(foreignKey, c테이블 참조), d_value 

이런 식 입니다. 

이럴때 b와 d는 어떻게 해야하는지 궁금합니다..!!

답변 6

0

teamdevelop님의 프로필 이미지
teamdevelop
질문자

답변감사합니다!!!

 

0

teamdevelop님의 프로필 이미지
teamdevelop
질문자

학생_수업 
이런 중간 테이블이 필요하여 fk 로만 참조하려고 합니다.

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

네 FK 학생코드랑 FK 수업코드 두개가 묶여서 PK가 되면 됩니다.

0

teamdevelop님의 프로필 이미지
teamdevelop
질문자

0

teamdevelop님의 프로필 이미지
teamdevelop
질문자

감사합니다! 또한, nodebird에서 만드신 테이블중에 through를 통해 follow를 중간테이블로 만드셨는데, 이부분은 followingId/followerId 프라이머리키가 두개가 들어가는건가요? 만들어진 테이블을 보면 프라이머리키가 두개가 생성이 되어서요 테이블당 프라이머리키는 하나여야 하는게 아닌지 궁금합니다! 

저렇게 다대다 관계에서 중간테이블이 필요할때 프라이머리키가 아닌 포린키로 대체할 순 없는건가요?

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

프라이머리키는 여러개여도 됩니다. 여러개가 묶여서 하나의 프라이머리키를 이룹니다. 복합키라고 부릅니다. follow 테이블처럼 포린키 여러개를 묶어서 프라이머리키로 만들면 됩니다.

0

teamdevelop님의 프로필 이미지
teamdevelop
질문자

그럼 테이블에 id를 생성한뒤 지워주는 방법으로 진행하는 건가요? ㅠㅠ

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

테이블에 id는 생성 안해도 되는것같은데요 저기 링크를 보니

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

제가 살면서 한 번도 프라이머리키 없이 테이블을 만들어본적도, 만들 생각도 해본적이 없어서 모르겠습니다. 가능은 하다고는 하네요.

https://stackoverflow.com/a/38871631

teamdevelop님의 프로필 이미지
teamdevelop

작성한 질문수

질문하기