android - Firebase 中的数据库结构

标签 android firebase firebase-realtime-database nosql

如何创建一个游戏链接到 2 个玩家的结构?例如,如果我创建了一个乒乓球游戏,并且在比赛结束后我想保留比分和球员。我怎样才能做到这一点?我怎样才能将这 2 名玩家链接到一场游戏中,并知道哪个玩家赢了,哪个输了?

我在 SQL 中做了类似的事情,但我不知道如何在 Android 的 JSON (Firebase) 中进行。在 SQL 中,我创建了一个用户表和一个游戏表,我用他们的用户名记录了玩家 1 和玩家 2,然后对玩家赢了和输了做了一个 SELECT。

我如何在 Firebase 中执行此操作?

谢谢!

最佳答案

使用 NoSQL,数据在需要的地方被扁平化和复制,以便快速访问相关数据。这称为反规范化,您可以在 great post 中阅读更多内容.

所以您提供的乒乓球游戏帖子,您的 firebase JSON 数据库可能如下所示:

players: {
  -KUQvO_GBh4jdale6Pj4: {
    name: 'Hillary',
    wins: 2,
    lost: 0,
    tied: 0,
    gamesPlayed: [
      -KUQvQhApOLfhl0yzTTH,
      -KUQwI4P9q4DdSsUn9Du
    ]
  },
  -KUQvQ3_--kO67AOgc9D: {
    name: 'Trump',
    wins: 0,
    lost: 2,
    tied: 0,
    gamesPlayed: [
      -KUQvQhApOLfhl0yzTTH,
      -KUQwI4P9q4DdSsUn9Du
    ]
  }
},
games: {
  -KUQvQhApOLfhl0yzTTH: {
    player1: -KUQvO_GBh4jdale6Pj4,
    player2: -KUQvQ3_--kO67AOgc9D,
    winner: player1,
    timestamp: 1476863790
  },
  -KUQwI4P9q4DdSsUn9Du: {
    player1: -KUQvO_GBh4jdale6Pj4,
    player2: -KUQvQ3_--kO67AOgc9D,
    winner: player1,
    timestamp: 1476863999
  }
}

更新

article讨论多位置更新,允许您同时更新多个路径以保持数据完整性。如果您单独进行每个更新,一个或多个更新可能会失败,这意味着您的数据可能会出现问题。

关于android - Firebase 中的数据库结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40121573/

相关文章:

android - 如何查看特定日期的所有条目,SQLite - Android

android - android如何使用蓝牙打印机打印WebView内容

android - 使用 Robolectric 3 和 ORMLite 进行测试时使用本地数据库

android - 在可绘制文件夹中共享图像

javascript - $authWithPassword 不是 AngularFire 2.x 中的函数

javascript - JavaScript 中的异步回调

javascript - 如何阻止从浏览器控制台访问 Firebase 实时数据库?

ios - 查询限制(到最后 :1) firebase Chat Mesenger Swift

javascript - Grandchild 的 Firebase v3 查询

java - Firebase 数据库未正确同步