设计问题使用什么模式

时间:2010-03-18 21:13:31

标签: design-patterns database-design

问题描述: 我们需要将实体的快照临时存储在数据库中,直到一段时间,直到完成批准数据的所有过程。完成所有批准后,数据应永久保留在实际表格中。

示例:

  1. 考虑一个名为“用户”的实体。创建用户的一种方法是通过“创建帐户流程”。
  2. “创建帐户流程”应捕获用户的所有信息,并将其存储在数据库的临时表中。
  3. “帐户审批流程”应使用该数据来运行其验证流程。
  4. 成功完成所有验证后,用户数据应保留在实际表格中。
  5. 问题: 存储在“创建帐户流程”期间输入的用户数据的位置。此外,用户数据应该是可编辑的,直到验证过程完成。

2 个答案:

答案 0 :(得分:9)

我通常会有一个包含“已批准”列的用户表。大多数查询只会检索此标志为true的行。例如。你可以创建一个视图“ApprovedUsers”作为

SELECT ... FROM Users WHERE Approved = 1

(其中......是除Approved列以外的所有列。)

然后你不需要乱用两张桌子。除帐户审批流程以外的大多数客户都可以访问“ApprovedUsers”视图,但不能访问基础表。

答案 1 :(得分:0)

这取决于。当您希望许多用户注册并且您拥有包含许多列的大型Users表并且您需要多个连接时,您可能希望拥有单独的表。