Estoy buscando trabajos de investigación o escritos en la aplicación del algoritmo Longest Common Subsquence a tablas de SQL para obtener una vista de diferencia de datos. También se agradecen otras sugerencias sobre cómo resolver un problema de diferencia de tabla. El ser que las tablas de SQL tienen esta mala costumbre de que consigue bastante grande y la aplicación de algoritmos sencillos diseñados para el procesamiento de texto puede resultar en un programa que nunca termina desafío ...Diferencia de datos basada en SQL: subsecuencia común más larga
tan dieron una mesa Original
:
Key Content
1 This row is unchanged
2 This row is outdated
3 This row is wrong
4 This row is fine as it is
y la mesa New
:
Key Content
1 This row was added
2 This row is unchanged
3 This row is right
4 This row is fine as it is
5 This row contains important additions
necesito averiguar la Diff
:
+++ 1 This row was added
--- 2 This row is outdated
--- 3 This row is wrong
+++ 3 This row is right
+++ 5 This row contains important additions
Para que quede claro, el 'Key' impone un orden en las filas, de lo contrario términos como 'secuencia' y 'subsecuencia' no tendría ningún sentido en un conjunto desordenado (como una tabla relacional). –
No olvide que las tablas, en teoría, no tienen ningún orden para las filas, lo que también complica las cosas. Debe definir un orden para las comparaciones de tablas. –
No creo que esto sea diferente del problema habitual: lo mejor que puede hacer es O (n^2) (ignorando el tiempo para comparar las filas de la tabla) donde n es el número de filas. Si sabe que ninguna fila se mueve en más de k posiciones, puede hacerlo en O (nk) modificando el algoritmo de programación dinámica habitual. Probablemente tendrás que asumir algo como esto, con algunas k razonablemente pequeñas, si n^2 es demasiado grande. – ShreevatsaR