我正在设计一个数据库来存储产品信息,并且我想存储几个月的历史(价格)数据以供将来参考。 但是,我想在设定的时间之后,以最小的努力开始覆盖初始条目,以查找初始条目。 有谁对如何解决这个问题有个好主意? 我最初的设计是要有一个名为历史数据的表,每天,它都会提取活动数据并将其存储到带有时间戳的历史数据库中。 有谁有更好的主意吗? 还是可以看到我的问题在哪里?

#1楼

这个话题比最初看起来要广泛得多。 马丁·福勒(Martin Fowler)对“随时间变化的事物”有一个很好的叙述 。

#2楼

首先,我想评论一下您提出的解决方案。 当然,最弱的部分是,您的间隔之间实际上可能存在多个变化。 这意味着该记录在一天中被更改了三次,但是您只存档了最后的更改。

可能有更好的解决方案,但它必须是事件驱动的。 如果您拥有支持事件或触发器的数据库服务器(例如MS SQL),则应编写触发器代码以在历史表中创建条目。 如果您的服务器不支持触发器,则可以将归档代码添加到您的应用程序中(在“保存”操作期间)。

#3楼

您可以在价格表上放置触发器。 这样,您可以在每次更新或删除事件时将旧价格归档到另一个表中。

#4楼

IMO如果您所需的历史数据是一天结束数据的快照,那么您的方法似乎是正确的-过去,我对隔夜作业(SP)使用了类似的方法,该任务可以获取当天的新数据,对其进行时间戳记,然后使用“删除所有时间戳

如果您需要跟踪所有历史记录更改,则需要查看触发器。

#5楼

我想在设定的时间后,以最小的努力开始覆盖初始条目,以查找初始条目

正如其他人所建议的,我们使用触发器将数据存储在存档表中。 我们的存档表具有AuditDate的附加列,并存储“已删除”数据-即数据的先前版本。 当前数据仅存储在实际表中。

我们根据“删除三个月以上的所有存档数据,其中存在至少一个小于三个月的存档记录;删除六个月以上的所有存档数据”的行,对存档表进行修剪。

因此,如果最近3个月内没有价格变化,您仍会拥有3到6个月前的价格变化记录。

(询问您是否需要使用self-referencing-join的示例来执行删除操作,或使用触发器将更改存储在Archive表中)

java删除sql表中记录,您将如何维护SQL表中的历史记录?相关推荐

  1. 在 .NET Core 中如何让 Entity Framework Core 在日志中记录由 LINQ 生成的SQL语句

    在开发中,我们想在调试中查看EF Core执行的sql语句,可以使用SQL Studio Manager Tools工具,另一种方式是使用EF Core提供的日志.在ASP.NET Core使用Ent ...

  2. java删除指定索引元素_将对象/元素添加到列表中的Java指定索引处

    java删除指定索引元素 We have to create a List and add objects/elements to the List and given indexes in java ...

  3. mysql 时间盲注语句,sql注入学习记录(5)-基于时间延迟的SQL盲注

    上次说到了sql注入中的基于报错盲注的基本的方法. 今天说一说报错盲注 基于时间延时的SQL盲注 使用时间延时注入的场景: 1.不能使用union select 联合查询方式注入 2.有些网站没有回显 ...

  4. 中超风云2服务器维护,时隔三年“中超”IP强势回归《中超风云2》手游现已开启预约...

    本赛季中超联赛已经接近尾声,如何度过联赛的"空窗期"已经成为困扰球迷的新问题.近日胡莱游戏发布的一则消息打破了球迷们的疑虑,经典IP<中超风云>的进阶之作<中超风 ...

  5. 统计sql server数据库中所有表的记录数

    因工作需要查看库里每个表中的记录数,逐表查询太辛苦,故写一过程处理如下: --基本思路为:到系统表查出表名:然后逐表构造sql语句,查询记录数并插入临时表 --创建临时表,保存数据    create ...

  6. SQL server——sql命令创建、修改、删除表之记录

    目录 学习内容.sql命令创建.修改.删除表 创建表 指定所属文件组 修改表 增加一列number 更改列属性 删除某一列 重命名表 删除表 分区表 创建表 添加文件组 分别为其添加数据文件 创建分区 ...

  7. MySQL多表数据记录查询详解

    在实际应用中,经常需要实现在一个查询语句中显示多张表的数据,这就是所谓的多表数据记录连接查询,简称来年将诶查询. 在具体实现连接查询操作时,首先将两个或两个以上的表按照某个条件连接起来,然后再查询到所 ...

  8. mysql 查询多个记录查询_MySQL多表数据记录查询详解

    在实际应用中,经常需要实现在一个查询语句中显示多张表的数据,这就是所谓的多表数据记录连接查询,简称来年将诶查询. 在具体实现连接查询操作时,首先将两个或两个以上的表按照某个条件连接起来,然后再查询到所 ...

  9. 第七章-单表数据记录查询

    7.2 简单数据记录查询 7.2.1 查询所有字段 select *|字段名 from 表名: 7.2.2 查询指定字段 select 字段名 from 表名: 7.2.3查询指定记录 select ...

最新文章

  1. 程序员在囧途之我是一头牛
  2. 4位并行加载寄存器设计
  3. 以编程方式访问Java基本类型的大小
  4. python之FTP程序(支持多用户在线)
  5. Eureka的自我保护模式
  6. 【java毕业设计】基于javaEE+原生Servlet+MySql的酒店管理系统设计与实现(毕业论文+程序源码)——酒店管理系统
  7. Java 度分秒转经纬度,经纬度转度分秒,度分转经纬度,经纬度转度分
  8. 计算机大作业论文意义,重庆大学数理统计大作业——论文
  9. div 垂直居中的六种方法
  10. alter user mysql_MySQL使用ALTER USER修改密码
  11. linux双系统无u盘安装教程视频教程,U盘安装Windows和Ubuntu 15.04双系统图解教程
  12. java中BOM是什么_Java-BOM与DOM对象
  13. 程序员的键盘 ikbc poker3 使用心得
  14. 百度地图marker标注上如何加上数字
  15. ubuntu20编译Gmssl时,“version OPENSSL_1_1_0d not defined”问题的较好解决办法
  16. Microsoft sql server 获取系统当前日期(时间)
  17. 老男孩mysql运维dba实战21部完整版_老男孩Mysql DBA高级运维系列课程(16部)
  18. html5课程总结500字,考试后的反思500字(精选10篇)
  19. 设置PSPad调用devcpp中的mingw Gcc进行编译;另附PSPad中文版一个BUG的解决方法
  20. mt7620a上带机量的提高(一)

热门文章

  1. Android出现:java.lang.NoClassDefFoundError: android/os/PersistableBundle
  2. Django-(分页器,中间介)
  3. JDK1.8与spring3.x的不兼容
  4. 覆盖与隐藏的区别 (一个列子)
  5. C#取得指定路径下所有目录及文件名称(可递归)
  6. [转载] python isinstance()方法的使用
  7. [转载] json字符串转list_Python入门进阶教程JSON操作
  8. [转载] python程序所需的图片通过base64编码成字符串放在代码中
  9. [转载] real和imag在python_Python numpy.imag() 使用实例
  10. tensorflow 模型权重导出