gpt4 book ai didi

mysql - 如何设计一个用户 "likes"另一个?

转载 作者:搜寻专家 更新时间:2023-10-30 23:07:52 26 4
gpt4 key购买 nike

我想这有点像 friend ,但不需要是双向的。所以像这样:

from_user   to_user
-------------------
John Mary
Mary John
John Susan
Mary Dave

我很好奇这样做是否有任何问题,如下所示。

user1       user2      mutuality 
--------------------------------
John Mary 2
John Susan 1
Mary Dave 1

第二个似乎会有更复杂的查询和检查,但它最终不会节省空间吗?例如,如果有一天 Susan 最终爱上了 John,您会检查 user2 中的 Susan 和 user1 中的 John。如果存在,则将互相关性更新为 2。如果不存在,则插入新行 [Susan, John, 1]。类似的东西?

这样做的最佳方法是什么?

最佳答案

我会选择第一种方法。第二种方法最终不会节省足够的空间成为问题。由于每个选择(如)都是一个 Action ,因此有一个单独的记录来存储该 Action 与工作流程相匹配。约翰喜欢玛丽,添加一条记录。玛丽喜欢约翰,再添加一条记录。玛丽不再喜欢约翰,删除那条记录。这更容易维护(对我来说)。我发现把事情放在更小的颗粒部分会很简单。

在设计方面,我建议不要在likes 表中使用字符串名称,您应该有一个users 表,每个用户都有一个主键id (独特的)。这样,用户可以在不破坏关系的情况下修改名称。

表格数据看起来像这样:

Users table
id Name
1 John
2 Mary
3 Susan
4 Dave

Likes table
From To
1 2
2 1
1 3
2 4

表格将具有以下结构

users
-----
id (integer autoincrement)
name (varchar)

likes
-----
id (integer autoincrement)
fromid (integer)
toid (integer)

生成列表的 sql 看起来像这样

SELECT f.name as fromName, t.name as toName
FROM (likes JOIN users AS f ON likes.fromid = f.id)
JOIN users AS t ON likes.toid = t.id;

enter image description here

关于mysql - 如何设计一个用户 "likes"另一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24103286/

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