【问题标题】:Tracking changes and process pending approvals in SQL在 SQL 中跟踪更改并处理待处理的批准
【发布时间】:2011-05-26 13:03:08
【问题描述】:

我正在开发这个外联网旅游网站,该网站允许用户更新有关其住宿的信息。该站点并不太复杂,但使这个问题变得极其困难的一件事是:

客户希望用户更新他们的信息,但此类信息应保持“等待批准”状态,直到外网管理员实际批准更改。如果获得批准,此请求应存档在某种历史记录中。

我试图找出解决方案并最终找到可能的解决方案 - 保留新表中的更改记录(requestID、requestDate、requesttype、request(将 asp.net 数据表存储为 xml)) - 将记录 current_row 复制为 new_row 并在此表中添加 requestID 列(这可能会大大增加此原始表的大小) - 复制原始表的结构,我们将只保留待处理的请求(这也可能导致大量的表,具体取决于不同的请求类型和原始表的数量)

如果有任何关于我的想法的 cmets,我将不胜感激。

【问题讨论】:

    标签: sql tsql sql-server-2008 data-structures


    【解决方案1】:

    除了添加一个包含待处理/已批准值的状态列之外,您还需要什么?

    【讨论】:

    • 我需要一次更新多行(我使用的是 openXML),我需要存档更改以供查看(每个更改请求都应单独查看)。一个更改/请求可能包含多行。
    【解决方案2】:
    1. 您应该通过在新表中分离来归档数据,这样做可以提高查询性能。从性能的角度来看,如果它将是过时的数据(这意味着在承认用户请求并保留其历史记录之后),并且从不使用或很少使用,那么查询执行可能会很耗时。这是因为查询也会扫描这些过时的数据。 所以你应该有单独的表格来保存历史。所以我会选择“在新表中保留更改记录”

    2. 分区实现。 Have a look at this article for more information about Partitioning

    【讨论】:

    • 1.使用新表可能是个问题,因为我可能希望在请求信息中保留旧值/值。选择新表选项可能会带来很多不必要的工作。可能的原始表结构更改如何? 2. 分区实现?
    • 如果您有存档历史记录。那么你应该坚持这个回应。它将减少同一表中的列+记录数。如果仍然不满意,您可以进行分区
    • 什么是分区实现?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    • 2021-12-04
    相关资源
    最近更新 更多