SQL的Firebase Java Admin SDK初学者

时间:2018-11-06 08:08:51

标签: java firebase firebase-realtime-database

我正在研究客户的销售点(POS)软件。我打算将django与MySQL结合使用,但客户端无法为主机付费,因此我决定用Firebase用Java编写它。我在考虑来自MySQL的Firebase时遇到了一些麻烦。

根据Firebase文档,要像我在SQL中那样进行关系,它必须看起来像这样:

inventory : {
    CD001 : {
        genre : {
            "CLASSICAL" : TRUE
    }
}
genre : {
    CLASSICAL : {
        Name : "CLASSICAL"
        inventory : {
            CD001 : TRUE
        }
    }
}

在SQL中,我只是将类型primary key作为foreign key放入清单中。在Firebase中有更好的方法吗?似乎对于每种具有CLASSICAL类型的产品,我都必须制作两个updateChildAsync()。另外,任何更改(例如从清单中删除流派)也必须遍历两个DatabaseReference

如果我要使用push来获取生成的primary key,那就更糟了,因为我必须遍历每个孩子才能得到genre的名字。

我知道这可能不是制作POS的最佳方法,但是鉴于项目的局限性,而且我喜欢学习新知识,因此我会坚持下去。

1 个答案:

答案 0 :(得分:1)

在NoSQL中,您经常会在多个地方使用相同的值,以允许应用程序的特定用例。这是正常现象,但是如果您来自关系数据库的背景,则可能需要一些时间来适应。

要掌握Firebase的NoSQL模型,我建议阅读NoSQL data modeling,观看Firebase for SQL developers(对于Firebase Realtime Database)和Getting to know Clouf Firestore

有关如何为多对多关系建模的示例,请参见Many to Many relationship in Firebase。您的示例看起来更像是一个分类问题,在这种情况下,我还建议您阅读Firebase query if child of child contains a value