推荐阅读
我是怎么来到这里的
我坚信,在制作软件时,任何预先做的以尽量减少以后的工作都会在卡车负载中得到回报。因此,我试图确保在处理我的数据库架构和维护时,它可以保持关系完整性,同时不会过时或过于复杂。
当看到典型的删除方法 CASCADE 时,这导致了一种不寒而栗。哎呀,我目前的情况有点过头了。我想保持关系图的完整性,但我不想仅仅因为链的一部分不相关而删除每个图。因此,我选择了软删除的方式,以确保数据的完整性保持不变,而记录可以从相关性中删除。我通过向数据库中的每个sigh表添加一个“DateDeleted”字段来实现这一点。
转折点
然而,这显然开始增加太多的复杂性和工作是值得的。我在不应该去的地方加入了逻辑,并且不想在我的整个应用程序中延续这些不良做法。简而言之,我将回滚这个实现。
在查找天气时人们喜欢软删除,似乎有很多支持它。事实上,链接的“类似”帖子顶部显示了“我总是软删除”的最高投票答案。此外,那里和周围的大多数答案都包括某种“isDeleted”或“isActive”类型的方法。
新的实施理念
链接的“好文章”涵盖了我实际开始遇到的一些问题。它还提出了一种软删除的替代方法,我从最佳实践的角度发现了这种方法。建议是使用“存档数据库”,我在查看软删除时实际上已经考虑过。我决定反对它的原因是因为我之前提到的关于 CASCADE 删除的观点。我很谨慎地从数据库中删除整个图表,因为链的一部分被删除了。但是,这个图表至少可以从档案中保留下来,所以我不确定它是否真的那么糟糕。
十字路口
那么,我应该继续添加逻辑,逻辑,逻辑......逻辑吗?或者,我是否应该考虑将大部分逻辑放在一个非常复杂的图形管理类中来存储/恢复关系对象图的存档数据库?后者对我来说似乎是最佳实践。