java - 在一个 Firebase 数据库中使用两种不同的结构

标签 java android database firebase firebase-realtime-database

我目前正在开展一个项目,在我的 Java Android 应用程序中需要两种不同类型的不相关数据结构。一个是用户,另一个是食物的种类。

用户是这样设置的:

用户

  • 用户名
    • 姓名
    • 年龄
    • 性别
    • 体重
    • 高度

但是,我还需要一个看起来像这样的,它必须是可搜索的:

食物

  • 姓名
    • 碳水化合物
    • 蛋白质

是否可以使用相同的数据库(最好是 Firebase,因为我已经在使用它),或者我是否需要向我正在制作的应用程序添加另一个数据库?

编辑:我最终导出了 JSON,根据此处给出的良好答案重写,然后再次导入。它完美无瑕。感谢您的回答!

{
  "foods" : {
      "name" : {
        "carbohydrates" : "5",
        "fats" : "5",
        "proteins" : "5"
    }
  },    
  "users" : {
    "FjtMNTcDrOP2wcaPAa0E0Cc1jRz2" : {
      "activity" : "Moderate Exercise (3–5 days/week)",
      "age" : "40",
      "gender" : "Male",
      "height" : "180",
      "name" : "Flex",
      "weight" : "86"
    }
  }
}

最佳答案

是的,可以在 Firebase 实时数据库中为多个实体类型(例如您的 usersfoods)建模。虽然它没有表的概念,但它是 JSON 值的层次结构,您可以在其中建模任何您想要的结构。

例如,您可以使用此 JSON 表达您的数据模型:

{
  "users": {
    "userid": {
      "name": "value", 
      "age": 42,
      "gender: "value", 
      "weight": 190,
      "height": 172
    }
  },
  "foods": {
    "name": {
      "carbohydrate": 42
      "fat": 11,
      "protein": 8
    }
  }
}

在关系术语中,上述模型定义了两个“表”:usersfoods。在 Android 代码中,您可以使用以下方法定义对其中每一个的单独引用:

DatabaseReference rootReference = FirebaseDatabase.getInstance().getReference();
DatabaseReference usersReference = rootReference.getChild("users");
DatabaseReference foodsReference = rootReference.getChild("foods");

关于java - 在一个 Firebase 数据库中使用两种不同的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55195649/

相关文章:

java - 字符串无法转换为 double

java - 为什么可以将匿名类的实例分配给接口(interface)变量?

android - Cordova 窗口错误 : An error occurred while listing Android targets

php - MySql 触发器不工作,语法错误

sql - 如何找到数据库时间重叠

java - 在 Hibernate 中为外键使用 MySQL 索引

java - 准备好的语句不适用于 and 运算符

android - CameraX - 无法配置相机

android - 如何重新显示代码文本?

PHP 7.1 fatal error : Allowed memory size of 268435456 bytes exhausted