首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该删除我的MySQL记录,或者我应该有一个"is_deleted“标志吗?

我应该删除我的MySQL记录,或者我应该有一个"is_deleted“标志吗?
EN

Stack Overflow用户
提问于 2011-11-26 07:30:27
回答 4查看 1.1K关注 0票数 2

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

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

代码语言:javascript
复制
+-------------+------------+------+-----+---------+----------------+
| 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    |                |
+-------------+------------+------+-----+---------+----------------+

用户1跟随用户2...

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

EN

回答 4

Stack Overflow用户

发布于 2011-11-26 07:35:05

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

票数 4
EN

Stack Overflow用户

发布于 2011-11-26 08:20:41

概括“你永远不应该删除记录”这一更大的概念可能(也应该)结束这个问题,因为它没有建设性,但你已经给出了一个具体的场景:

用户%1关注用户% 2...

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

在你的案例中,答案取决于在取消关注之后,你是否需要再次知道用户1关注了用户2。一些虚构的、可能很愚蠢的例子可能是这样的:

  • 如果希望将用户1在选择关注用户2时看到的文本从“关注用户2”更改为“再次关注用户2?真的吗?你没有吸取教训吗?”
  • 如果您想要向用户2显示他们在一段时间内拥有(或总计多少)

追随者的图表

如果您不需要依赖于用户相互关注的过去状态的功能,那么删除记录是安全的。当you ain't gonna need it时,不需要承担软删除的复杂性。

票数 1
EN

Stack Overflow用户

发布于 2011-11-26 07:34:43

我不会说“永远不要删除任何MySQL记录”。那得看情况。如果你想跟踪用户交互,你可以通过使用删除标志来实现。您甚至可以创建一个单独的日志表,它使用适当的用户id和时间戳跟踪每个操作,如“跟随”和“取消跟随”,这将在最后为您提供更多信息。

这取决于您,取决于您想要存储哪些数据。请考虑用户的隐私。如果他们想显式删除他们的数据,那么就这样做。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8275102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档