将swift中的对象层次结构映射到firebase

问题描述:

我想将swift中的对象层次映射到firebase,并且试图找出最佳模式。将swift中的对象层次结构映射到firebase

我有一个属性一个父类ParentpropParent和两个孩子:Child1与属性propChild1Child2与属性propChild2

什么是最有效和可维护的方式将其映射到Firebase模式。

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

在问题的术语是有点模糊,不适用于Swift到Firebase。在这个例子中,有一类Parent和一个* SubClass * Child1和Child2。父类不*有两个孩子。这是一个类到子类的关系,子类继承父类属性(这是子类化的一部分)。在Firebase中,情况并非如此;没有类和子类,只有父节点和子节点,唯一的关系是路径../parent_node/child1和/ parent_node/child2;没有属性的继承(因为没有)。 – Jay

在NoSQL数据库,几乎从来不认为是最有效的所有用例的单一最模型。这是因为在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

为了更清楚地说明,我正在寻找一种模式来建立Firebase中的继承关系,它为关系数据库提供这种模式的相同目标https://www.martinfowler.com/eaaCatalog/singleTableInheritance.html –