Firebase - Структурирование базы данных

Я работаю над приложением для iPad, чтобы организовать спорт, используя Firebase. Требование состоит в том, чтобы:

  • Каждый вид спорта может включать в себя множество мероприятий.

  • Многие команды регистрируются на мероприятие.

Запросы, которые будут обрабатываться, будут:

  • Отображение названий команд с указанием спортивного названия и названия события
  • Отображение сведений обо всех зарегистрированных командах с указанием спортивного названия и названия события

Я новичок в разработке модели базы данных для firebase. Я разработал структуру базы огня, как показано на рисунке.

Будет ли эта структура оптимально поддерживать мои запросы? Пожалуйста, предложите изменения, которые мне придется внести. Заранее спасибо:)

Структура Firebase

Firebase - Структурирование базы данных

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
91
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

1-й, push-клавиши firebase имеют очень удобную функцию сортировки в хронологическом порядке, то есть просто примените буквенно-цифровую сортировку, и они будут в хронологическом порядке даже для автономной записи.

В идеале вы разрабатываете свой документ таким образом, чтобы вам не приходилось запрашивать их. Если вы из мира MSSQL, ваши документы будут аналогичны представлениям MSSQL, но без таблиц для их резервного копирования.

Или, другими словами, храните документы так, как вы ожидаете результатов ваших запросов.

Применение к приложению

Предположим:

  1. В вашем приложении есть представление, показывающее дату и время начала, количество присоединившихся команд и призы для всех событий в данном виде спорта.
  2. Щелкнув любое из событий, вы увидите представление, показывающее дату и время начала, дату и время окончания, место проведения, спонсоров и названия всех присоединившихся команд.

По сути, это два узла, предназначенные для таких представлений:

Firebase Example nodes

События> Ключ события: ChildID, автоматически сгенерированный Firebase Events> Event ID: используется для получения дочерних элементов в том порядке, в котором они добавлены. Пример: идентификатор события будет начинаться с 1 и автоматически увеличиваться при каждом добавлении нового события.

Veena 19.12.2018 05:49

Кнопки Firebase уже отсортированы в хронологическом порядке, второй ключ вам не нужен.

Pedro Rodrigues 19.12.2018 16:30

Я обновил ответ, скажите, понятно ли

Pedro Rodrigues 19.12.2018 16:49

Большое спасибо за подробное и очень четкое объяснение.

Veena 20.12.2018 10:05

Итак, из вашего вопроса я получил что-то вроде Сущности: спорт, команды, события и это будет много-много отношений между каждой сущностью, но поскольку вы имеете дело с решением, не основанным на sql, вы можете получать результаты для требуемых запросов со структурой, подобной этой

Sports:{
sport_name,
id,
Teams:
[{team_name, id}]
}

Events: {
event_id
event_name
teams :
[
{team_name, team_id}
]
}

Чтобы получить подробную информацию о каждой команде, вы можете создать еще один узел команд, в котором вы можете хранить все подробности.

Таким образом, каждый раз, когда вам нужно зарегистрировать команды для участия в каком-либо мероприятии, вы можете напрямую перейти к зарегистрированным командам в узле команд и то же самое для другого запроса.

Другие вопросы по теме