2013-02-13 47 views
1

獲取準確的編輯的數據我有兩個表:從SQL Server

  1. Articles(artID, artContents, artPublishDate, artCategoryID, publisherID)

  2. ArticleUpdated(upArtID, upArtContents, upArtEditedData, upArtPublishDate, upArtCategory, upArtOriginalArticleID, upPublisherID)

    用戶登錄到應用程序和更新的製品的 內容在(artContents)柱。我想了解一下:

    1. 其中更改用戶對該文章的內容所做的?

    2. 我想存儲文章,原始版本和編輯版本的兩個版本!

我應該對上述兩個任務,這樣做時:

  • 任何必要的更改到表?

  • 查詢獲得精確編輯的數據(artContents)

    • (確切的編輯的數據意味着,有可能在coloumns 5000個字符,用戶可以在中間或別的地方在列的文字編輯200個字符,我想確切的編輯文字,編輯前後編輯

注):我使用ASP.NET與C#開發

+0

除了像編輯原始表格一樣將編輯後的文本保存到不同的列以外,我無法想到其他解決方案。 – masterlopau 2013-02-13 08:54:52

+0

SQL Server中有一整個['Change Tracking'](http://msdn.microsoft.com/zh-cn/library/bb933875.aspx)功能。你可能想看看它。 – peterm 2013-02-13 08:58:55

回答

0

基本上這類型需求需要自定義日誌記錄。 「確切編輯的數據意味着,在coloumns中可能有5000個字符,用戶可能會在中間或列的字符中的其他地方編輯200個字符,我希望確切地編輯這些字符,編輯之前和之後的編輯「

可以有一個用戶更新來自不同地方的特定單詞與文本的情況。

您可以使用http://nlog-project.org/進行日誌記錄,它是一種快速而強大的工具,通常我們用它來執行.net日誌記錄。你

也可以看看 http://www.codeproject.com/Articles/38756/Two-Simple-Approaches-to-WinForms-Dirty-Tracking Asp.net Event for change tracking of entities What would be the best way to implement change tracking on an object

上面這些URL將清除一些空氣,就如何做到這一點。

您顯然需要追蹤並存儲每個更改。

1

您不能使用SQL進行確切的編輯。你需要一個算法,例如文件上的Unix diff(它可以在行級別上工作)。在字符級別,該算法將是Levenshtein distance的一些變化。如果diff滿足您的需求,您可以下載它,編寫一個存儲過程來調用它,然後在數據庫中使用它。這將是相當昂貴的。

維護不同版本的問題的一部分要容易得多。我會在每條記錄上添加兩個欄目EffDateEndDate。您可以通過查找EndDate is NULL以獲得最新版本,並在任何給定時間查找活動版本。 Merge通常用於維護這樣的表格。

+0

我的要求是在這個鏈接中指定的,請看看這個,然後寫你的評論或解決方案,謝謝你的幫助(http://stackoverflow.com/questions/14855254/how-to-handle-track-changes-作爲堆棧溢出編輯-文章) – wkhaksar 2013-02-14 14:52:11