Firebase中的数据库结构

时间:2016-10-19 03:24:04

标签: android firebase firebase-realtime-database nosql

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

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

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

谢谢!

1 个答案:

答案 0 :(得分:1)

使用 NoSQL ,数据会变平并在需要的地方重复,以便快速访问相关数据。这称为非规范化,您可以在此great post中详细了解。

所以你提供的ping pong游戏帖子,你的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讨论了多位置更新,允许您同时更新多个路径以保持数据完整性。如果您单独进行每次更新,则可能会有一个或多个更新失败,这意味着您的数据可能意味着它无法解决。