存储或不存储...在数据库中

时间:2011-12-15 02:59:57

标签: mysql

所以,我正在构建一个MYSQL数据库。在此数据库中,存在名为pendingArchives的表。在管理员批准存档文件之前,它仍然是“未批准”或“0”,因为它是整数字段。但是,我向你们提出的问题是,一旦获得批准,是否应该从pendingArchives表中删除记录。截至目前,我只是将approved字段设置为值为“1”,这意味着它已被批准。

那么,请让我知道,这是更一致的方法,只需将批准的值设置为1,或将记录移动到一个全新的approved表?

6 个答案:

答案 0 :(得分:1)

我会将记录移动到新表中,因为组织易于使用/读取。然后,您不必过滤掉未经批准的批准。

答案 1 :(得分:1)

与大多数MYSQL设计问题一样,这完全取决于您需要执行哪些类型的操作以及数据集的大小。将它移动到另一个表似乎是额外的开销,除非你将对需要其他索引等的已批准的操作进行其他操作。

答案 2 :(得分:1)

您可以将其作为历史记录表,不删除任何记录,也可以将其重命名为archiveStatus

或者您可以创建一个名为archiveHistory的新表并将其移动到那里。

对于这两种情况,请确保批准日期有一个日期列,并且只要status列(针对已批准和未批准的值)被修改,就可以准备好修改它。

[edit / additional]

根据我的经验,跟踪活动是我以前工作过的DBA最喜欢的活动之一。对于几乎总是质疑报告的数据仓库,其他VLDB和用户,我们希望显示此类证据表明已采取行动,然后进行确认,然后备份或进一步向用户实施。使用安全表,其中只有作业或SSIS包运行可以修改,加载数据,纠正数据,插入数据,以及所有其他更改,如数据库备份开始和结束时间,执行结果,谁运行什么时候和从哪里...有办法跟踪事情总是好的。除非情况需要删除(例如错误插入导致重复)但仍然记录活动,否则请避免删除。在这种情况下,只要纠正了纠正的步骤并且总有确凿的证据支持它,就可以承认错误。另一件事......对于DBA团队和管理层,您甚至可以通过正确设置的跟踪表来生成报告。

答案 3 :(得分:1)

通常的做法是不删除此类记录,而是设置其IsActive / IsValid /等。如果从其他表中引用此类记录,或者您希望稍后在历史分析中需要它们,则这一点尤其重要。

答案 4 :(得分:0)

这实际上取决于您的数据保留/审核要求。两者都有很多优点/缺点/意见 - 我建议搜索谷歌“软删除与硬删除”

答案 5 :(得分:0)

这是一个有趣的问题。最终,答案是“它取决于”。以下是一些需要考虑的事项:

  1. 您多久会选择一次批准的记录与未批准的记录?如果你比另一个更经常地选择一个,这可能意味着分离数据是值得的。

  2. 数据如何增长?据推测,批准的记录将随着时间的推移而增长,未经批准的记录将更多地发挥用户的作用。如果是这样,那意味着随着时间的推移,批准的记录数量将开始使未经批准的记录相形见绌。这也是为了分离数据。

  3. 批准与未批准的记录允许哪些操作?例如,您是否只能删除/更新未批准的记录?如果是这样,那也是为了分离记录,从那以后你可以限制对特定表的写锁,甚至使用不同的DB权限来强制执行这种约束。

  4. 您是否需要在同一结果集中显示未批准和已批准的记录?这可能会使他们保持在一起。

  5. 希望这有用。