我正在尋找研究論文或着作將Longest Common Subsquence算法應用於SQL表以獲取數據差異視圖。其他有關如何解決表差異問題的建議也受到歡迎。目前的挑戰在於SQL表有歌廳相當大的和應用設計的文字處理可能會導致,永遠不會結束程序簡單的算法,這種壞習慣......基於SQL的數據差異:最長的公共子序列
所以給定一個表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
並表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
我需要找出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
只要是明確的,在'Key'強加給行的順序,否則術語如「序列」和「子」將毫無感覺在一個無序的集合(如關係表)。 – 2010-07-17 00:41:15
不要忘記,理論上來說,表格沒有任何順序 - 這也使事情變得複雜。您必須定義表格比較的訂單。 – 2010-07-17 00:41:45
我不認爲這與通常的問題有什麼不同:你可以做的最好的是O(n^2)(忽略比較錶行的時間),其中n是行數。如果你知道沒有行移動超過k個位置,你可以通過修改通常的動態編程算法在O(nk)中完成。如果n^2太大,你可能不得不假設類似這樣的,有一些合理的小k。 – ShreevatsaR 2010-07-17 01:31:17