我期待一种将朋友列表存储在数据库中的逻辑。我想在使用用户标识的数组中添加东西
示例:朋友表中的用户a数组将包含1,2,4,6,77,44等朋友的用户ID数组
我想知道这是否是一种有效的方法。如果没有,理想情况下应该为大型社区实施什么逻辑?
答案 0 :(得分:1)
不,不,不!
不要在一个数据库字段中存储多个值。它会给你带来很多问题。
你可以使用像这样的结构
friends (user_id, user_id)
表示2位朋友。
答案 1 :(得分:1)
您可能需要一个单独的多对多连接表。为此,如果用户和他们的朋友都在同一个用户表中。该表可能如下所示:
user_id - 正在完成朋友查找的用户的id,是user表中user_id字段的外键 friend_id - 与用户关联的朋友的id,也是用户表
中user_id字段的外键两个字段都有一个复合主键,确保每个user_id到friend_id组合都是唯一的。
这将是示例CREATE TABLE语句:
CREATE TABLE `friends` (
`user_id` INT(11) NOT NULL,
`friend_id` INT(11) NOT NULL,
PRIMARY KEY (`user_id`, `friend_id`)
)
ENGINE = INNODB;
示例数据可能如下所示:
INSERT INTO `friends` (`user_id`, `friend_id`)
VALUES
(1, 2), (1, 3), (1, 4), (2, 1), (2, 10), (4, 1), (4, 20);
然后说你想查找与特定用户(即登录用户)相关联的朋友的所有用户表数据。您可以像这样查询这些数据:
SELECT users.*
FROM users
INNER JOIN friends ON users.user_id = friends.friend_id
WHERE friends.user_id = [The ID of current user]