我应该删除我的 MySQL 记录,还是应该有一个标志“is_deleted”?

TIM*_*MEX 2 mysql sql database-design

出于某种原因,有人告诉我永远不要删除任何 MySQL 记录。只需将其标记为已删除即可。

例如,我正在构建一个“关注”社交网络,例如 Twitter。

+-------------+------------+------+-----+---------+----------------+
| Field       | Type       | Null | Key | Default | Extra          |
+-------------+------------+------+-----+---------+----------------+
| id          | int(11)    | NO   | PRI | NULL    | auto_increment |
| user_id     | int(11)    | NO   |     | NULL    |                |
| to_user_id  | int(11)    | NO   |     | NULL    |                |
+-------------+------------+------+-----+---------+----------------+
Run Code Online (Sandbox Code Playgroud)

用户 1 关注用户 2...

那么,如果一个用户停止关注某人,我应该删除这条记录吗?或者我应该为 is_deleted 创建一个列?

Jak*_*sel 5

这是一个称为“软删除”的概念。谷歌搜索这个词可以找到更多。但用标志标记只是一种选择 - 您也可以实际执行删除,但有一个触发器将副本存储在历史表中。这样,您就不必更新所有选择的函数来专门过滤掉已删除的记录。此外,您的表上不会有太多的负载,因为您必须扫描散落在表中的其他记录。