为了保持系统的一致性我可以考虑2删除策略:删除实体战略
关系中的所有实体的级联删除;
模拟删除(即,没有真正从数据库中删除,但例如,实体中的字段
deleted
的值为true
并且它影响显示逻辑)。
我喜欢第二种方法,但我不知道如何正确实施它。
例如,假设我们开发一个简单的博客(用户,文章,评论和其他平常的东西)。我们来看User
实体(和一个记者表USER
)。如果我们删除某个用户,那么他的deleted
字段将具有值true
。所有用户的评论都会保留在原来的位置,每位读者都会知道某个评论的作者是谁。
这一切看起来不错,但我应该怎么做,如果一个新用户(谁试图进行登记)会删除一些用户已经指定相同的登录/电子邮件地址(其它独特的领域)?理论上,这个独特的字段值已经是免费的并且可以被采用。但是,如果有一天我会决定删除删除的用户,该怎么办?
与这种情况有关的最佳实践是什么?
我们软删除一切和夜间存档了,那么很难从生产数据库中删除任何软删除他们是在一个月以后老了。可能考虑从档案中删除超过六个月的软删除。这取决于你的需求和对他们有意义的事情。 – 2010-07-28 08:44:47