2011-03-08 44 views
0

如何最好地实现数据库记录的编辑模式?单独的公开和编辑模式版本的数据库记录

记录(例如博客文章)都需要有在网站上看到公版,而编辑模式版本正在编辑,预览,重新编辑等

到目前为止,我有记住两种解决方案:

  1. 使用带有ID和模式的多列主键。
  2. 为每种模式使用不同的表格,并在它们之间进行复制。

我不能成为第一个需要此功能的人。

这通常如何完成?它有名字吗?

我使用CakePHP,它没有明确支持多列键,但我不认为这对我的情况很重要,因为在用户完成编辑后,实际上不会有多个具有相同ID的行。

回答

0

就数据库而言,您不需要编辑模式。 尤其是通过网络 - http是一种不可靠的传输协议。

如果您的用户界面允许编辑,那么你只需要编辑和(我相信),点击一个按钮,“代码”按钮,最终将改变的数据到数据库作为UPDATE语句。如果UPDATE语句正确形成,并且编辑器和应用程序具有足够的权限,则UPDATE将成功,并且数据将被更改。

在UPDDATE之前读取特定行的任何人都将看到旧版本;任何在UPDATE之后读取它的人都会看到新版本。 (忽略可能的缓存效果。)

+0

最后,这似乎是最简单的解决方案。我只是通过在预览页面上生成隐藏表单来在页面之间来回发送数据。 – geon 2011-03-15 15:38:53

0

听起来好像你正在寻找一个版本控制系统或者创建一个帖子的能力,而不是直到它被管理员批准才能生效。我不认为这是CakePHP本地的,但你可以做的是,

复制编辑功能在控制器 - >复制 - >重命名,然后做同样的编辑视图,然后创建一个新的数据库表称为编辑。还创建“保存”或当提交按钮被按下,你可以决定哪些db表后会在$这个 - >数据查看数据填充“发布”

然后一个下拉框。

我认为这将是自复制,你将不必担心发送帖子的ID给函数的编辑功能,蛋糕会自动做最简单的方法。所以你的ID的帖子表和编辑表应该匹配。