我有两张桌子:
Articles(artID, artContents, artPublishDate, artCategoryID, publisherID)
。
ArticleUpdated(upArtID, upArtContents, upArtEditedData, upArtPublishDate, upArtCategory, upArtOriginalArticleID, upPublisherID)
用户登录应用程序并更新文章 (artContents)专栏的内容。我想知道:
用户对文章内容进行了哪些更改?
我想存储文章,原始版本和编辑版本的两个版本!
我应该怎么做以上两项任务:
对表格进行必要的更改?
获取(artContents)
的精确编辑数据的查询。
注意:我使用ASP.NET和C#进行开发
答案 0 :(得分:1)
您无法使用SQL进行精确编辑。您需要一个算法,例如文件上的Unix diff
(适用于行级)。在角色级别,算法将是Levenshtein distance的一些变体。如果diff
满足您的需求,您可以下载它,编写存储过程来调用它,然后在数据库中使用它。这将是相当昂贵的。
维护不同版本的问题部分要容易得多。我会在每条记录上添加两个colmnns EffDate
和EndDate
。您可以通过查找EndDate is NULL
获取最新版本,并在任何给定时间查找活动版本。 Merge
通常可用于维护此类表格。
答案 1 :(得分: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
以上网址将清除一些空气,如何做到这一点。
您显然需要追踪并存储每个更改。