数据库:删除还是不删除记录

20 浏览
0 Comments

数据库:删除还是不删除记录

我认为我不是唯一一个对此感到好奇的人。关于数据库行为,你通常会怎样实践?你更喜欢从数据库中物理删除一条记录吗?还是通过在记录上标记\"删除\"标志或布尔列来表示记录是活动的还是非活动的更好?

0
0 Comments

问题出现的原因:

- 当需要删除记录时,可以考虑将记录标记为非活动状态,而不是直接删除。这样可以避免在SQL查询中编写或忘记标记。

解决方法:

- 创建一个视图,用于显示活动记录。这样可以避免在SQL查询中编写或忘记标记。

- 可以考虑创建一个视图,用于显示非活动记录,如果认为这也有一定的用途。

代码示例:

CREATE VIEW active_records AS

SELECT * FROM records WHERE active = true;

CREATE VIEW inactive_records AS

SELECT * FROM records WHERE active = false;

以上是关于是否删除数据库记录的讨论,如果需要删除,请考虑将记录标记为非活动状态并创建相应的视图。

0
0 Comments

使用删除标志的优点:

1. 如果需要,可以随时恢复数据,

2. 删除操作(更新标志)可能比真正删除更快

使用删除标志的缺点:

1. 在SQL语句中很容易忽略AND DeletedFlag = 'N'

2. 在所有垃圾数据中查找感兴趣的行速度较慢

3. 最终,您可能还是希望真正删除它(假设您的系统成功。当该记录在创建后的4分钟内被“删除”,且记录已经存在10年时会怎样)

4. 它可能使使用自然键变得不可能。您可能有一个或多个带有自然键的已删除行,以及一个希望使用相同自然键的真实行

5. 可能存在法律/合规原因,要求您实际删除数据。

问题的原因:

对于数据库中的记录,是否应该使用删除标志进行逻辑删除而不是真正删除。

解决方法:

在决定是否使用删除标志时,需要考虑使用删除标志的优点和缺点,以及可能的法律和合规要求。另外,在使用删除标志时,需要确保在相应的SQL语句中包含正确的逻辑删除条件AND DeletedFlag = 'N',以免出现遗漏。最终,根据具体情况和需求,决定是否真正删除数据。

0
0 Comments

数据库:删除还是保留记录的问题

当然取决于数据库中的实际内容。如果您正在使用它来存储会话信息,那么当会话过期(或关闭)时立即清除它,您不希望垃圾留在那里。因为它不能再被用于任何实际目的。

基本上,你需要问自己,我可能需要恢复这些信息吗?就像 SO 上的已删除问题一样,它们绝对应该被标记为“已删除”,因为我们正在积极允许取消删除。我们还有选择将其显示给某些用户,而无需做太多额外的工作。

如果您不主动寻求完全恢复数据,但仍希望保留它以进行监控(或类似)目的。我建议您找出(在可能的范围内)一个聚合方案,并将其分配到另一个表中。这将使您的主要表中保持“已删除”数据的清洁,同时使您的辅助表针对监控目的(或您设想的其他目的)进行优化。

对于时间数据,请参见:http://talentedmonkeys.wordpress.com/2010/05/15/temporal-data-in-a-relational-database/

0