Flutter Firebase: справочник по подколлекциям моделирования данных NoSQL
Новичок здесь. Мне нужна помощь в отношении ссылок на вложенную коллекцию Firebase в структурированном виде, когда пользователь может выбирать и передавать информацию через вложенную коллекцию.
=> Tournaments => Cities => Cairo => Year => High Goal => Team A
Это идет так из корня, у меня есть список городов, скажем
1. Cairo
2. Alexandria
3. Sixth October
Я хочу вести учет турниров, проводимых каждый год в этих городах, по годам. Скажем, а.
1. 2019
2. 2018
3. 2017
Каждый год проводится 3 разных кубка, скажем,
1. High goal
2. Medium goal
3. Low goal
В каждом разыгранном кубке есть команды, которые участвуют в турнире.
1. Team A
2. Team B
3. Team C
Я добавил визуальное представление приложения, разработанного в Adobe XD.
1 ответ
Моделирование данных для баз данных NoSQL зависит как от вариантов использования вашего приложения, так и от данных, которые вы храните. Таким образом, не существует "идеальной" модели данных и почти не существует такого количества передовых практик (или нормальных форм) для баз данных NoSQL, как для реляционных моделей данных.
Firestore (который вы, похоже, собираетесь использовать) предлагает несколько инструментов для моделирования данных:
- Дискретная единица хранения называется документом. Каждый документ содержит поля различных типов, включая вложенные поля, а размер документа может составлять до 1 МБ.
- Документы хранятся в именованных коллекциях.
- Вы можете вкладывать коллекции в документ и таким образом строить иерархии.
- Каждый документ имеет уникальный путь формы
/collection1/docid1/collection2/doc2
и т.п. - Чтобы написать в документ, вы должны знать его точный путь.
- Вы можете запросить коллекцию для подмножества документов там.
- Вы можете запрашивать все коллекции с одинаковыми именами, независимо от их пути в базе данных.
- Производительность запросов зависит исключительно от количества документов, которые вы извлекаете, а не от количества документов в коллекции (ах).
Вероятно, существует еще несколько правил, но их должно быть достаточно, чтобы вы начали.
Обычно я рекомендую составить список из 3-5 основных вариантов использования и определить, какие чтения / запросы вам нужны для этого. С помощью этих запросов вы можете начать определение своей модели данных и реализацию кода приложения.
Затем каждый раз, когда вы добавляете вариант использования, вы выясняете, как читать / записывать данные для этого варианта использования и потенциально изменять / расширять модель данных, чтобы учесть новые и существующие варианты использования. Если вы застряли при добавлении конкретного варианта использования, сообщите об этом здесь, и мы постараемся помочь.
Несколько хороших дополнительных материалов для начала:
- Моделирование данных NoSQL
- Знакомство с Cloud Firestore
- Firebase для разработчиков SQL, которая предназначена для другой базы данных NoSQL Firebase, но также является отличным учебником по моделированию NoSQL.