2016-11-30 4 views
3

私はシンプルなアプリケーションを作成し、ログインしてフォームを入力することで無謀な三輪車のドライバ(私たちの街では1つの問題はありません)を報告することができます。報告書は含まれています。これを行うにはクリーンな方法がFirebaseデータベースの正規化

enter image description here

あります:

- created_at 
- description 
- lat 
- lng 
- plateNumber 

そしてこれまでのところ、これは私のJSONの構造ですか?これまでのところ、すべてのレポートを取得したいと思っていますが、それはうまくいくでしょう。plateNumber私はそれが難しいと思います。

ご提案いただければ幸いです。

PS:私は、私はレポートを分離し、ユーザーの下でグループ化しないで維持することをお勧め提案

答えて

1

のためのオープンだけれども、それは、リレーショナルデータベースではありません知っています。作成した日付に基づいてレポートをソートする必要がある場合は、作成した日付のレコードをIDとしてユーザのレコード内に保持してください。この

reports 
    9F0A756DF0B849CCAB7FAA0AC089475E 
     - created_at:14804893896 
     ... 
    1C060A2CA16D42CF9DF53FD80A9C6ECA 
    ADC4582B3C5746A487178887A495E005 

users 
    F4C8F5642EC44727B929E3E408321122 
     - email: .... 
     - reports 
      9F0A756DF0B849CCAB7FAA0AC089475E:14804893896 
      1C060A2CA16D42CF9DF53FD80A9C6ECA:14865486878 
    C9E0FAF081AC4447B0C194811314DF0F 
+0

私はこの1つが好きです。間違いなく試着しますか? – FewFlyBy

1

ような何か私はこの問題を持っている場合今、あなたはあなたがデータベースを正規化する必要が言うように...、私はコードを書く停止し、私のアプリケーション/ウェブについて考え始める...

  • 私はすべてのレポートのリストを表示したい、別のリストはplateでソートされ、他の人に注文されていますか?
  • レポートのすべてのリストで、plateでソートされていますか?

あなたの答えは最初であれば、あなたはこれらのように、インデックスとしてのノードを生成する必要があります。

reports{ 
    report_id{ 
     created_at:" " 
     description:" " 
     lat:" " 
     lang:" " 
     location:" " 
     plate_number:" " 
    } 
} 
reports_idx_plate{ 
    plate_number1{ 
     report_id1:"true" 
     report_id2:"true" 
     report_id3:"true" 
     report_id4:"true" 
    } 
} 

あなたの答えは秒1であれば、あなたの最良の選択肢はこれです1つ:

reports{ 
    plate_number{ 
     report_id{ 
      created_at:" " 
      description:" " 
      lat:" " 
      lang:" " 
      location:" " 
      plate_number:" " 
     } 
    } 
} 

子ノードからリストを取得する必要がある場合は、ノードを正規化してノードをインデックスとして生成する必要があります。 私はあなたと良いプログラミングを手伝ったかどうか教えてください!

+0

良いアイデア。これも試してみましょう! – FewFlyBy

関連する問題