gpt4 book ai didi

mysql - 如何在 MySQL 中设计消息/评论表?

转载 作者:可可西里 更新时间:2023-11-01 08:37:43 25 4
gpt4 key购买 nike

我正在为社交网站在 MySQL 中设计一个消息/评论表。我有一个消息传递系统,其中参与的两个用户(只有两个且不超过两个)将具有单个/唯一线程。因此,每当一个用户向另一个用户发送消息时,它将检查两个用户是否具有唯一线程,如果没有,则它将为两个用户创建唯一线程。

create table comment_threads (
thread_id int (PK),
user_id_1 int,
user_id_2 int,
created datetime
);

create table comments (
comment_id int (PK),
thread_id int (FK),
comment text,
created datetime
);

每当一个用户每次向另一个用户发送消息时,我都必须检查两个参与用户是否都有以前的线程,所以我必须查询数据库(QUERY 1)。如果没有任何线程可在 comment_thread (QUERY 2) 中创建线程,则再次执行。然后再次在评论表(QUERY 3)中发表评论。所以我必须查询两三次消息。

问题:

  1. 上表是解决我的问题的正确方法还是需要更正?
  2. 还有其他更好的方法吗?

最佳答案

你真的不需要有 2 个表.. 1 个表应该没问题:

create table comments (
comment_id int (PK),
parent_id int,
user_id_1 int,
user_id_2 int,
comment text,
created datetime
);

对于新话题,将parent_id设置为0。对于以后的评论,您可以将parent_id设置为第一条评论的ID。

通过这种方式,您还可以进行多级线程对话,并且可以轻松执行“我已发布的评论”之类的操作。

根据 Itay 的回答,您应该使用一些缓存机制来提高性能。

关于mysql - 如何在 MySQL 中设计消息/评论表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6178888/

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