gpt4 book ai didi

sql - 'followers' 和 'followings' 的数据库设计?

转载 作者:太空狗 更新时间:2023-10-30 01:39:00 28 4
gpt4 key购买 nike

尊敬的数据库专家/程序员:

我有一个mysql表,里面有用户信息,比如

id      user_id         name etc.
1 userA
2 userB
3 userC
.. ..
.. ..

我想创建一个功能,比如“关注”其他用户,比如 Twitter。用户 A 可以关注用户 B,或者用户 B 可以关注用户 A,或者两者可以相互关注。为此,我是否应该创建 1 个表,比如说关注者

id      user_id     follower_id
1 userA userB
2 userC userA
3 userA userC
4 userB userC
5 userX userA

现在我想找出谁在关注用户 A。我很喜欢:Select * from followers 其中 user_id = userA这将选择 userB 和 userC。这就是我需要的。

现在我想找到 userA 正在关注哪些人(例如在上表中,userA 正在关注 userC 和 userX。然后我应该运行类似从 follower_id=userA 的关注者中选择 *。

我的问题是,这个数据库设计是否适合这个问题(考虑到数据库冗余和优化?)或者有比这更好的方法吗?谢谢。

最佳答案

总的来说,您的设计是正确的。

但是,如果 user_id 在“users”表中是唯一的,则您不需要“users”中的“id”列。 (包含唯一“id”唯一“user_id”的单个表非常不寻常。)您也不需要“followers”表中的“id”列。

“followers”中的主键应该是 (user_id, follower_id),并确保这些列中的每一列都有一个引用“users”中的“user_id”的外键。

关于sql - 'followers' 和 'followings' 的数据库设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4895809/

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