gpt4 book ai didi

sql - 存储关注用户的最佳方式

转载 作者:行者123 更新时间:2023-11-29 12:36:32 24 4
gpt4 key购买 nike

我知道标题不是那么描述,但真的很难找到通用的东西来描述我的情况。如果有人要编辑,请随意...

所以,我有一个带有 users 表的 postgres 数据库。我想存储一个用户跟随的用户,但我真的不知道该怎么做。我想像 SELECT followed_users FROM users WHERE username='username' 这样会返回每个用户名、ID 或每个关注用户的任何内容。但我没有看到任何干净的方法来做到这一点。

也许举个例子更能说明问题:user1user2user3 之后。
如何存储 user1 关注的人?

编辑:我不知道用户会关注多少用户。

感谢您的帮助。

最佳答案

扩展我上面的评论,因为它变得冗长:

创建一个名为 user_follows 的新表,列如下

user_id1 | user_id2 

follower_id | follows_id 

然后可以查询:

SELECT t1.username as follower_username, t3.username as following_usernae
FROM users t1
INNER JOIN user_follows t2 ON t1.user_id = t2.follower_id
INNER JOIN users t3 ON t2.following_id = t3.user_id
WHERE t1.user_id = <your user>

最后,将您的表格视为“对象”。然后,当您遇到诸如“如何添加正在关注其他用户的用户”之类的问题时,您可以确定此关系是新对象还是现有对象的属性。由于一个用户可能关注多个其他用户,而不是关系对于“用户”来说不是一个好的属性,所以它有自己的表 user_follows

由于 user_follows 只是两个用户之间可能拥有的一种关系,因此将该对象的范围扩大到 relationships 并存储关系类型作为表的属性:

user_id1 | user_id2 | relationship_type

relationships.relationship_type 的值可能是follows, student of, sister of etc...

所以新的查询应该是这样的:

SELECT t1.username as follower_username, t3.username as following_username
FROM users t1
INNER JOIN relationships t2 ON t1.user_id = t2.user_id1
INNER JOIN users t3 ON t2.user_id2 = t3.user_id
WHERE t1.user_id = <your user> AND t2.relationship_type = 'Follows';

关于sql - 存储关注用户的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37752790/

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