当前位置:  开发笔记 > 编程语言 > 正文

我应该在php和mysql中存储为"字符串"或"整数"的朋友吗?

如何解决《我应该在php和mysql中存储为"字符串"或"整数"的朋友吗?》经验,为你挑选了2个好方法。

我处于两难境地,不知道哪一个更好.(我使用的是php和mysql btw)

让我们说我正在开发一个社交社区网站.用户可以根据需要添加任意数量的朋友.在我的数据库中,我有一个用户表,用于存储用户的详细信息,包括用户的朋友.我应该将用户的朋友存储在:

Strings => john; bryan; sam; paul; ...;

要么

整数=> 1; 21; 50; 1779; 30; ......;

String表示存储用户名.整数表示存储其用户ID.

哪一个更好?

如果是字符串,那将是一个非常非常大的字符串(想象用户有400个朋友,有些用户名非常长)

如果是id,如何在用户个人资料页面上列出好友?获取一个长字符串中的ID列表(以分号分隔),使用explode函数将其转换为数组.然后使用循环显示?? 不麻烦吗?还有其他方法吗?如果是,请显示一些示例代码..

或者通常,你们如何将"朋友"列表存储在用户表中?



1> Jon Skeet..:

不要将它们存储为以分号分隔的任何东西.将它们作为用户ID存储在查找表中.假设用户是#2.你可能有:

SourceUserID | FriendUserID
2              1
2              21
2              50
2              1779
2              30
1              // One of John's friends

然后,要显示朋友列表,您查询此表,通过SourceUserID = 2限制它,并连接到用户表以获取名称.例如:

SELECT Name FROM SITE_USERS
INNER JOIN USER_FRIENDS ON SITE_USERS.ID = USER_FRIENDS.FriendUserID
WHERE SourceUser = ?

(或者无论您的参数化查询格式是什么;使用您正在显示其页面的用户的ID填充参数.)



2> Jack Sleight..:

通常你会创建第三个表"users_friends",其中有两列,userId和friendId,它们都构成了主键.一个快速的谷歌想出了这个:http://www.tekstenuitleg.net/en/articles/database_design_tutorial/8,但你可能想查阅关于"多对多关系"的其他文章.

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有