jer*_*oft 107 database database-design
我不认为我是唯一一个对此感到疑惑的人.您通常对数据库行为进行什么练习?您是否希望从数据库中删除记录?或者,仅使用"已删除"标志或布尔列标记记录以表示记录处于活动还是非活动状态更好?
fal*_*tro 46
这绝对取决于数据库的实际内容.如果您正在使用它来存储会话信息,那么无论如何在会话到期(或关闭)时立即擦除它,您不希望存在垃圾.因为它不能真正用于任何实际目的.
基本上,你需要问自己,我可能需要恢复这些信息吗?就像在SO上删除的问题一样,它们肯定应该被标记为"已删除",因为我们主动允许取消删除.我们还可以选择显示它以选择用户,而无需额外的工作.
如果您没有积极寻求完全恢复数据,但您仍然希望将其保留用于监控(或类似)目的.我建议你弄清楚(当然可能的话)一个聚合方案,并将其推到另一个表.这将使您的主表清除"已删除"数据,并保持您的辅助表优化以用于监视目的(或您想到的任何内容).
有关时态数据,请参阅:http://talentedmonkeys.wordpress.com/2010/05/15/temporal-data-in-a-relational-database/
WW.*_*WW. 27
使用删除标志的优点:
使用删除标志的缺点:
AND DeletedFlag = 'N'SQL中的某个地方Ade*_*ari 21
作为所有帖子的补充......
但是,如果您计划对记录进行标记,则可以考虑制作视图,以获取有效记录.这样可以避免在SQL查询中写入或忘记该标志.如果您认为这也是一个目的,您也可以考虑非活动记录的视图.
小智 10
我很高兴找到这个帖子.我也想知道人们对这个问题的看法.我已在许多系统上实施了"标记为已删除"约15年.每当用户打电话说某些内容被意外删除时,将其标记为未删除肯定要比重新创建或从备份恢复要容易得多.
我们使用postgresql和Ruby on rails看起来我们可以通过两种方式中的一种来修改rails或添加ondelete触发器,而是将pl/pgsql函数标记为已删除.我倾向于后者.
至于性能命中,有趣的是看到大表上的EXPLAIN-ANALYZE结果很少删除的项目以及许多已删除的项目.
在我发现的一段时间内使用的系统中,新用户倾向于做一些愚蠢的事情,例如意外删除事物.因此,当人们处于新职位时,他们拥有之前在该职位上的人的所有访问权限,除非没有经验.意外删除某些内容并能够快速恢复可以让所有人快速恢复工作.
但正如有人所说,有时您可能因某种原因需要返回特定的密钥,此时您需要真正删除它,然后重新创建记录(取消删除它并修改记录).
如果涉及个人数据,也存在法律问题.我认为这在很大程度上取决于您所在的位置(或数据库所在的位置)以及使用条款.
在某些情况下,人们可以要求从您的系统中删除,在这种情况下需要进行硬删除(或者至少清除所有个人信息).
如果涉及个人信息,我会在您采用策略之前咨询您的法律部门.
| 归档时间: |
|
| 查看次数: |
28081 次 |
| 最近记录: |