Mysql 删除父记录并在注释表中保留子记录

Mysql 删除父记录并在注释表中保留子记录,mysql,database,Mysql,Database,我有一个注释表,其中包含以下字段: 注释id 父注释id 邮政id 用户id 议论 可见度 对于我正在建设的网站,我希望用户能够删除他们的帐户。这样做后,被删除用户的任何评论也将被删除 我关心的是,如果属于被删除用户的评论有子评论怎么办?他们会有一个不存在的家长,我不觉得我应该自动删除这些评论,因为它们属于制作它们的用户,但它们确实变得无关紧要,因为它们是对不再存在的评论的回复 我最初的想法是保留删除的评论记录,但删除用户id和评论。然后,所有子注释的可见性将更改为隐藏,直到这些注释的用户选择删

我有一个注释表,其中包含以下字段:

注释id 父注释id 邮政id 用户id 议论 可见度 对于我正在建设的网站,我希望用户能够删除他们的帐户。这样做后,被删除用户的任何评论也将被删除

我关心的是,如果属于被删除用户的评论有子评论怎么办?他们会有一个不存在的家长,我不觉得我应该自动删除这些评论,因为它们属于制作它们的用户,但它们确实变得无关紧要,因为它们是对不再存在的评论的回复

我最初的想法是保留删除的评论记录,但删除用户id和评论。然后,所有子注释的可见性将更改为隐藏,直到这些注释的用户选择删除它们


这是一个好方法吗?有没有更好的方法来处理这种情况?我问的是数据库设计和概念。

这完全取决于您想要遵守的政策和评论本身的敏感性。 除了你的方法,你还可以考虑以下内容:

透明的: 删除所有注释以及子注释,因为如果没有父注释,它们就没有意义。制作它们的用户不会知道他们评论了什么

这样可以保持数据库干净,避免孤立的注释

幻影: 用户的叶评论将被删除。现在,带有子注释的注释将从用户帐户断开链接,并分配给虚拟用户


仍处于活动状态的用户可以看到他们所有的评论,这很好。

我建议保留这些儿童评论,只要发布这些评论的用户或其对话所属的用户仍然存在。如果这两个用户都被删除,那么您可以删除它们


此外,您可以添加标记用户为已删除的标志,而不是从数据库中删除用户。令人惊讶的是,这样的事情需要被撤销多少次。然后你可以有一个后台作业,删除X个月以上的用户。

我认为最好你也保留被删除用户的评论,但在前端显示该用户是由于XX而被删除的。但是在删除用户时,您可以有一个复选框选项-删除用户评论-这将删除所有评论及其回复,因为如果您不希望在您的站点上再次显示子评论,那么将它们存储在数据库中将是一种浪费。是的,我喜欢保留评论的位置,但显示评论实际上已被删除的想法。。。考虑到它有任何子评论,或者它可能会被完全删除。我喜欢这种方法。谢谢你关于延长用户帐户使用期限的建议,这是个不错的主意。我想我会采用第二种方法,但我可能不会使用虚拟用户。