2017-10-21 4 views
0

オブジェクト階層を素早くfirebaseにマップしたいと思います。これを行うための最良のパターンを見つけようとしています。オブジェクト階層を迅速にファイアベースにマップします

私は、プロパティを持つ1つの親クラスParentを持っpropParentと2人の子供:プロパティpropChild2とプロパティpropChild1Child1Child2

これをfirebaseスキーマにマップする最も効率的かつ維持可能な方法は何ですか。 NoSQLので

class Parent { 
    var propParent: String 
} 
class Child1: Parent { 
    var propChild1: String 
} 
class Child2: Parent { 
    var propChild2: String 
} 
+0

問題の専門用語が少し曖昧で、 SwiftからFirebaseには適用されません。この例では、Parentクラスと* SubClass * Child1およびChild2クラスがあります。親クラスは2人の子供を持っていません*。これは、サブクラスが親クラスの属性を継承するクラスとサブクラスの関係です(サブクラスの力の一部です)。 Firebaseでは、そうではありません。クラスとサブクラスはなく、親ノードと子ノードのみがあり、唯一の関係は../parent_node/child1と/ parent_node/child2というパスです。属性が継承されていないため、属性の継承はありません。 – Jay

答えて

0

すべてのユースケースのための最も効率的である単一の最もモデルがほとんど決してありませんデータベース。なぜなら、NoSQLでは、アプリケーションに実装したいユースケースごとにデータモデルを変更して拡張する必要があるからです。トピックの概要を知りたい場合は、NoSQL data modelingを読んで、Firebase for SQL developersをご覧ください。

users 
    parent: {...} 
    child1: {...} 
    child2: {...} 
parents: /* contains the parent for each user */ 
    child1: "parent", 
    child2: "parent" 
children: /* contains the children for each user */ 
    parent: 
    child1: true, 
    child2: true 

ユーザーは、単一の親はでここにモデル化されて持つことができるという事実を:その最も基本的で、あなたはとしてモデル化することができ、双方向多対多の関係を、持っている、と述べた

parentsの下に各ノードの単一の値を持つ。ユーザーあたり複数の可能性がある子は、childrenの下の各ノードのコレクションとしてモデル化されます。このコレクションは、いわゆるインデックスとしてモデル化されています。String: trueペアのコレクションです。値(true)は無意味なマーカーです。

これは、いくつかの他の回答からの概念を使用していますので、私はより多くの情報のためにそこにリンクされます:

+0

答えをありがとう。私はここであなたが「ユーザー」の意味を理解していません。また、どのように継承されたプロパティを格納しますか?子供や親の場合?それがここでの主な問題です。これは特に、子に継承されている親にidプロパティがある場合は混乱します。 –

+0

ご迷惑をおかけして申し訳ありません。データを読み書きするコード、検討しているJSON、および表示される問題を含めるように質問を編集できますか? –

+0

さらに明確にするために、私は、リレーショナルDBのためにこのパターンの同じ目的を果たすfirebaseのモデル化継承のパターンを探していますhttps://www.martinfowler.com/eaaCatalog/singleTableInheritance.html –

関連する問題