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

최성규님의 프로필 이미지
최성규

작성한 질문수

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

[DBMS/ORM] 1:1 관계를 강제하는 주체

작성

·

158

0

안녕하세요.
20세기 '선사시대'부터 프로그래밍을 한 사람입니다. 경력 단절이 있어서 늦은 때에 DBMS를 다시 보고 있고,
21세기 초반까지 없었던(제 기억에) ORM이라는 신세계를 경험하고 있습니다.
 
MySQL 자체에서는 1:1 관계를 강제하는 방법은 두 테이블 중 FK를 가진 테이블에서, FK에 UNIQUE 제약을 거는 것으로 생각됩니다. 어디 문헌을 참조한 것이 아니라 제가 테스트를 해 본 결과 그렇다는 것입니다.
Sequelize 모델 정의시 양 테이블에 각각 hasOne(), belongsTo()를 적어 1:1 관계를 정의하고 실행시켜 MySQL에 생성된 테이블을 조사해 보았는데 거기에는 FK에 UNIQUE 제약이 걸려 있지 않은 것을 확인했습니다.
 
이런 시험을 통해 저는, '1:1 관계를 강제하는 주체는 DBMS 가 아니라 ORM(Sequelize)이다'라는 결론을 내렸습니다.
저의 이러한 추론이 옳은 지, 특히 뭔가 오해하고 있는 부분이 있지는 않은지에 대해, Zeorcho님의 평가를 요청드립니다.
 
감사합니다.

답변 1

1

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

네, 시퀄라이즈는 key에 unique는 걸지 않는 걸로 알고 있습니다. ORM이 제약을 거는 게 맞습니다. 아마 억지로 sql로 추가하더라도 처음 것(또는 마지막 것)만 가져와서  join할 것 같네요.

최성규님의 프로필 이미지
최성규

작성한 질문수

질문하기