我开始使用Firebase和NoSql,我想了解最佳实践,因此我尝试使用orders,order_rows和文章创建此模式。主要查询是显示特定顺序,所以我创建了这个:
{
"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架构(带有id_article和id_order的row_orders)来简化获取数据。
这是对的吗?或者我该怎么做?
答案 0 :(得分:0)
没有办法说NoSQL数据结构正确。如果您想了解NoSQL,我建议您阅读Firebase documentation on structuring data,NoSQL data modeling上的这篇文章以及Firebase博客上的一些较旧的博客文章(例如this one)。
数据结构中的一个直接问题是您使用伪数组索引作为数据的键。这将导致困难时期,因为Firebase将尝试将它们解释为实际数组索引(意味着您返回具有空第一元素的数组),并且它不会扩展到可能脱机的许多用户或用户。请在blog post on arrays中了解详情。