2010-11-27 70 views
2

我正在建立一个网站,让人们创造词汇课。创建课程时,会创建引用课程的新闻项目。当另一个用户练习课程时,用户还会将练习结果和练习结果一起存储。删除数据或只是将其标记为已删除?

我的问题是当用户决定删除课程时该怎么做?

我考虑的选项包括:

  • 其实从 数据库中删除的教训,并删除所有 引用新闻,实践 结果等
  • 只是将其标记为删除, 排除来自参考 新闻项目,结果等的链接

您的想法是什么? ala Facebook应该不会删除数据?应该一起避免参考吗?

顺便说一下,我使用Google App Engine(python/datastore)。据我所知,当被引用的对象被删除时,db.ReferenceProperty没有被设置为None?

谢谢!

回答

1

如果需要审计数据更改,将数据标记为已删除(又名“软删除”)会极大地帮助您记录执行删除操作的用户以及发生删除操作的时间。它还允许数据非常容易被“删除”。

话虽如此,没有理由阻止“硬删除”(其中数据实际上被删除)作为管理功能来帮助整理错误。

0

将数据标记为“已删除”是最简单的。如果您目前没有使用它,这将使您的数据库中的所有内容都非常整洁,并且可以轻松添加新功能。另一方面,如果您正在向用户展示他们的“词汇点”来自哪里,或者他们完成了多少课程,那么对软删除项目的引用可能是必需的。

我会从第一个开始,如果需要,稍后再进行更改。原因如下:

  • 如果您未使用软删除,请假定它们将无法以未来请求实际需要的方式工作。无论如何,你将不得不重写它们。
  • 如果您正在使用它们,请假定没有人使用使用它们的功能。现在你已经做了很多工作,并将自己与维护一些没有人关心的事情联系在一起。
  • 如果您创建它们,您会发现自己正在创建一个使用它们的功能。见上面。
  • 如果您不创建它们,那么一旦您对系统用户真正需要的知识有了更好的了解,您可以随时创建它们。

不是创建软删除会为您提供更多的选择。 Options have value. Options expire. Never commit early unless you know why.