如何访问firebase中的相​​关数据

时间:2017-08-31 22:26:01

标签: android firebase firebase-realtime-database

我是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中获取该产品的名称和价格?

1 个答案:

答案 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

希望你能更好地理解这个概念。