-
카테고리
-
세부 분야
풀스택
-
해결 여부
미해결
[DBMS/ORM] 1:1 관계를 강제하는 주체
22.03.10 16:29 작성 조회수 113
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
조현영
지식공유자2022.03.10
네, 시퀄라이즈는 key에 unique는 걸지 않는 걸로 알고 있습니다. ORM이 제약을 거는 게 맞습니다. 아마 억지로 sql로 추가하더라도 처음 것(또는 마지막 것)만 가져와서 join할 것 같네요.
답변 1