我正在 LAMP 上开发一个基于 MVC 的网络应用程序,它需要一些记录只有在“高级”用户的批准下才能修改。 (普通用户可以提交更改,但只有在批准后才能应用)
只有一个表必须在其中发生,比如“事件”:
事件 - ID - 名称 VARCHAR - 开始日期 DATETIME - 访客整数
每次事件的属性之一被“普通”用户修改时,这些更改不会正式生效,直到该“ super ”用户进行修订(和可能的批准)。
起初我想到了以下选项:
- 复制除 id 之外的每一列,对“名称”说 name_temp,以保存待批准的修改。
- 创建一个具有重复结构的单独表,并在其中保存所有待批准的修改。
你以前实现过这个吗?你认为最好的/你的方法是什么?还有:这种问题有什么模式吗?
谢谢!!!
PD:我需要将“旧”记录保留在原处,直到新记录获得批准。
最佳答案
让我对“第二张表”方法投上我的一票——正如其他两位受访者所说,它远远高于将“提议的更改”硬塞进主表的尝试(这会使它的架构复杂化,对它的每个查询等等)。
将所有预期更改写入辅助表并处理它们(如果它们满足某些条件,则将它们应用于主表)稍后“分批”确实是一种常见模式,当您需要主表仅在以下时间更改时通常很有用某些时候,提议的更改可以随时出现,也可以在其他情况下出现,例如当写入主表的成本非常高(锁定争用或其他)但写入 N 个更改并不比编写一个更改成本高多少,或者验证提议的更改非常耗时(您可以将您的用例归类为后一类,因为在您的情况下,验证需要人工查看提议的更改——按照计算机标准,这确实非常慢;-)。
关于php - 实现 "soft"保存或修改工作流的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/817906/