gpt4 book ai didi

MySQL 结构::友谊

转载 作者:可可西里 更新时间:2023-11-01 06:44:17 27 4
gpt4 key购买 nike

很多人说我应该创建一个友谊表(userid , friendid)。

我的问题是:

每一段友谊不会有双重记录吗?喜欢:
125
的 friend +
512

的 friend

有什么办法可以防止这种情况

<强>| |

我应该忽略那个吗?

最佳答案

您至少可以使用两种方法:

  1. 确保 userid 始终小于 friendid
  2. 在两个方向上存储每个关系(即同时存储 a,b 和 b,a)。

第二种方法的存储成本是其两倍并且是多余的,但它确实意味着某些查询可以更简单并且性能更好。例如,考虑使用每种方法获取用户“a”和“b”的所有共同好友:

方法一:

SELECT friendid
FROM
(
SELECT friendid FROM friendships WHERE userid = 'a'
UNION
SELECT userid FROM friendships WHERE friendid = 'a'
) T1
JOIN
(
SELECT friendid FROM friendships WHERE userid = 'b'
UNION
SELECT userid FROM friendships WHERE friendid = 'b'
) T2
ON T1.friendid = T2.friendid

方法二:

SELECT T1.friendid
FROM friendships T1
JOIN friendships T2
ON T2.userid = 'b' AND T1.friendid = T2.friendid
WHERE T1.userid = 'a'

关于MySQL 结构::友谊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4004608/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com