Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该删除我的MySQL记录,还是我应该有一个标志";“u已删除”吗;?_Mysql_Sql_Database Design - Fatal编程技术网

我应该删除我的MySQL记录,还是我应该有一个标志";“u已删除”吗;?

我应该删除我的MySQL记录,还是我应该有一个标志";“u已删除”吗;?,mysql,sql,database-design,Mysql,Sql,Database Design,出于某种原因,有人告诉我永远不要删除任何MySQL记录。只需将其标记为已删除 例如,我正在建立一个“关注”的社交网络,比如Twitter +-------------+------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+------------+------+-----+--

出于某种原因,有人告诉我永远不要删除任何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    |                |
+-------------+------------+------+-----+---------+----------------+
用户1跟随用户2


因此,如果一个用户停止跟踪某人,我是否应该删除此记录?或者我应该为“是否已删除”创建一个列?

我一直喜欢创建一个已删除的字段,并使用它来代替删除记录。如果将数据保留在数据库中,则恢复或添加该数据要容易得多

你可能认为你再也不需要这些数据了,但这是可能的。即使是像跟踪取消订阅之类的简单事情。

我也不会说,“永远不要删除任何MySQL记录”。视情况而定。如果要跟踪用户交互,可以使用delete标志。您甚至可以创建一个单独的日志记录表,用适当的用户id和时间戳跟踪每个操作,如“follow”和“unfollow”,这最终会为您提供更多信息


这取决于您,取决于您要存储的数据。请考虑用户的隐私。如果他们希望明确删除数据,那么就这样做。

这是一个称为“软删除”的概念。谷歌搜索该术语以查找更多信息。但是,使用标志进行标记只是一种选择——您实际上也可以执行删除操作,但有一个触发器将副本存储在历史记录表中。这样,您就不必更新所有select函数来专门过滤已删除的记录。此外,您的表上的负载也不会像您必须扫描表中散落的其他记录那样大。

概括“您永远不应该删除记录”这一更大的概念可能会(也应该)结束这个问题,因为这不是建设性的,但您给出了一个特定的场景:

用户1跟随用户2

因此,如果一个用户停止跟踪某人,我是否应该删除此记录? 还是应该为已删除的内容创建列

在您的情况下,答案取决于在取消跟踪之后,您是否再次需要知道用户1跟随了用户2。有些人编造了一些可能是愚蠢的例子,可能是这样的:

  • 如果希望将用户1在选择关注用户2时看到的文本从“关注用户2”更改为“再次关注用户2?真的吗?你没有吸取教训吗?”
  • 如果您想向用户2显示一张他们随时间变化的追随者人数(或合计人数)的图表

如果您不需要依赖于用户相互跟踪的过去状态的功能,那么删除记录是安全的。无需承担软删除的复杂性。

视情况而定。想想你自己;这张唱片还会被需要吗?如果没有,请删除它。如果你认为它可以,保持它。这取决于你是否可能需要删除的记录来恢复它们,或者作为诉讼中的证据等等。如果你这样做的话,可以考虑做一个<代码>删除> < /代码>,而不是<代码> iSyelys列。有用的信息。