首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySQL中存储表行的更改/版本?

问在MySQL中存储表行的更改/版本?
EN

Stack Overflow用户
提问于 2020-07-07 15:04:31
回答 1查看 108关注 0票数 0

我希望能够查看并查询PHP对表行的更改,以便查看历史记录。

例如,如果有人更改了产品名称的标题,我可以看到不同的版本以及它们何时被更改。

解决这个问题的最佳方法是什么,MySQL是否有一个特定的特性来处理这个问题,或者是创建一个用于历史性更改的表,以及在特定字段之前和之后更改日期的字段?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-07 16:54:20

在数据仓库中,通常有两种方法:

创建一个缓慢移动的Dimension

  • create审计表,如上面所建议的

1)缓慢移动或缓慢变化维数

这对于在给定时间跟踪多个更改(1或更多的值可能同时发生变化)非常有用--这会将所有更改和未更改的数据存储在一个新行中--由时间戳标识。

不知道具体的数据发生了什么变化。擅长于显示股票的当前头寸等。

例如,如果您的产品表当前包括:

代码语言:javascript
复制
PRODUCT_ID
PRODUCT_NAME
PRODUCT_COST

您可以添加其他字段来跟踪更改,例如

代码语言:javascript
复制
VALID_FROM
VALID_TO

当产品被添加时,VALID_FROM将是它被添加的日期,而VALID_TO是一个日期,例如31DEC3000.注意,此记录始终有效,直到更改为止。

当产品更新时,:将VALID_TO为31DEC3000的旧产品记录更改为当前日期时间,并添加一个新记录,其中VALID_FROM是当前日期时间.VALID_TO将是您决定的未来日期。

当您查询数据时,您需要知道什么时候您希望数据是“截至”,这样您就可以使用以下内容进行查询:

代码语言:javascript
复制
where AS_OF_DATETIME is between (VALID_FROM and VALID_TO)

2)审计表法

审核表存储单个变量更改,通常由一组标准列组成。

这很好地了解了具体的数据发生了哪些变化。不太擅长于显示股票的当前头寸等。

代码语言:javascript
复制
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 */
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62778255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档