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

hyokil jung님의 프로필 이미지
hyokil jung

작성한 질문수

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

Product Tab Pagination

[질문] 카테고리별 상품 관리에 관해 중복 상품 문제

작성

·

366

0

안녕하세요,

저는 'category'라는 테이블을 생성하여 상품들의 상태를 관리하고 있습니다. 'family'를 통해 'categoryId' 값을 받아서 카테고리별로 상태를 관리하고 있는데 문제가 있어서 질문 드립니다.

'categoryId' 값에 '0'을 주면, 카테고리와 상관 없이 모든 상품을 볼 수 있는 리스트를 만들 수 있었습니다. 그러나, 이 방법은 상품이 중복되어 나타나는 문제가 발생합니다.

모든 상품을 한번에 받아서 필터로 처리하는 방법도 생각해 보았지만, 상품의 수가 너무 많아 이 방법은 효율적이지 않을 것 같습니다.

구글링을 통해 정보를 찾아보고 다른 앱 레퍼런스도 찾아보았지만, 원하는 답변을 얻지 못하여 이렇게 글을 남깁니다. 이 문제에 대해 어떻게 해결할 수 있는지 도움을 주시면 감사하겠습니다.

감사합니다.

답변 1

0

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요.

CategoryId 별로 데이터를 관리하고 있는데 Category와 관련없는 데이터를 다 보여주고 싶을 경우 모든 CategoryId에 해당되는 데이터를 다 합쳤을때 중복이 생긴다라는 말씀인가요?

이 부분은 해결 방법이 무수하게 많습니다. 각각 장단점이 있고 메모리 vs 연산속도 효율이 갈립니다.

가장 빠르고 쉬운 방법은 CategoryId 별로 데이터를 관리 하시는것처럼 전체 데이터도 따로 관리 하는겁니다. 중복은 가장 많이 생기나 각 프로바이더의 family 별로 불러와야하는 데이터가 확실하니 로직상 관리는 편리합니다.

위 방법에서 메모리 효율을 약간 향상 시키는 방법도 있습니다. normalization을 통해서 전체 데이터는 중앙화해서 관리하고 Provider에서는 id 값들만 들고 있다가 필요한 순간에 id와 데이터를 매핑하는 방법이 있습니다. 이럴경우 id 값만 중복되고 전체 데이터는 중복이 없기때문에 효율적입니다. 이 부분은 Data Normalization으로 검색해보세요.

말씀하신대로 직접 필터링을 해볼수도 있습니다. CPU는 생각보다 빠르기때문에 데이터가 많지 않다면 사실 이게 제일 쉽고 효율적일수도 있습니다.

감사합니다!

hyokil jung님의 프로필 이미지
hyokil jung
질문자

빠른 답변 너무 감사합니다!!!
덕분에 flutter와 엄청 친해지고 있는중입니다 :)

감사합니다!

hyokil jung님의 프로필 이미지
hyokil jung

작성한 질문수

질문하기