使用用户数据和产品数据在Firebase上构建数据库

时间:2018-12-22 14:35:05

标签: reactjs firebase

我正在做一个有关买卖商品的项目,就像一个市场一样。我在项目中使用React和Firebase。

问题是构建数据库的最佳方法是什么: 问题: 我当前的数据库是:

 Root ---

      ---Users //data about the user: id, username, avatar, customer rating...
      ---SellData //include data about the Seller ads: title, price, description, image,...
      ---BuyData  //include data about the Buyer ads: title, price, description, image,...

然后,在我的主页中,我想显示一个列表项,每个项目都具有以下信息:userName,Avatar,客户评分,标题,价格。因此,它是Users和SellData之间的结合。

我是否应该将更多用户数据添加到Root / SellData或Root / BuyData中,因为提交的那些只是产品信息,而不是用户信息?但是,如果这样做的话,我的数据库在扩展时将非常大。 我的情况有其他解决方案吗?

1 个答案:

答案 0 :(得分:3)

在NoSQL的世界中,您不应该害怕重复数据和使数据模型非规范化。这是有关NoSQL数据建模方法的“著名”文章:https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/

与其从纯粹的数据库优化角度(在SQL世界中进行规范化)设计数据模型,不如在NoSQL世界中,从查询角度来考虑它,尝试最大程度地减少给定屏幕的查询数量/用例。

因此,在UserSellData记录/节点中复制BuyData数据是完全有效的。这样,在一个查询中,您将获得主页所需的所有信息。

我不知道您使用的是哪个数据库,但是要使不同的记录保持同步,您可以对Realtime数据库使用update()方法,对于Firestore使用batched write方法。