2011-10-04 36 views
1

这是我第一次需要制作演示站点(用PHP中的一些示例数据和PostgresSql完成)。目前我们允许用户登录并执行网站上提供的操作。我想要的是什么做的是,一旦用户完成操作,我需要删除用户创建的数据。删除用户在演示网站中添加的数据的最佳做法?

但问题是如果用户在演示域中创建的数据库插入数据,然后如果我删除域数据可能有另一个用户插入或删除另一个会话中的数据。所以我不想显示其他用户操作(如插入,删除)给别人。它不会冲突。我该怎么做。

回答

2

有几种方法可以做到这一点。

  1. 使用SESSION。不知道这是否可行,但是如果你可以简单地将所有的数据放入SESSION中的模拟对象中,你会没事的。
  2. 这实际上可能是1b。你可以使用cookies来与SESSION做同样的事情,但无疑更令人讨厌。
  3. 每当新用户登录时生成模拟表—,为该用户创建一系列唯一表,并为该用户添加前缀UID。是的,它确实会创建模式蠕变,但这也意味着您可以轻松查看可以回收的空间。
  4. 让数据以某种方式在数据库中“标记”。这可能意味着您将一些额外的数据添加到某些用户数据的前面,这些数据会在数据库中临时标记它。但是,问题在于,您的SERIAL列无法正确重置,因为在删除数据后,您的序列将保留在当前位置。
2

为每个演示用户创建一个新数据库。使用来自“主”数据库的样本数据填充每个新数据库,该数据库永远不会被尝试演示的人改变。然后,当用户完成演示时,请删除整个数据库。

您可能可以对此进行优化,以便您只需为每个用户创建一些临时表,但这确实取决于用户在使用演示时修改了哪些数据。

+1

重新填充可以通过使用模板数据库来完成。 –

相关问题