코드를 짜는데 OneToOneField 사용을 지양해달라는 피드백을 받았다.
왜 그런지 한번 살펴봤다.
Django에서 OneToOneField를 사용하는 것을 지양하는 이유
복잡성: OneToOneField는 서로 강하게 연결된 두 개의 모델 간의 관계를 나타내기 위해 사용됩니다.
그러나 이러한 관계는 데이터베이스에서 조인 연산을 필요로 하기 때문에 쿼리의 복잡성을 증가시킬 수 있습니다.
특히 OneToOneField가 연속적으로 연결되는 경우 쿼리가 더 복잡해질 수 있습니다.
유연성: OneToOneField는 두 개의 모델이 서로 강하게 결합되어 있기 때문에
한 쪽 모델의 수정이 다른 쪽 모델에 영향을 줄 수 있습니다.
이는 데이터 모델의 변경이 어려워지고, 유연성과 확장성이 제한될 수 있다는 것을 의미합니다.
따라서 향후에 모델을 수정하거나 확장해야 할 가능성이 있는 경우 OneToOneField를 사용하는 대신
ForeignKey를 고려하는 것이 좋습니다.
성능: OneToOneField는 쿼리의 복잡성 증가와 관련하여 성능에도 영향을 줄 수 있습니다.
특히 OneToOneField를 사용하여 쿼리를 수행할 때 JOIN 연산이 추가로 발생하므로
데이터베이스에 부하가 걸릴 수 있습니다.
대부분의 경우, OneToOneField 대신 ForeignKey를 사용하여 일대일 관계를 나타내는 것이 더 바람직합니다.
ForeignKey를 사용하면 모델 간의 느슨한 결합을 유지하고, 쿼리의 복잡성을 줄일 수 있으며,
모델의 유연성과 확장성을 향상시킬 수 있습니다.
여태까지 초창기 서비스들만 개발하다보니 확장성에 대해서 생각할 일이 별로 없었던 것 같다.
왜 사용하는 지를 생각 안하고 그냥 개발했던 과거를 반성해야겠다...
'Python > django' 카테고리의 다른 글
get_object 메서드 (0) | 2023.06.20 |
---|---|
count() 과 len() 차이 (0) | 2023.06.16 |
Django Migration 사용 안하고 DDL 사용하기(2) (0) | 2023.05.17 |
Django Migration 사용 안하고 DDL 사용하기(1) (1) | 2023.05.16 |
django testcode 작성 연습 (0) | 2023.05.12 |