首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >高效地在数据库中添加好友逻辑

高效地在数据库中添加好友逻辑
EN

Stack Overflow用户
提问于 2012-11-13 01:45:26
回答 2查看 553关注 0票数 0

我期待着在数据库中存储朋友列表的逻辑。我正在考虑使用userid在数组中添加内容

示例: friends表中用户a的数组将包含1、2、4、6、77、44等好友的userid数组

我想知道这是否是一种有效的方法。如果不是,那么对于大型社区来说,理想的实现逻辑是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-13 01:52:22

您可能需要一个单独的多对多连接表。为了实现这一点,如果用户和他们的朋友都驻留在同一个用户表中。该表可能如下所示:

为其执行好友查找的用户的user_id - id,是用户表中user_id字段的外键与用户关联的朋友的friend_id - id,也是用户表中user_id字段的外键

您将拥有跨两个字段的复合主键,从而确保每个user_id到friend_id的组合都是唯一的。

这将是示例CREATE TABLE语句:

代码语言:javascript
运行
复制
CREATE TABLE `friends` (
`user_id` INT(11) NOT NULL,
`friend_id` INT(11) NOT NULL,
PRIMARY KEY (`user_id`, `friend_id`)
)
ENGINE = INNODB;

示例数据可能如下所示:

代码语言:javascript
运行
复制
INSERT INTO `friends` (`user_id`, `friend_id`)
VALUES
(1, 2), (1, 3), (1, 4), (2, 1), (2, 10), (4, 1), (4, 20);

然后假设您想查找与特定用户(即登录的用户)相关联的朋友的所有用户表数据。您可以像这样查询该数据:

代码语言:javascript
运行
复制
SELECT users.*
FROM users
INNER JOIN friends ON users.user_id = friends.friend_id 
WHERE friends.user_id = [The ID of current user]
票数 2
EN

Stack Overflow用户

发布于 2012-11-13 01:46:53

不,不,不!

不要在一个db字段中存储多个值。它会给你带来很多问题。

例如,您可以使用这样的结构

代码语言:javascript
运行
复制
friends (user_id, user_id)

也就是说有两个朋友。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13348715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档