用于在人与人之间存储聊天消息的数据库

Har*_*M V 18 mysql database database-design database-schema

我正在尝试构建一个消息/聊天系统.它可以按时间顺序存储两个人之间的对话.此外,如果用户A删除了对话,则用户B仍然应该访问该对话,直到他希望删除它们为止.

  1. 收件箱 - 用户从各个用户收到的所有邮件都将显示该特定帖子的最新消息.

  2. 会话屏幕 - 用户A和用户B之间会话的时间顺序

这是我提出的数据库的基本结构.我应该在数据库中存储两次消息吗?

  1. ID
  2. to_id
  3. from_id
  4. 信息
  5. 时间戳

Tim*_*yce 8

我会使用查找表来存储有权查看该消息的消息

table->message                   |    table->messageUsers
id->0, message->'hi', user_id->1      user_id->1, message_id->0
                                      user_id->2, message_id->0
Run Code Online (Sandbox Code Playgroud)

这样,如果用户删除他们的消息,他们实际上只是删除他们与消息的关系而不是消息本身.你只需从messageUsers表中删除它们.或将活动字段设置为1或0.