Estou tentando encontrar uma abordagem para um projeto, onde um usuário pode editar registros e poder ver versões anteriores desses registros. Aqui está um esquema de exemplo simplificado, usando uma lista:
TABLE list (
id int auto_increment primary key,
user_id int,
title varchar(255)
);
TABLE list_tasks (
id int auto_increment primary key,
list_id int,
title varchar(255),
order int,
is_complete tinyint
);
Para que um usuário possa entrar e fazer várias edições na lista (por exemplo, adicionar ou remover tarefas, reordenar tarefas, marcar algumas como concluídas, renomear outras, etc.), salve-as. Nesse momento, gostaria de gerar uma 'versão 2' da lista e das tarefas e permitir que elas visualizassem versões anteriores, mas, quando acessam a lista, sempre obtêm a versão mais recente.
Existe um padrão comum de abordagem / design para lidar com dados de versionamento dessa maneira em um banco de dados MySQL?