es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Implementar número de revisión manteniendo la clave primaria en SQL.

Suponga que tengo una tabla psql con una clave primaria y algunos datos:

    pkey         | price 

———————-+——-
0075QlyLvw8bi7q6XJo7 | 20
(1 fila)

Sin embargo, me gustaría guardar las actualizaciones históricas sin perder la funcionalidad que proviene de hacer referencia a su clave en otras tablas como claves foráneas.

Estoy pensando en hacer algún tipo de enfoque de número de revisión + marca de tiempo, donde cada “actualización” sería una nueva fila, por ejemplo:

     pkey         | price | rev_no

———————-+——-+——–
0075QlyLvw8bi7q6XJo7 | 20 | 0
———————-+——-+——–
0075QlyLvw8bi7q6XJo7 | 15 | 1
(2 filas)

Luego, crear una vista que siempre tome el número de revisión más alto de la tabla y haga referencia a las claves de esa vista.

Sin embargo, para mí, este trabajo parece un poco pesado para una tarea que, en mi opinión, debería ser bastante común. ¿Hay algo que me falte? ¿Tiene alguna solución mejor o hay un paradigma bien conocido para estos tipos de problemas que no conozco?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Una solución común para el seguimiento de actualizaciones históricas es utilizar una tabla separada para almacenar los datos históricos. Esta tabla tendría la misma estructura que la tabla original, pero con columnas adicionales para el número de revisión y la marca de tiempo. Cuando una fila se actualiza en la tabla original, se inserta una copia de la fila original en la tabla histórica con un nuevo número de revisión y marca de tiempo.

    Para mantener las relaciones de clave externa, necesitaría agregar una columna a la tabla original que haga referencia a la clave principal en la tabla histórica. Esta columna estaría vacía para la revisión más reciente de cada fila, y apuntaría a la fila histórica correspondiente para revisiones anteriores.

    Si bien este enfoque requiere espacio de almacenamiento adicional, tiene la ventaja de mantener los datos históricos separados de los datos actuales, lo que puede facilitar su administración y consulta. También permite más flexibilidad en términos de consulta de datos históricos, ya que se puede consultar la tabla histórica directamente o unirla con la tabla actual según sea necesario.

Comments are closed.