所以我要将多个用户之间人为的去关联,比如用户 A 关联了 B ,A 和 B 互为分身;用户 B 再关联了 C ,B 和 C 互为 分身,C 和 A 也互为分身,因为有中间人 B ,以此类推,中间人的层级不限,这种用推荐使用什么算法实现呢?
我自己想到的是多存数据将这种层级平铺:
当用户 A 直接关联用户 B 时,我们在 associations 表中插入两条记录:
associations 表结构:user_id 关联用户 ID ,associated_user_id:被关联用户 ID ,is_direct:是否是直接关联
INSERT INTO associations (user_id, associated_user_id, is_direct) VALUES (A 的用户 ID, B 的用户 ID, TRUE);
INSERT INTO associations (user_id, associated_user_id, is_direct) VALUES (B 的用户 ID, A 的用户 ID, TRUE);
当用户 B 再直接关联用户 C 时,不仅插入 B 和 C 之间的直接关联记录,还插入 A 和 C 之间的间接关联记录:
INSERT INTO associations (user_id, associated_user_id, is_direct) VALUES (B 的用户 ID, C 的用户 ID, TRUE);
INSERT INTO associations (user_id, associated_user_id, is_direct) VALUES (C 的用户 ID, B 的用户 ID, TRUE);
INSERT INTO associations (user_id, associated_user_id, is_direct) VALUES (A 的用户 ID, C 的用户 ID, FALSE);
INSERT INTO associations (user_id, associated_user_id, is_direct) VALUES (C 的用户 ID, A 的用户 ID, FALSE);
需要用到的场景有:
取消关联某两个用户之间的关联
查询给定用户的所有分身