数据库
首页 > 数据库> > mysql – 如何建模友谊关系

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