Вопросы по проектированию базы данных приложений Firestore Food-Ordering - PullRequest
0 голосов
/ 18 марта 2020

Я работаю над приложением Flutter, которое в основном позволяет пользователям размещать заказы в ресторанах, а затем go и забирать их.

В ресторане есть список групп меню, а в каждой группе есть список дополнительных элементов и список элементов меню.

Элемент MenuItem имеет несколько вариантов с разными ценами, а также список ингредиентов, которые поставляются с этим элементом и ExtraIngridients, которые могут быть добавлены.

В настоящее время в пожарном магазине у меня есть коллекция ресторанов, и у каждого ресторана есть список групп меню. Есть ли способ сделать это более эффективным

Например, лучше ли сделать menuGroups как вложенную коллекцию в документе?

Firestore design

Также для реализации системы нумерации очередей заказов (первый заказ начинается с 1, идет до 99, а затем возвращается к 1)

Лучше хранить это в переменной в документе ресторана (при каждом новом заказе будет 1 чтение, чтобы получить текущее число, чем 1 запись, чтобы увеличить это число, а также после достижения 99, чтобы установить его обратно в 1)

или в самом документе заказа (теперь у каждого заказа есть дополнительное поле 1, считываемое для получения номера последнего заказа, и новый заказ будет записан все вместе, так что нет дополнительной операции записи только для номера очереди)

1 Ответ

1 голос
/ 18 марта 2020

Нет определенного способа ответить на этот вопрос. Но есть некоторые правила, которые я бы сказал, чтобы эффективно справиться с этим.

  1. Поместите данные в один документ, если вы хотите показать их вместе. (Не слишком большой и не слишком маленький)
  2. Поместите данные в коллекции, если вы хотите найти отдельный фрагмент этих данных или у вас есть база данных для роста.
  3. Использовать map если вы хотите найти параметр на основе этих данных.
  4. используйте map, если вы хотите сохранить связанные данные (например, адреса доставки пользователя).
  5. Запись документа не считается Для данных, которые вы написали, независимо от того, увеличите ли вы значение счетчика заказов на 1 или измените весь документ, он будет считаться одной записью.
...