En muchas bases de datos en las que parece estar trabajando actualmente, no puedo simplemente eliminar un registro por varias razones, incluso para luego mostrarlas más tarde (digamos un producto que ya no existe) o simplemente guardar una historia de lo que fue.¿Cuál es el mejor método/opción para los registros vencidos en una base de datos?
Así que mi pregunta es cuál es la mejor manera de caducar el registro.
A menudo he añadido una columna date_expired
que es el campo de fecha y hora. Generalmente pregunto dónde date_expired = 0
o date_expired = 0 OR date_expired > NOW()
dependiendo de si los datos van a caducar en el futuro. Similar a esto, también he agregado una llamada de campo expired_flag
. Cuando esto se establece en verdadero/1, el registro se considera caducado. Este es probablemente el método más fácil, aunque debe recordar incluir la cláusula de caducidad siempre que solo desee los artículos actuales.
Otro método que he visto es mover el registro a una tabla de archivo, pero esto puede ser bastante complicado cuando hay una gran cantidad de tablas que requieren tablas de historial. También hace que la recuperación del valor (por ejemplo, país) sea más difícil ya que primero debe hacer una combinación izquierda (por ejemplo) y luego hacer una segunda consulta para encontrar el valor real (o rehacer la consulta con una combinación modificada a la izquierda).
Otra opción, que no he visto ni intenté por completo, es tener una tabla que contenga todos los datos de todos los registros caducados o algún tipo de información, algún tipo de tabla de historial . En este caso, la recuperación sería aún más difícil, ya que necesitaría buscar posiblemente una tabla masiva y luego analizar los datos.
¿Existen otras soluciones o modificaciones que sean mejores?
Estoy usando MySQL (con PHP), así que no sé si otras bases de datos tienen mejores métodos para tratar este problema.
Mover los registros pueden llegar a ser muy sucia con integridad referencial con FKS, es que creo preferible filtrar los registros de uso de la bandera cuando sea necesario – Sam
Buena pregunta, por cierto! – Sam