【发布时间】:2011-08-09 07:46:49
【问题描述】:
我正在开展一个项目,我们需要让某些用户输入或更新的数据在添加到“实时数据”之前处于待处理状态。
在准备数据时,用户可以保存不完整的记录。虽然数据处于待处理状态,但我们不希望数据影响强加于用户编辑实时数据的规则,例如处理实时数据的用户在输入已处于待处理状态的相同数据时不应遇到唯一约束。
我设想将数据更新集分组到“数据提交”中,当有人对提交进行质量控制时,数据将被重新验证和更正/拒绝/批准。
关于存储数据,我考虑过两种方案:
1) 将未决状态数据与实时数据保持在同一个表中,但添加一个标志来指示其状态。我可以在这里看到必须删除约束或使必填字段可以为空以支持“不完整”状态数据的问题。然后是如何处理更新现有数据的问题,您必须为更新添加一个新行并将其链接回现有的“实时”行。这对我来说似乎有点混乱。
2) 添加新表以镜像实时表并将数据存储在其中,直到获得批准。这将使我能够完全控制现有的活动表,而“待定”表可以被用户认为他想放在那里的任何东西滥用。这样做的缺点是我最终会在数据库中得到很多额外的表/SP。我正在考虑的另一个问题是用户如何在两条记录之间进行链接,其中链接到的记录可能是活动表中的记录或待处理表中的记录,但我想在这种情况下,您总是可以复制链接记录并将其视为更新?
这两种解决方案似乎都不完美,但对我来说第二个似乎是更好的选择 - 是否有第三种解决方案?
【问题讨论】:
标签: sql sql-server database-design architecture