在这些日子里,我似乎正在许多数据库中工作,由于各种原因,我不能仅仅删除一条记录,包括稍后再可以稍后显示它们(例如,一种不再存在的产品)或仅保留历史记录。是什么
所以我的问题是如何最好地使记录过期。
我经常添加一个date_expired
列,它是datetime字段。通常,我查询date_expired = 0
或date_expired = 0 OR date_expired > NOW()
的位置,具体取决于数据将来是否将过期。与此类似,我还添加了一个字段调用expired_flag
。如果将其设置为true/1,则该记录被视为已过期。这可能是最简单的方法,尽管您只需要在每次只需要当前项目时就记住要包含expire子句即可。
我见过的另一种方法是将记录移到存档表,但是当有大量需要历史记录表的表时,这可能会变得很困惑。这也使值的检索(例如国家/地区)变得更加困难,因为您必须首先进行左联接(例如),然后再进行第二次查询以查找实际值(或使用修改后的左联接重做查询)。
我还没有看到还没有做完或者我没有完全尝试过的另一种选择是创建一个表,该表包含所有过期记录中的所有数据或某种形式的历史表。在这种情况下,检索将变得更加困难,因为您可能需要搜索一个庞大的表然后解析数据。
是否还有其他更好的解决方案或修改?
我正在使用MySQL(带有PHP),所以我不知道其他数据库是否有更好的方法来解决此问题。
最佳答案
我更喜欢使用过期日期字段方法。但是,有时有两个日期(初始日期和过期日期)很有用。因为如果数据可以过期,那么知道何时处于事件状态通常很有用,这也意味着知道何时开始存在。
关于mysql - 在数据库中使记录过期的最佳方法/选项是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/656827/