mysql - 数据库设计私信系统(关于删除)

标签 mysql

我有以下数据库设计(MySQL):

id|message_id|reply_id|user_id_from|user_id_to|title|message|sent_date|read_date|type

id INT(11) Auto-increment 
message_id INT(11) 
reply_id INT(11)
user_id_from INT(11)
user_id_to INT(11)
title TEXT
message  TEXT
sent_date DATETIME
read_date DATETIME
type VARCHA(255)

现在我遇到了如何最好地软删除邮件的“问题”。如果(对话中的)用户 1 删除了他/她的收件箱中的消息,则该消息不应在用户 2 的收件箱中删除。

我应该如何最好地解决这个问题?如果用户 1 删除了该消息,我是否必须在存储位置列,如果用户 2 删除该消息,我是否必须在第二列存储该消息?

最佳答案

我会使用两个datetime列,如下所示:

user_from_deleted_on DATETIME
user_to_deleted_on DATETIME

如果该列为NULL,则该消息尚未被该用户删除。这样,您可以单独记录每个用户的删除操作,并且还可以对这些事件发生的时间进行审计跟踪。您还可以通过将该列设置回 NULL 来取消删除消息。

关于mysql - 数据库设计私信系统(关于删除),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19812579/

相关文章:

mysql - 带有左连接子查询的sql

mysql - 我正在使用 2 个查询,有什么方法可以使它成为单个查询

php - MySQL 请求返​​回 null Controller PHP

php 和 mysql 查询 - 无法从 MySQL 返回我需要的变量

MySQL LEFT JOIN 并且在连接表中没有满意的匹配

mysql & INTO OUTFILE - 转义或替换数据中的新行

Mysql 中等 int 与 int 性能

mysql - 多个表上的 sequelize 查询中的竞争条件

PHP 不工作,数据库不更新

mySQL 数据库的 PHP XML 输出