2017-08-31 9 views
0

Firebaseを初めて使用しました。私は速い読み込みのために私のデータを構造化することに関する多くの記事を読んできました。私はすでに論理を理解している。しかし私はこれについてさらに説明したい。Firebaseの関連データへのアクセス方法

ユーザーと商品の2つのエンティティがあるアプリを作成しているとします。

ユーザーは商品をたくさん投稿できます。それは1対多の関係です。私はより良いperormanceのために、私は私のデータ(非正規化)を複製していることを読んだことがあるので、私のデータベースには、次のようになります。

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

あなたが言ったように、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ノードは、各ユーザノードの下にネストされています。これは、特定のユーザーの詳細を取得するたびに、そのユーザーのエンティティノードをダウンロードする必要があることを意味します。だからFirebaseに関しては、denormalizationを使用します。つまり、ユーザノード内では、特定の製品がそのユーザに属していることを知るために、ただproduct1": trueを使用します。製品のIDを知って、私たちはその製品のすべての必要な詳細を得ることができます。また、データベースをできるだけフラットにする必要があることに留意してください。そのために、私はあなたに次の投稿、Structuring your Firebase Data correctly for a Complex Appを読むことを勧めます。

あなたはこのコンセプトをよりよく理解することを願っています。

関連する問題