web 站内私信该如何设计数据库表

2020-04-10 17:44:24 +08:00
 zzkde

现在的想法是 两张表 一张会话表,一张消息表。发送消息时查看是否有对应的会话,没有就创建一个会话。

dialog
id
user1_id	// 保证用户 user1_id > user2_id,这样方便查找两个用户的会话
user2_id
last_time  // 上一个消息发送时间
last_message // 消息内容
last_username // 消息发送者

message
id
dialog_id
from_user
to_user
content
created_date
has_read

查看一个用户的所有会话的最近消息

select last_time, last_message, last_username from dialog where user1_id = userId or uesr2_id = userId order by last_time desc;

查看单独一个用户和另外一个用户的消息

select * from message where dialog_id = id;

但是这样做不知道如何设计用户删除会话或者会话中的某一条消息,如果直接删除了之后,另外一个用户的消息记录也没有了

1448 次点击
所在节点    数据库
4 条回复
zpfhbyx
2020-04-10 18:00:54 +08:00
weibo 的推拉机制
lhx2008
2020-04-10 18:03:43 +08:00
消息是消息,不包含用户。用户再关联上消息,然后设置几个标志位。
jinsongzhao
2020-04-10 18:04:35 +08:00
标记为删除状态,不做实际删除
zczy
2020-04-10 22:22:49 +08:00
消息存一份在消息表,再存一份在收件箱,发件箱可以不,这样收件人发件人删除就互不干扰了
两个都删除是消息撤回

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/661246

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX