有一个开发任务,要求是:
一条产品数据中,可由任意员工修改数据内容,但修改的内容不会立即呈现出来,须由管理员确认后方能正式生效。
修改后以往记录也须保存,并可由管理员随时查阅历史记录及恢复。
看到这个要求我就想起了wiki的工作流程,它也是可由多人编辑,可随时恢复以往记录,就是不知道这种流程是如何设计的?我想了两个方式,但似乎都不大合理:
一,建立一个相同结构的表当备份表,当有修改时将原数据整条复制到备份表去,以插入的方式。二,在原表上建立标识字段,比如说刚修改过的隐藏起来,仅管理员可看到,当确认后方显示。
感觉这样的设计不大合理,不知各位高人有更好的方法没?

解决方案 »

  1.   

    wiki 的数据组织与一般 bbs 没有什么不同
      

  2.   

    建议分表存储。效率上要好点。只是如果这样的表很多就麻烦了。一个表只保存正式显示的数据,一个表保存以往的记录和员工修改的记录,加2个字段type,uid,edittime;type区分到底是以往的确认了的修改记录,还是员工提交的修改记录。uid是保存谁修改的(根据情况也可以不要).edittime修改时间前台查询数据始终只查询只保存正式显示的数据的表。后台审核就查询出某信息对应的 员工提交的修改记录(可能是多条)。符合的就将该条信息与符合要求的信息相互更新就可以了,将原信息更新到修改记录表的时候,最好所有字段都更新(这样可以保存一些其他的信息属性(字段)),而将记录表的信息更新到显示信息表时,则只需要更新员工更新的信息(根据需要也可更新其他字段)有点晕。
      

  3.   

    这个可以这么做
    用户每次修改时,要存一个revision的文本,需要比较时,取出来进行对比
    即要有一个revision表和相关text的表。两个也可合一.
    mediawiki是这么设计的