在很多数据库中我似乎都在工作这些天我不能仅仅因为多种原因删除记录,包括以后可以稍后显示它们(比如说不再存在的产品)或只保留历史记录什么是.
所以我的问题是如何最好地使记录到期.
我经常添加一个date_expired
datetime字段列.一般来说,我查询一方位置date_expired = 0
或date_expired = 0 OR date_expired > NOW()
数据是否会在未来的过期根据.与此类似,我还添加了一个字段调用expired_flag
.当此值设置为true/1时,记录将被视为已过期.这可能是最简单的方法,尽管您需要记住在任何时候只需要当前项目时包含expire子句.
我看到的另一种方法是将记录移动到存档表,但是当存在大量需要历史表的表时,这会非常混乱.它还使得值(例如国家/地区)的检索更加困难,因为您必须首先执行左连接(例如),然后执行第二次查询以查找实际值(或使用修改后的左连接重做查询).
另一个选项,我没有看到过,也没有完全尝试过我自己就是有一个表,其中包含来自所有过期记录的所有数据或某种形式的数据 - 某种历史表.在这种情况下,检索将更加困难,因为您可能需要搜索大型表然后解析数据.
是否有更好的其他解决方案或修改?
我正在使用MySQL(使用PHP),所以我不知道其他数据库是否有更好的方法来处理这个问题.