在MySQL中存储可变长度数组的最佳方法

我想创建一个允许用户将其他用户添加到个人朋友列表的应用程序.在我的数据库中有一个名为’users’的表.每个用户都有唯一的ID和唯一的用户名,现在每个用户都需要能够拥有一个朋友列表.

我认为保存这些朋友列表的最佳选择是为每个用户创建一个包含两个列的单独表.一列为朋友的id,另一列为他们的用户名.

我可以同时搜索和检索朋友的用户名和ID.在缺点方面,我需要为每个用户创建一个表(数百,数千,可能是数百万)的表.

这会使从数据库中选择一个表变慢吗?
这会不必要地耗费服务器上的空间吗?
有没有更好的方法为每个用户保存好友列表?

最佳答案
你不应该这样做.

而是做类似的事情

UserTable
* Id
* UserName

FriendsTable
* UserId
* FriendId

您可能需要阅读一些关于关系数据库的内容.

这样一来,用户就可以成为很多人的朋友.考虑这个例子

UserTable
1,Joey
2,Rachel
3,Chandler
4,Ross
5,Phoebe
6,Monica

FriendTable
1,2
1,3
1,4
1,5
1,6
2,3
2,4
2,5
2,6
3,4
3,5
3,6
4,5
4,6
5,6

来自朋友的人们是彼此的朋友

相关文章

navicat查看某个表的所有字段的详细信息 navicat设计表只能一...
文章浏览阅读4.3k次。转载请把头部出处链接和尾部二维码一起...
文章浏览阅读488次。恢复步骤概要备份frm、ibd文件如果mysql...
文章浏览阅读225次。当MySQL单表记录数过大时,增删改查性能...
文章浏览阅读1.5k次。Mysql创建、删除用户MySql中添加用户,新...
MySQL是一种开源的关系型数据库管理系统,被广泛应用于各类应...