product model에서 category는 FK로 주셨는데, status는 왜 chocies로 주신 이유?
95
작성한 질문수 6
category는 동적으로 추가할 가능성이 있지만,
status는 상태가 추가될 가능성이 드물기 때문에 이렇게 모델 설계를 하신게 맞을까요?
답변 2
0
안녕하세요.
추측하신 내용이 맞습니다.
status 필드는 정상, 품절, 단종, 비활성화와 같이 미리 정의된 값들을 가지며, 이러한 값들은 시간이 지나도 변경될 가능성이 매우 낮습니다. 비즈니스 로직에서 각 목록을 직접 참조해야하는 경우가 많아, 외래키 방식에 비해 코드의 가독성과 유지보수성을 높일 수 있습니다.
choices는 별도의 테이블없이 모델 정의 내에서 목록을 관리할 수 있어 구조가 단순해지며, 데이터베이스 조인없이 필드의 값을 바로 사용할 수 있어 조회 성능이 더 좋습니다.
개발자가 코드 상에서 직접 값을 참조할 수 있어 코드의 의도가 더 명확해집니다. ex) Product.objects.filter(status=Product.Status.ACTIVE)
그리고, 지정된 값만 사용할 수 있어 데이터 일관성을 보장받을 수 있습니다.
목록 변경이 필요할 경우, 별도의 데이터베이스 수정없이 모델 정의만 수정하면 되므로 마이그레이션이 간단합니다.
어떤 시스템에서는 "공통코드"라는 이름으로 이러한 선택지들을 모두 데이터베이스에 넣어두는 데요. 저는 공통코드 테이블보다 // 이러한 이유로, 변경 가능성이 낮고 직접 참조가 필요한 필드는 외래키보다 choices를 사용하는 것이 더 좋다고 생각하며, 추천드립니다.
0
안녕하세요, 인프런 AI 인턴입니다. inspireworld님.
비슷한 주제를 다룬 질문과 답변을 찾을 수 있었습니다. Django 모델 설계 시 ForeignKey와 TextChoices를 사용하는 이유와 차이가 설명된 내용을 소개드리니 참조해보세요.
모델 설계, 데이터 저장 - 데이터 정규화에 대한 토론과 다양한 필드 유형 선택의 중요성을 다룬 게시물입니다.
이 답변에서는 Django 모델과 폼의 장점과 단점을 어떻게 활용할 수 있는지에 대해 설명하고 있습니다. 특히 유사한 상황에서 텍스트 기반 필드와 ForeignKey를 사용하는 이유에 대해 논의하고 있습니다.외래키 설정을 다르게 하는 경우 - ForeignKey를 어디에 설정하는지와 어떤 이유로 그렇게 설정하는지에 대한 예제와 설명이 포함된 게시물입니다.
이 답변에서는 외래 키 설정이 모델 관계에서 어떻게 중요한 역할을 하는지와 다양한 설정 방법에 대해 설명하고, 텍스트 기반 필드와의 비교 설명도 일부 제공하고 있습니다.옵션 설계에 관해서 - 특정 상황에서 다형성, 외래 키 및 다양한 필드 선택에 대해 상세히 논의한 게시물입니다. 주제와 직접적으로 연결되지는 않지만, 데이터베이스 모델링에 대한 고려 사항을 폭넓게 다루고 있습니다.
이 예제는 다양한 모델링 방식과 그 결정의 Trade-off를 이해하는 데 유용합니다.
이 답변들이 도움되기를 바라며, 추가적으로 궁금한 점이 있으시면 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
(질문)KG이니시스 팝업차단 문제 발생(강의 13. 자바스크립트만으로 포트원 결제 구현하기, 7분18초)
1
157
2
로그아웃 405 에러
0
172
1
웹훅 사용과 관련하여 질문 드립니다.
0
243
2
cancel에 대해 질문을 드립니다.
0
146
2
m_redirect_url에 대해 문의 드립니다.
0
151
1
cancle에 대해 문의 드립니다.
0
295
3
db_constraint=False 에 대해 질문 드립니다.
0
169
2
pip 설치시 에러가 발생합니다.
0
499
2
주문 로직
0
369
3
결제 기능을 비동기적으로 처리할 필요는 없나요..?
0
411
3
배포환경과 개발환경 패키지 관리, 도커환경 디버깅 팁이 있을까요?
0
287
4
8강 주문 모델 설계에서 따로 ManyToMany 관계를 위한 모델을 선언해준 이유?
0
136
2
선생님 from iamport import Iamport 에서 에러가 생깁니다.
0
152
2
db_index=True로 설정하는 이유
0
141
2
안녕하세요 파이참 폼링크 제출했습니다
0
106
1
포트원 UI가 바뀌면서 포트원 404에러가 발생합니다.
0
591
5
djlint 편집시 무한 동작
0
129
1
결제 실패
0
230
1
환불을 구현 하려면 어떤식으로 해야 되나여?
0
498
1
next js 에서 결제 구현할때 에러 발생하는데 디버깅 팁 주실수 있나요?
0
313
1
사용자가 진행을 중단하였습니다.
0
345
3
결제창 출력이 되지 않습니다.
0
858
2
결제 중간 이탈
0
326
2
포트원 결제 payment_detail 이전 과정 문제
0
493
4





