Firebase - 了解非规范化数据结构

时间:2017-04-04 02:54:25

标签: javascript firebase firebase-realtime-database

我正在最终确定Firebase的结构,并希望确定我能够在早期使用最简单,最具扩展性的设计。

要求

  • 用户可以拥有许多喜欢的球队
  • 团队可以拥有许多喜欢它的用户(收藏者)

这是我目前的数据结构

firebase
--team-favoritees
--teams
--user-favorites
--users

我在Firebase结构上阅读的大多数帖子都有更多这种结构

firebase
--teams
----favoritees
--users
----favorites

但是,我也认为Firebase应该尽可能地非规范化,这就是为什么我将数据结构化为具有一个较少的嵌套节点。

有人说 - 我的设计有什么缺点吗?如果我不必更深入地挖掘一个额外的节点,可能不会同时更新多个节点,可能会为简单的事务拉出不需要的记录?一种设计是推荐的吗?

感谢任何输入!

1 个答案:

答案 0 :(得分:1)

transaction具有特定含义(这是它自己的一种方法)。如果您的意思是update,我知道they show how会发送多个'命令',如果您愿意的话,

  // Write the new post's data simultaneously in the posts list and the user's post list.
  var updates = {};
  updates['/posts/' + newPostKey] = postData;
  updates['/user-posts/' + uid + '/' + newPostKey] = postData;

我认为这种“堆叠命令”可以用其他方法支持单个更新对象(例如transaction)。

关于数据结构/非规范化,它们为我所遵循的“可扩展的数据”提供了a specific example