mysql – 如何建模友谊关系
作者:互联网
我一直试图弄清楚如何做到这一点,即使查看其他示例,我也无法理解,所以也许我可以得到一些个性化的帮助.
我有两张桌子,users_status和友谊.
在users_status表中,我有一个字段userid和其他几个.
在友谊表中,我有字段request_to,request_from和friendship_status.
基本上我想要做的是获取当前用户的所有状态帖子以及当前用户的朋友(我可以使用$userid变量在我的PHP中指定).
这是友谊表结构的一个例子.当发送好友请求时,发送者和接收者的用户ID被放在表中,friendship_status为0.当接受请求时,friendship_status被设置为1,这两个现在是朋友.
friendship_id request_from request_to friendship_status
1 111248 111249 1
2 111209 111249 1
3 111209 111248 0
11 111209 111259 1
5 111252 111209 1
12 111261 111209 1
我意识到这甚至可能不是确定友谊的最佳结构,特别是因为该网站是基于关系的,并且必须检查友情关系将是一个经常使用的东西.
对于friend_requests和友谊有两个单独的表可能更好吗?如果是这样,我将如何构建/管理友谊表?
解决方法:
您可以使用表连接(例如http://dev.mysql.com/doc/refman/5.0/en/join.html)来查找所有请求.
实际上你可以在这里使用子查询:
SELECT * FROM users_status WHERE userid = "$userid"
OR userid in (SELECT request_to FROM friendships where request_from = "$userid" AND friendship_status = 1)
OR userid in (SELECT request_from FROM friendships where request_to = "$userid" AND friendship_status = 1)
用您的用户ID替换$userid
标签:mysql,database-design,relationships,table-structure 来源: https://codeday.me/bug/20190729/1576497.html