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

Jae Hyeon Lee님의 프로필 이미지
Jae Hyeon Lee

작성한 질문수

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트

외래키를 사용하지 않고 ORM 을 활용하는 방식 관련 문의

해결된 질문

작성

·

601

0

안녕하세요. 

 

외래키 관련 질문이 있어서 글을 남기게 되었습니다.

제가 다루던 DB 개발 서비스는 대부분 db 구조의 잦은 변경과 중간의 데이터가 꼬이는 경우, 일부 데이터 수정등이 빈번하여, 

연관 데이터들 수정의 어려움이 있어,  외래키 조건을 걸지 않고 사용하는 편입니다. 

(국내에도 많은 회사가 이런 방식을 선택하는 것으로 알고 있습니다. ) 

 

그런데, 장고의 장점인 모델 구조를  제대로 활용하려면, 모델에 외래키 조건을 걸어서 사용해야 하는 것 같은데,

혹시, 외래키 조건을 걸지 않고 장고를 잘 활용할수 있는 방법이 있을지 궁금해서 글을 남기게 되었습니다.

 

제 생각에는

1. DB 설계는 별도로 하고, 마이그레이션 하지 않은 상태에서 모델에는 외래키가 걸린 것 처럼 동일한 정보를 입력해주는 방법으로 진행하는 방식

2. 장고에서 모델로 개발하더라도, 마이그레이션 이후 -> 실제 DB 에서는 외래키 조건을 제거하는 등의 방식

3. 모델 사용 없이, 직접 QuerySet 을 생성하여 진행하는 방식

3가지 방식으로만 떠오르는데,  실무에서는 만약 외래키 조건 없이 운영을 해야한다고 하면, 어떤식으로 진행되는지 궁금합니다. 

 

감사합니다. 

답변 1

1

이진석님의 프로필 이미지
이진석
지식공유자

안녕하세요.

장고의 FK필드는 논리적으로 FK 관계를 활용할 뿐, 물리적으로 FK 임을 강제하지는 않습니다.

models.ForeignKey에 db_constraint=False 를 지정하시면, 마이그레이션 시에 FK 제약을 추가하지 않습니다. 이는 레거시 데이터베이스 연동이나 데이터베이스 샤딩 시에 유용하게 사용할 수 있습니다.

https://docs.djangoproject.com/en/4.0/ref/models/fields/#django.db.models.ForeignKey.db_constraint

화이팅입니다. :-)

Jae Hyeon Lee님의 프로필 이미지
Jae Hyeon Lee
질문자

감사합니다 ~! 

Jae Hyeon Lee님의 프로필 이미지
Jae Hyeon Lee

작성한 질문수

질문하기