我开始使用Firebase和NoSql,我想了解最佳实践,所以我尝试创建这个模式与订单,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模式(row_orders与id_article和id_order)来简化get数据。
正确吗?或者How I can do?
没有办法说NoSQL数据结构是正确的。如果你想学习NoSQL,我建议你阅读关于结构化数据的Firebase文档,这篇关于NoSQL数据建模的文章,以及Firebase博客上的一些旧博客文章(比如这篇)。
数据结构中的一个直接问题是使用伪数组索引作为数据的键。这将导致一段困难的时间,因为Firebase将尝试将它们解释为实际的数组索引(这意味着您将返回一个具有空第一个元素的数组),并且它不能扩展到许多用户或可能离线的用户。在关于数组的博客文章中了解更多。