0

我正在寻找的是一个追随者/追随者系统,在这个系统中,您不是简单地追随用户,而是追随他们共享的部分内容。几乎就像您在关注 Twitter 的“列表”或群组而不是人一样。不过,有了这个,您就可以关注/取消关注用户共享的所有内容,或者只是关注/取消关注您想要的列表。

例如 #1:我单击“全部关注”按钮来关注用户 #1 的列表,但取消关注有关政治的列表。现在我正在关注他们分享的所有内容,除了一个列表。我是他们的追随者。

例如 #2:我只关注用户 #2 的列表之一,而不是单击“全部关注”按钮。我应该只看到一个列表,而不是他们的所有列表。

一个简单的关注/关注系统的结构可能是一个带有user_id => follower_id模式的表,但这不会解释用户创建的新列表。

问题:什么数据库模式最适合这个?

4

1 回答 1

2

为了简化它并帮助它扩展,我将其视为list_id => follower_id与辅助表的映射,该辅助表是user_id => follower_id

帮助表唯一让您知道的是,如果用户创建了一个新列表,它会告诉list_id => follower_id您需要创建哪些映射。它基本上只是作为追随者的设置。(例如:自动关注 X 用户的新列表)

当您向关注者显示提要时,您只能访问具有地图的表格list_id => follower_id。您甚至不需要查找user_id => follower_id映射。只有在创建新列表时才会发挥作用。

这里最大的问题是您必须处理关注者第一次说“关注所有”/“关注用户”的情况。list_id => follower_id在这种情况下,您将根据该用户已经存在的列表回填所有映射。(我相信这类似于 Twitter 处理他们的追随者模型的方式。如果我开始关注某人,它会回填 X 条他们的推文,如果我取消关注它会删除 X 条他们最近的推文)

然后,如果用户想要排除一个列表,您只需删除该特定列表到该关注者的映射。在这种情况下,您可以保留 的映射,user_id => follower_id因为我假设您希望用户创建的任何新列表都显示给关注者。

于 2012-05-09T22:16:51.633 回答