팀 프로젝트에서 백엔드를 담당하게 되어서 Flask + MySQL + SQLAlcheny ORM 사용해서 구성해보고 있어요
여쭤보고 싶은 내용은 아래와 같아요
· 사용자에 대한 테이블과 사용자가 가입 가능한 그룹에 대한 테이블이 있음
· 사용자는 그룹에 가입할 수 있음
· 이 때 사용자의 특정 그룹에 대한 가입 관계를 어떻게 표현하는게 이상적일까요?
고려해야 할만한 사항?
· 그룹 내 특정 이벤트에 대해 그룹에 가입된 사용자들에게 푸시알림 날리는 기능이 있음 (사용자 테이블에서 push 토큰 조회 필요)
가장 먼저 떠오른건 그룹 가입 정보(그룹 ID(외래키), 사용자 ID(외래키))를 담고 있는 테이블을 하나 만들어서 사용자가 그룹에 가입할 때 마다 데이터를 하나씩 추가하는 것이구요
그 외에는 그룹 테이블에 사용자 ID들을 리스트로 담고있는 JSON 형 필드를 하나 둘까 생각해봤는데
매번 JSON 필드에서 사용자 ID들을 가져와서 SELECT 날려서 push 토큰 얻어오는건 앞서 말씀드린 방식에 비해 비효율적이 아닐까 생각이 들었어요
아직 데이터베이스를 배우지 못해서 DB에 대한 지식이 거의 전무한 상태이고
저런거 고려 안해도 될 정도로 규모가 매우 작은 팀 프로젝트이지만
제가 생각한 단순무식한 방법 외에 어떤 좋은 방법이 있을지 궁금해서 질문글 올리게 되었습니다
제가 말씀해주실 내용을 잘 이해하지 못할 수도 있지만, 도와주신다면 열심히 정보 찾아서 이해해보고자 하겠습니다
시간내셔서 읽어주셔서 감사해요
사용자, 그룹 m2m 테이블 만드는 방식으로 함. 플라스크는 안써봤는데 장고는 ManyToManyField라는거 있고, 내부적으로 m2m db 만듦
즉 첫번째 방식대로 하면됨 두번째 방식은 뭐 그룹 참조할때마다 json 파싱할거임? Db에서 하든 was에서 하든 좋지 않음 조인도 안되고
그리고 db 잘모르면 걍 orm 쓰지 말고 생쿼리 써라
조언 감사드립니다! M2M 관계를 사용하는게 가장 이상적인게 맞군요... 지금은 단기간에 개발하는걸 우선으로 목표하는것이라 ORM으로 사용해보고 있습니다. 앞으로 공부할 때는 직접 쿼리 작성해서 이해할 수 있도록 해보겠습니다. 다시한번 감사드립니다!