在 MySQL 中存储 table 行的 changes/versions?
Storing changes/versions of a table row in MySQL?
我希望能够查看并查询 PHP 对 table 行的更改,以便我可以查看历史记录。
例如,如果有人更改了产品名称的标题,我可以看到不同的版本以及更改时间。
解决此问题的最佳方法是什么,MySQL 是否有特殊功能来处理此问题,或者是否需要为历史更改创建一个 table,其中日期字段更改之前在特定领域之后?
在一个数据仓库中一般有2种方法:
- 创建一个缓慢移动的维度
- 按照上面的建议创建审计Table
1) 缓慢移动或缓慢变化的维度
这些非常适合在给定时间跟踪大量更改 - 1 个或多个值可能同时更改 - 这将所有更改和未更改的数据存储在新行中 - 由时间戳标识。
不太清楚具体的数据发生了哪些变化。
擅长显示股票当前位置等
例如,如果您的产品 table 当前包含:
PRODUCT_ID
PRODUCT_NAME
PRODUCT_COST
您可以添加其他字段来跟踪更改,例如
VALID_FROM
VALID_TO
添加产品时 VALID_FROM 将是添加的日期时间,VALID_TO 是日期,例如 31DEC3000... 请注意记录在更改之前始终有效。
产品更新时:
将 VALID_TO 为 31DEC3000 的旧产品记录更改为当前 DATETIME
和
添加一条新记录,VALID_FROM 是当前日期时间...VALID_TO 将是您决定的未来日期时间。
任何时候你查询你的数据你需要知道什么时候你希望数据是 'As Of' 这样你就可以查询类似 :
where AS_OF_DATETIME is between (VALID_FROM and VALID_TO)
2) 审核Table 方法
审计 table 存储单个变量更改,通常由一组标准列组成。
这非常适合了解哪些特定数据发生了变化。
不太擅长显示股票等的当前位置
TABLE /* Table the Changes were made */
ID /* ID or key to the data in the table */
VARIABLE /* The name of the variable that changed */
DATETIME /* Date and Time of the Change */
BEFORE /* The Value of the variable before the Change */
AFTER /* The Value of the Variable after the change */
USER /* Who made the change */
PROCESS /* By what process the change was made */
我希望能够查看并查询 PHP 对 table 行的更改,以便我可以查看历史记录。
例如,如果有人更改了产品名称的标题,我可以看到不同的版本以及更改时间。
解决此问题的最佳方法是什么,MySQL 是否有特殊功能来处理此问题,或者是否需要为历史更改创建一个 table,其中日期字段更改之前在特定领域之后?
在一个数据仓库中一般有2种方法:
- 创建一个缓慢移动的维度
- 按照上面的建议创建审计Table
1) 缓慢移动或缓慢变化的维度
这些非常适合在给定时间跟踪大量更改 - 1 个或多个值可能同时更改 - 这将所有更改和未更改的数据存储在新行中 - 由时间戳标识。
不太清楚具体的数据发生了哪些变化。 擅长显示股票当前位置等
例如,如果您的产品 table 当前包含:
PRODUCT_ID
PRODUCT_NAME
PRODUCT_COST
您可以添加其他字段来跟踪更改,例如
VALID_FROM
VALID_TO
添加产品时 VALID_FROM 将是添加的日期时间,VALID_TO 是日期,例如 31DEC3000... 请注意记录在更改之前始终有效。
产品更新时: 将 VALID_TO 为 31DEC3000 的旧产品记录更改为当前 DATETIME 和 添加一条新记录,VALID_FROM 是当前日期时间...VALID_TO 将是您决定的未来日期时间。
任何时候你查询你的数据你需要知道什么时候你希望数据是 'As Of' 这样你就可以查询类似 :
where AS_OF_DATETIME is between (VALID_FROM and VALID_TO)
2) 审核Table 方法
审计 table 存储单个变量更改,通常由一组标准列组成。
这非常适合了解哪些特定数据发生了变化。 不太擅长显示股票等的当前位置
TABLE /* Table the Changes were made */
ID /* ID or key to the data in the table */
VARIABLE /* The name of the variable that changed */
DATETIME /* Date and Time of the Change */
BEFORE /* The Value of the variable before the Change */
AFTER /* The Value of the Variable after the change */
USER /* Who made the change */
PROCESS /* By what process the change was made */