Hago algo como su segundo enfoque:tener la tabla con el conjunto de trabajo real y un historial con cambios (marca de tiempo, record_id, property_id, property_value). Esto incluye la creación de registros. Una tercera tabla describe las propiedades (id, property_name, property_type), lo que ayuda en la conversión de datos más arriba en la aplicación. Por lo tanto, también puede realizar un seguimiento muy fácil de los cambios de propiedades individuales.
En lugar de una marca de tiempo, también podría tener un tipo int, que incrementa para cada cambio por record_id, por lo que tiene una versión real. .