Ken*_*all 12 javascript database json non-relational-database firebase
我正在使用Firebase作为后端存储机制(JSON)的简单JavaScript Twitter克隆.我熟悉关系数据库(SQL),但不熟悉非关系数据库.我目前正在尝试研究如何在Firebase中设计数据集的结构,因为没有外键关系或表连接.
该应用程序有三个表,users,tweets,和followers.用户可以发布推文,也可以关注其他用户并查看推文的摘要.尝试创建数据结构时会出现问题,因为我不知道如何加入必要的表.例如,我将如何实现用户关注功能?
这是我用来给自己起点的ERD:
正如我一直在试图环绕这整个事情的JSON我的头,这是最接近的,我可以将它与关系数据库,同时仍使用火力地堡的.push()功能添加到列表数据库(从火力地堡看到仪表板):
我看到有些人试图通过"取消规范化"数据来解决这个问题,理由是Firebase没有任何查询机制.然而,这些文章都主要是在2014年之前,也就是当火力地堡并添加查询.话虽如此,我不明白使用查询如何帮助我,我想我已经陷入了生成的密钥.
我应该如何最好地构建我的数据以使用Firebase JSON列表?我已经阅读了他们的一些文档,但无法找到任何使用我正在寻找的东西和生成的密钥.
我应该尝试以.set()某种方式使用该方法,并使用电子邮件地址作为用户的"主键"而不是生成的密钥?[如下所述,这是我计划避免的事情.谢谢@metame]
这更像是我应该关注的数据结构吗?然后按键查询?
users: {
Hj83Kd83: {
username: "test",
password: "2K44Djl3",
email: "a@b.c"
},
J3kk0dK4: {
username: "another",
password: "33kj4l5K",
email: "d@e.f"
}
}
tweets: {
Jkk3ld92: {
userkey: "Hj83Kd83",
message: "Test message here!"
},
K3Ljdi94: {
userkey: "J3kk0dK4",
message: "Another message here!"
}
}
followers: {
Lk3jdke9: {
userkey: "Hj83Kd83",
followerkey: "J3kk0dK4"
}
}
Run Code Online (Sandbox Code Playgroud)
如果我还要包含其他内容,请告诉我!
在非关系数据库或 noSQL 数据库中表示关系通常是通过嵌入文档(行的 noSQL 措辞)或通过文档引用来解决的,就像您在示例解决方案中所做的那样。
MongoDB 站点有一些不错的文章,主要适用于所有非关系数据库,包括Model One-to-Many Relationships with Document References,我认为这与您的问题最相关。
至于引用键,通常最好使用生成的 ID,因为您可以确保它们是唯一的。
| 归档时间: |
|
| 查看次数: |
12202 次 |
| 最近记录: |