gan*_*jan 2 php mysql database database-design
我想在我的在线游戏中建立朋友列表.我不知道如何设置或从哪里开始.添加朋友和接受我可以处理的朋友部分,但我不知道如何在mysql和php中设置它.连接到每个用户或某物的用户(朋友)列表?
如果您的友谊关系是对称的,您可以将每对存储在一个单独的记录中:
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),这是唯一的选择
看到这篇文章:
友谊本质上是两个人之间的相互关系.在数据库术语中,它是两个用户之间的多对多关系.
所以你需要的是一个链接表,它通过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的朋友.