【问题标题】:Firebase Java Admin SDK beginner from SQL来自 SQL 的 Firebase Java Admin SDK 初学者
【发布时间】:2018-11-06 08:08:51
【问题描述】:

我正在开发客户的销售点 (POS) 软件。我打算将 django 与 MySQL 一起使用,但客户端无法支付主机费用,因此我决定使用 Firebase 用 Ja​​va 编写它。我在考虑来自 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 的最佳方式,但鉴于项目的限制以及我喜欢学习新东西,我会坚持下去。

【问题讨论】:

    标签: java firebase firebase-realtime-database


    【解决方案1】:

    在 NoSQL 中,您通常会在多个位置具有相同的值,以允许您的应用程序的特定用例。这很正常,但如果您有关系数据库背景,可能需要一些时间来适应。

    要掌握 Firebase 的 NoSQL 模型,我建议阅读 NoSQL data modeling、观看 Firebase for SQL developers(适用于 Firebase 实时数据库)和 Getting to know Clouf Firestore

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-10
      • 1970-01-01
      • 2021-07-19
      • 1970-01-01
      • 2014-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多