数据库历史数据

标签 database database-design relational-database

我将如何跟踪数据库的历史记录?我几乎完全将它用于统计目的。例如,查询数据库以了解我们当前拥有多少客户是很容易的,但是如果我想比较我们上个月拥有的客户数量与现在拥有的客户数量,该怎么办?

我假设我需要另一个表来跟踪这些信息,并且想知道是否有一些标准方法可以做到这一点?

我的想法是这样的:

id table_name column row_id value valid_from valid_to

其中 valid_from 是插入数据时的日期,valid_to 是在数据库中无法再找到数据的日期。

例如,我有一个名为“教师”的表,其中包含一个列状态。在状态列中,教师可以“申请”、“雇用”、“活跃”等。从一种状态到另一种状态的更改将保存在上表中,valid_to 列保存教师不再具有“状态”的日期。正在申请”,并且将为“雇用”创建一个新行。查询该表的统计数据似乎相当容易。

但我真的不知道这是否是一个好方法。这正是我想到的,而且可能是一种可怕的方法。任何帮助/建议将不胜感激!

如果重要的话,我正在使用 MySQL 和 CakePHP。

最佳答案

这会做你想要的。

您可以通过关闭旧的 id(将 valid_to 设置为日期)并使用相同的 table_name 启动另一个字段来跟踪该字段的更新columnrow_id 以及新的

另一种方法是这样的:

id entry_time table_name row_id column_name value

特定table_name row_idcolumn_name 的第一条记录是该记录的创建。后续记录可以是更新(非空 value)或删除(空 value)。

关于数据库历史数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16652722/

相关文章:

sql - PostgreSQL遇到序列化失败的条件是什么?

java - 套餐产品数量不存在

database - 预订逻辑和架构,数据库同步 : Hotels, 网球场预订系统

mysql - 为数据库中的 'Total' 字段设计

mysql - 如何获取结果集中每种类型记录的计数

sql-server - 一个用户数据库服务于多个应用程序数据库

mysql - Codeigniter JOIN 使用两个表 - 需要来自两个表的数据

mysql - 从 JIRA 数据库中提取冲刺开始和结束日期的最简单方法是什么?

mysql - mysql左连接问题

mysql - SQL音乐播放列表数据库查询设计