在MySQL中存储可变长度数组的最佳方法
我想制作一个应用程序,允许用户将其他用户添加到个人好友列表中。在我的数据库中有一个名为“users”的表。每个用户都有一个唯一的id和一个唯一的用户名,现在每个用户都需要有一个朋友列表 我认为保存这些FriendsList的最佳选择是为每个用户创建一个包含两个列的单独表格。一列是朋友的id,一列是他们的用户名 我可以同时搜索和检索朋友的用户名和id。在缺点方面,我需要创建大量的表(数百、数千、也许数百万),每个用户一个 这会使从数据库中选择表变慢吗? 这是否会不必要地占用大量服务器空间?在MySQL中存储可变长度数组的最佳方法,mysql,database-design,relational-database,Mysql,Database Design,Relational Database,我想制作一个应用程序,允许用户将其他用户添加到个人好友列表中。在我的数据库中有一个名为“users”的表。每个用户都有一个唯一的id和一个唯一的用户名,现在每个用户都需要有一个朋友列表 我认为保存这些FriendsList的最佳选择是为每个用户创建一个包含两个列的单独表格。一列是朋友的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
这里的朋友都是彼此的朋友我认为你不需要走这条路。例如,如果您有一个用户表(
user\u id
,user\u name
)和另一个友谊表(Friendly\u id
,user\u id1
,user\u id2
),那么您将能够在一个表中存储所有友谊。唯一的id是友谊\u id
主键是(UserId,FriendId)
ann(UserId)
和(FriendId)
都是用户表(id)
的外键,难道友谊表就不能变得异常长吗?如果100万用户平均每人有20个朋友,那么你有2000万行,而不是100万行。