gpt4 book ai didi

mysql - 关注/取消关注组或列表的数据库架构

转载 作者:行者123 更新时间:2023-11-29 08:53:47 29 4
gpt4 key购买 nike

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

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

Ex #2:我仅关注用户 #2 的一个列表,而不是点击“关注全部”按钮。我应该只看到一个列表,而不是所有列表。

简单的关注/关注系统的结构可能是一个具有 user_id => follower_id 架构的表,但这并不能说明所关注的用户创建的新列表。

问题:哪种数据库模式最适合这种情况?

最佳答案

为了简化它并帮助它扩展,我将其视为 list_id => follower_id 的映射。带有一个映射 user_id => follower_id 的辅助表

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

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

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

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

关于mysql - 关注/取消关注组或列表的数据库架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10491566/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com