我有一个mysql数据库。我有一张用户表。我想回答“一个用户是另一个用户的朋友吗?”的问题。这些是单向的朋友关系。我想我有两个选择,并且想要更高效的解决方案:
1)保留一张朋友关系表。两列:
username | friend_username
--------------------------
mary john
mary steve
mary kate
...
回答友谊问题只需选择两列与用户名 1 和 2 匹配的计数。
2)再次包含两列的表:
username | friends_serialized
-----------------------------
mary john,steve,kate,
所以“friends_serialized”列包含一个(逗号)分隔的字符串。如果我想知道玛丽是否与某人成为朋友,我可以这样做:
select count from xxx where username="mary" AND friends_serialized LIKE "%,steve,%"
(我不确定语法)。这真的会让我在第一次实施中赢得什么吗?它至少更紧凑,当我需要向用户提供朋友列表时,我可以在单个列中读取它,而不是选择所有匹配的列(如 #1 所示)。
我的问题:我正在运行一项游戏服务,用户可以在其中互相发送邀请来玩游戏。我想防止陌生人发送非朋友邀请。因此,我希望能够快速(紧凑地)查明向另一个用户发送邀请的用户是否实际上是共同的朋友。
谢谢