Es mucho más fácil almacenar cada registro en su totalidad que almacenar diferencias de ellos. Luego, si desea una diferencia de dos revisiones, puede generar una según sea necesario usando el Text_Diff
biblioteca
.
Me gusta almacenar todas las versiones del registro en una sola tabla y recuperar la más reciente con MAX(revision)
, un atributo booleano "actual" o similar. Otros prefieren desnormalizar y tener una tabla espejo que contenga revisiones no actuales.
Si almacena diferencias en su lugar, su esquema y algoritmos se vuelven mucho más complejos. A continuación, debe almacenar al menos una revisión "completa" y varias versiones de "dif", y reconstruir una versión completa a partir de un conjunto de diferencias cada vez que necesite una versión completa. (Así es como SVN almacena cosas. Git almacena una copia completa de cada revisión, no de diferencias).
El tiempo del programador es caro, pero el espacio en disco suele ser barato. Considere si almacenar cada revisión en su totalidad es realmente un problema.