Android - Firebase数据库结构

时间:2017-10-12 14:27:15

标签: android firebase firebase-realtime-database

我正在开发一个Android应用程序,年龄较大的孩子可以捡到年幼的孩子并步行上学。通过该应用程序,经过身份验证(电子邮件和密码)的小孩可以在三个地址之间进行选择以获取。截至目前,我的实时数据库看起来像这样:

Database as of now

我应该创建一个名为" Adresses"并有如下结构?

  Adresses
    Sherman Street
     username: Jannie

因为我想检索街道的名称以及在列表视图中选择了地址的所有用户

1 个答案:

答案 0 :(得分:0)

您建议的方法是很好的做法:您应该尝试尽可能地展平您的数据结构。

我建议使用用户的ID作为每个地址的成员资格,这样很容易识别。这样,您就可以从/addresses/Sherman Street获取“Sherman Street”成员列表,然后轻松地将其中列出的键与/users/处的用户匹配。

{
  "users": {
    "oXrJPVZsnMP3VKp9palSBfdnntk1": { ... },
    "xQDx3ntavhV3c02KFRPS8lxYfC62": { ... }
  },

  "addresses": {
    "Sherman Street": {
      "members": {
        "xQDx3ntavhV3c02KFRPS8lxYfC62": true
      }
    },
    "Wallaby Way": {
      "members": {
        "oXrJPVZsnMP3VKp9palSBfdnntk1": true
      }
    }
  }
}

您还可以通过向用户添加与地址名称匹配的address字段来添加向后链接:

{
  "users": {
    "oXrJPVZsnMP3VKp9palSBfdnntk1": { ... },
    "xQDx3ntavhV3c02KFRPS8lxYfC62": {
      "username": "Jannie",
      "address": "Sherman Street"
    }
  },

  "addresses": {
    "Sherman Street": { ... }
  }
}

将两者结合使用可以轻松识别用户选择了哪些地址,无论您当前在应用中处理哪个对象。

有关如何构建数据的更多详细信息,请参阅Firebase documentation on database structure