#firebase #firebase-realtime-database #nosql
#firebase #firebase-realtime-database #nosql
Вопрос:
Я начинаю использовать Firebase и NoSQL, я хотел бы понять наилучшую практику, поэтому я пытаюсь создать эту схему с помощью orders, order_rows и articles. Основной запрос — показать определенный порядок, поэтому я создаю это:
{
"orders": {
"1": {
"date": "1/1/2016",
"row_order": {
"1": true,
"2": true
}
},
"2": {
"date": "1/1/2016",
"row_order": {
"3": true
}
}
},
"articles": {
"1": {
"name": "a"
},
"2": {
"name": "b"
}
},
"row_orders": {
"1": {
"quantity": 7,
"id_article": 1
},
"2": {
"quantity": 2,
"id_article": 2
},
"3": {
"quantity": 4,
"id_article": 2
}
}
}
Когда я должен показать номер заказа 1, я могу найти строки заказа, а затем из заказов строк определять статьи.
Я не использую классическую схему sql (row_orders с id_article и id_order) для упрощения получения данных.
Это правильно? Или как я могу это сделать?
Ответ №1:
Невозможно сказать, что структура данных NoSQL верна. Если вы хотите узнать о NoSQL, я рекомендую прочитать документацию Firebase по структурированию данных, эту статью о моделировании данных NoSQL и некоторые старые сообщения в блоге Firebase (например, это).).
Одна из непосредственных проблем в вашей структуре данных заключается в том, что вы используете псевдомассивные индексы в качестве ключей для ваших данных. Это приведет к трудностям, поскольку Firebase попытается интерпретировать их как фактические индексы массива (то есть вы получите обратно массив с пустым первым элементом), и он не масштабируется для многих пользователей или пользователей, которые могут быть отключены. Подробнее об этом читайте в сообщении в блоге о массивах.