首页 > 解决方案 > 我需要保留历史数据,以便用户可以在时间线之间导航

问题描述

我目前正在开发一个数据库,其中包含三个建模如下的表:

procedures (
    id int,
    name varchar,
    desc text,
    created_at datetime
);

validations (
    id int,
    name varchar,
    desc text,
    created_at datetime
);

procedures_validations (
    procedure_id int,
    validation_id int,
    created_at datetime
);

而且我需要保留历史数据,因为用户可以在时间线之间导航。例如:

2019 年 1 月 1 日名为“Procedure 1”的程序有两个验证,名为“Validation 1”和“Validation 2”。经过一些更改后,相同的程序“程序 1”在 2019 年 1 月 5 日具有三个验证,名为“验证 1”、“验证 3”和“验证 4”。

如果我选择此数据组,在特定日期,我的结果需要是该日期的程序验证。如果我更改验证或过程名称/描述(更新),此信息需要与我在该期间选择数据时的信息相同。

换句话说,我需要保留所有验证和程序的历史记录。

可以选择复制所有数据(具有不同的日期),但我担心性能问题,因为这些表中会有很多记录(插入和重复的数量)。

procedures

ID  NAME    CREATED_AT
1   A   2019-01-01 21:00:00
2   B   2019-01-02 21:00:00

procedures_validations

id  PROCEDURE_ID    VALIDATION_ID   CREATED_AT
1   1       1       2019-01-02 21:00:00
2   1       2       2019-01-02 21:00:00
3   1       3       2019-01-02 21:00:00
4   1       1       2019-02-05 22:00:00
5   1       4       2019-02-05 22:00:00


validations

id  NAME    CREATED_AT
1   AA  2019-01-01 21:00:00
2   BB  2019-01-01 21:00:00
3   CC  2019-01-01 21:00:00
4   DD  2019-01-01 21:00:00

标签: mysqlrelational-database

解决方案


推荐阅读