php - 使用 PHP 和 Mysql 实现 "Follow"用户功能

标签 php mysql web-applications memcached

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

现在我的传统方法是有一个表有一个键和两列来存储follower 和 followed 例如: |编号|用户名| vendorId
所以它会随着用户继续关注其他人而水平移动。但是如果我有一个用户关注很多人(比如 100),我的查询可能会花费很多时间为每个用户选择 100 条记录。

问题:如何实现follow机制?有没有比这更好的方法?我正在使用PHP和Mysql。

研究:我尝试了解 facebook 和 Pinterest 是如何处理它的,但这似乎有点太大了,我现在无法学习,因为我不希望立即有那么多用户。我是否需要使用 memcache 来增强性能并避免重复查询?我可以在任何意义上与 Mysql 并行使用 Document Database 吗?

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

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

最佳答案

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

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

关于php - 使用 PHP 和 Mysql 实现 "Follow"用户功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16234207/

相关文章:

mysql - Sequel gem & MySQL (Ruby + Windows) : load mysql. so文件,不是mysql.rb

Mysql - 获得最高和最低 5 个结果

testing - 移动跨浏览器网络测试

PHP 检查字符串中某个字符的出现

php - Unix 命令 "sed"替换 PHP 关联数组值

php - Codeigniter RESTful 建模和 Controller

architecture - 记录 Web 应用程序流/交互

session - 如何在 clojure 网络应用程序中创建用户帐户?

php - 使用 PHP 获取表的坐标并存储在数据库中

php - 在 Rest Client (Codeigniter) 中发送邮件