在mysql中设置好友列表

gan*_*jan 2 php mysql database database-design

我想在我的在线游戏中建立朋友列表.我不知道如何设置或从哪里开始.添加朋友和接受我可以处理的朋友部分,但我不知道如何在mysql和php中设置它.连接到每个用户或某物的用户(朋友)列表?

Qua*_*noi 9

如果您的友谊关系是对称的,您可以将每对存储在一个单独的记录中:

friend1 friend2
A       B
B       A
A       C
B       D
C       B
D       B
Run Code Online (Sandbox Code Playgroud)

并查询所有B的朋友:

SELECT  friend2
FROM    friends
WHERE   friend1 = 'B'
Run Code Online (Sandbox Code Playgroud)

或者id在第一个字段中存储最少的用户,在第二个字段中存储最大的用户id:

friend1  friend2
A        B
A        C
B        D
Run Code Online (Sandbox Code Playgroud)

并查询这样B的朋友:

SELECT  friend1
FROM    friends
WHERE   friend2 = 'B'
UNION ALL
SELECT  friend2
FROM    friends
WHERE   friend1 = 'B'
Run Code Online (Sandbox Code Playgroud)

第一个选项更有效率MySQL,如果您的友谊关系不对称(如上LiveJournal),这是唯一的选择

看到这篇文章:


rob*_*jam 5

友谊本质上是两个人之间的相互关系.在数据库术语中,它是两个用户之间的多对多关系.

所以你需要的是一个链接表,它通过ID保存对两个用户的引用.

例

用户表

ID    Username
1     Bob
2     Jim
3     Alice
Run Code Online (Sandbox Code Playgroud)

朋友表

user1    user2
1        2
2        3
Run Code Online (Sandbox Code Playgroud)

这将使Bob的朋友Jim和Jim成为Alice的朋友.