0

问题:我正在开发一种有卖家和买家的电子商务平台。现在在我的情况下,卖家也可以是买家,即每个用户都可以买加卖。
所以我有一个名为users的表。现在我想实现一个关注供应商/用户功能,其中用户可以单击关注,他会看到该供应商在他的帐户下列出的所有商品(直到他取消关注)。

现在我的传统方法是有一个有一个键和两列的表来存储关注者和被关注的例如: |id | userId| vendorId
所以当用户继续关注其他人时它会水平移动。但是如果我有一个用户关注很多人(比如100 ) 我的查询可能需要很长时间才能为每个用户选择 100 条记录。

问题:我如何实现跟随机制?还有比这更好的方法吗?我使用的是PHP和Mysql。

研究:我尝试了解 facebook 和 Pinterest 是如何处理它的,但这对我来说似乎有点太大了,因为我不希望立即有那么多用户。我是否需要使用memcache来提高性能并避免重复查询?我可以在任何意义上使用与 Mysql 并行的文档数据库吗?

我想要一个简单而强大的实现,如果我的用户群逐渐增长到几千,它可以扩展。

任何帮助或见解都会非常有帮助。

4

2 回答 2

3

因为,根据我对这个场景的理解,一个用户可能关注很多供应商,一个供应商可能有很多关注者,这构成了多<->多关系,因此在数据库模式中实现这一点的唯一规范化方法应该是通过完全按照您的描述使用链接表。

至于性能方面的考虑,我不会太担心,因为它可以在 userId 和 vendorId 上建立索引,所以查询应该没问题。

于 2013-04-26T10:33:09.647 回答
2

联结表可能是最好的方法,但仍然很大程度上取决于您的聚集索引

  • 使用替代键 id 上的键聚集的表可以使添加新记录的速度更快一些。

  • 使用键 (userId,vendorId) 聚集的表将使您在查找供应商的地方查询某个用户更快

  • 使用键 (vendorId,userId) 聚集的表将使您更快地查找关注某个供应商的用户的查询
于 2013-04-26T11:28:42.923 回答