Estoy tratando de encontrar un enfoque para un proyecto, donde un usuario puede editar registros y poder ver versiones anteriores de esos registros. Aquí hay un esquema de ejemplo simplificado, usando una 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
);
Por lo tanto, un usuario puede ingresar y realizar varias ediciones en la lista (es decir, agregar o eliminar tareas, reordenar tareas, marcar algunas completas, cambiar el nombre de algunas, etc.), luego guardarlas. En este punto, me gustaría generar una 'versión 2' de la lista y las tareas, y hacer que puedan ver versiones anteriores, pero cuando acceden a la lista, siempre obtienen la última versión.
¿Existe un patrón de enfoque / diseño común para tratar los datos de versiones de esta manera en una base de datos MySQL?