将swift中的对象层次结构映射到firebase
我想将swift中的对象层次映射到firebase,并且试图找出最佳模式。将swift中的对象层次结构映射到firebase
我有一个属性一个父类Parent
propParent
和两个孩子:Child1
与属性propChild1
和Child2
与属性propChild2
。
什么是最有效和可维护的方式将其映射到Firebase模式。
class Parent {
var propParent: String
}
class Child1: Parent {
var propChild1: String
}
class Child2: Parent {
var propChild2: String
}
在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
)是无意义的标记。
它使用的概念从一些其他的答案,所以我会在那儿与你联系以获取更多信息:
感谢您的回答。我不确定你的意思是“用户”在这里。另外,你如何存储继承的属性?在孩子还是父母?这是这里的主要问题。这很让人困惑,尤其是如果你在父项中有一个由子项继承的id属性。 –
抱歉误解你的问题。你是否可以编辑你的问题来包含读/写数据的代码,你正在考虑的JSON以及你看到的问题? –
为了更清楚地说明,我正在寻找一种模式来建立Firebase中的继承关系,它为关系数据库提供这种模式的相同目标https://www.martinfowler.com/eaaCatalog/singleTableInheritance.html –
在问题的术语是有点模糊,不适用于Swift到Firebase。在这个例子中,有一类Parent和一个* SubClass * Child1和Child2。父类不*有两个孩子。这是一个类到子类的关系,子类继承父类属性(这是子类化的一部分)。在Firebase中,情况并非如此;没有类和子类,只有父节点和子节点,唯一的关系是路径../parent_node/child1和/ parent_node/child2;没有属性的继承(因为没有)。 – Jay