充分利用SQL Server中的确切编辑的数据(Getting the exact edited d

2019-08-16 22:32发布

我有两个表:

  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#开发

Answer 1:

你不会是能够做到使用SQL确切的编辑。 你需要的算法,如Unix的diff上的文件(其上线级别的作品)。 在人物等级,算法会的一些变化Levenshtein距离 。 如果diff满足您的需求,您可以下载它,写一个存储过程调用它,然后在数据库中使用它。 这将是相当昂贵的。

您维护不同版本的问题的一部分是要容易得多。 我将添加两个colmnns EffDateEndDate到每个记录。 您可以通过查找获取最新版本EndDate is NULL ,并找到积极的版本在任何给定的时间。 Merge是保持这样的表通常是有用的。



Answer 2:

基本上,这类型的要求需要自定义日志记录。

你提供什么,即“精确编辑的数据意味着,有可能在coloumns 5000个字符,用户可以编辑在中间200个字符或其他地方在列的字符的例子,我想确切的编辑文字,编辑之前和编辑后”

可以有用户从文本不同的地方更新的特定词的情况下。

您可以使用http://nlog-project.org/进行记录,其通常我们使用.NET做一个记录快速和强大的工具。

你也可以看看http://www.codeproject.com/Articles/38756/Two-Simple-Approaches-to-WinForms-Dirty-Tracking 的Asp.net事件实体的变化跟踪 什么是执行的最好方式改变的对象上的跟踪

上面这些URL将清除一些空气,就如何做到这一点。

你显然需要跟踪并存储每一个变化。



文章来源: Getting the exact edited data from SQL Server