2017-07-02 9 views
0

状況:基本的なfirebaseデータベース構造設計の意思決定

アプリでは、最大1000の学校があります。すべての学校には学生と学生がレッスンを受けており、イベントに参加しています(以上)。生徒一人につき、学校ごとに日付ごとに短期間、頻繁にレッスンを行う必要があります。私たちは2つの設計を念頭に置いて、進歩する最善の方法を考えています。

1 - 専用学校ノードと設計

2 - 2つの設計の専用の学校のノードと設計

Example of the 2 designs

PRO設計1
- ログイン後に学校のユーザーにroot権限を与えます。お取置きは学校のIDの
に照会する必要がある - どこでも学校のIDを言及する必要はありません
- ノードの必要は学校ごとに軽減しないと学校あたりのイベント
- 学校のレベル
...

PROデザイン2上のルール
- インターネットで広く知られているフラットデータ

答えて

1

ほとんどのNoSQLデータベース構造では、データの平坦化と非正規化が最も適しています。そしてそれはまさにFirebaseの場合もそうです。

、あなたのデータをフラット化すると、あなたは次のような利点を得る: -

  1. あなたは主に最低限必要な量をダウンロードしています。それが効率とコスト効率をもたらします。
  2. あなたのダウンロードははるかに高速です - 特別にSQL結合クエリのようなものと比較されます。

あなたの特別なケースでは、schoolがログインしているユーザーにどれだけ影響を与えているかによって大きく変わってくると思います。

schoolが学生の属性であり、他の目的を果たさないと仮定すると、2番目のデータベースが移動する方法です。例えば、学生が得ることができる本が、彼女が行く学校とは独立している場合、第2のデータベーススタイルがより適している。

ただし、schoolは、生徒をデータベースとの相互作用を定義するグループに分類すると、最初のデータベース構造が使用されます。この例は、生徒が学校に通っているときにのみ本を手に入れることができるということです。

あなたの意思決定にかかわらず、私はあなたのデータベースを両方の構造できちんと平らにしていることを賞賛したいと思います!そして私の個人的な提案は、あなたのためにコード化し、読んで維持するのにより便利なものと一緒に行くことです。

+0

学生がデータベースとやり取りすることはすべて、1つの学校にのみ関連し、学校は決して同じ目標を共有しません。中国には学校が、メキシコには学校があるかもしれません。だから、私はオプション1に行くと思う。あなたのフィードバックに感謝します!それは私が決定を下すのを助けました。 –

+0

問題ありません!私が助けることができてうれしいです。私の答えが他の人が同様の状況に陥るのを助けると思うなら、それを受け入れてください。それは他の人が見つけやすく、おそらく信頼できるようにします。 –

関連する問題