我是Firebase的新手。我已经阅读了很多关于构造我的数据以加快加载的文章。我已经理解了逻辑。但我想对此进一步解释。
假设我正在创建一个应用程序,其中有两个实体:用户和产品。
用户可以发布很多产品。这是一对多的关系。我已经读过,为了更好的性能,我必须复制我的数据(非规范化),所以我的数据库看起来像这样:
users:
{
"user1":
{
name: "denis",
phone: "09898989083"
.........more data here
}
products:{
"product1": true,
"product2":true
}
}
"products"
{
"product1":
{
name: "iphone6",
price: "500 USD"
}
"product1":
{
name: "samsung",
price: "400 USD"
}
}
我的问题是在我的用户表中,关于与产品的关系告诉我将产品ID放入然后我将值设置为true。这是真的。如何使用真实的方式在ANdroid中获取该产品的名称和价格?
答案 0 :(得分:1)
正如您所说,denormalization
是Firebase中的常见做法。我会举个例子来更好地理解它的含义。许多具有SQL背景的开发人员将构建数据库,如下所示:
Firebase-root
--- Users
--- User1
--- name: "denis"
--- phone: "09898989083"
--- Products
--- Product1
--- name: "iphone6"
--- price: "500 USD"
--- Product2
--- name: "iphone5"
--- price: "300 USD"
如您所见,Products
节点嵌套在每个用户节点下。这意味着每次要获取特定用户的某些详细信息时,都需要下载该用户的enitire节点,包括产品详细信息,这显然不是必需的。因此,对于Firebase,我们使用denormalization
。这意味着在用户节点内我们仅使用product1": true
来了解特定产品属于该用户。了解产品的ID,我们可以获得该产品的所有必要细节。要记住的另一件事是我们需要尽可能地使数据库变平。为此,我再次阅读以下帖子Structuring your Firebase Data correctly for a Complex App。
希望你能更好地理解这个概念。