Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 管理使用一组复杂更改更新数据库的最佳实践_Database_Undo - Fatal编程技术网

Database 管理使用一组复杂更改更新数据库的最佳实践

Database 管理使用一组复杂更改更新数据库的最佳实践,database,undo,Database,Undo,我正在编写一个应用程序,其中我在一个数据库中有一些公开可用的信息,我希望用户能够编辑这些信息。这些信息不像维基那样是文本性的,但在概念上是相似的,因为编辑使公共信息越来越接近事实。这些更改将影响多个表,在影响公共表之前,需要自动检查更新 我正在进行设计,我想知道是否有任何最佳实践可以帮助解决某些特定问题 我想提供撤销功能。 我想向用户显示所有更改的组合结果。 当用户说他们已经完成了,我需要检查底层的公共数据,以确保它没有被其他人更改。 我目前的计划是让用户在一组表中工作,并将其设置为一个私人工作

我正在编写一个应用程序,其中我在一个数据库中有一些公开可用的信息,我希望用户能够编辑这些信息。这些信息不像维基那样是文本性的,但在概念上是相似的,因为编辑使公共信息越来越接近事实。这些更改将影响多个表,在影响公共表之前,需要自动检查更新

我正在进行设计,我想知道是否有任何最佳实践可以帮助解决某些特定问题

我想提供撤销功能。 我想向用户显示所有更改的组合结果。 当用户说他们已经完成了,我需要检查底层的公共数据,以确保它没有被其他人更改。 我目前的计划是让用户在一组表中工作,并将其设置为一个私人工作区。一旦准备好,他们就可以启动一个过程来检查所有内容并更新公共表。可以使用保存到表中的命令模式记录撤消

是否有我可能错过的技术或有用的论文或模式


提前谢谢

我会这样做:

使用“仅插入数据库”,则从不更新数据,只添加新行 每行有一个有效的起始日期、一个有效的截止日期以及进行更改的人 通过查询读取数据,其中valid-to-date=null,并且该行已被批准,这将给出最近的行 当用户添加数据时,可以通过选择添加的最后一行来查看所做的更改 当用户对所做的更改感到满意时,他可以将其标记为已批准 当它们被批准时,其他用户可以看到它们 撤消不是问题,因为您拥有所有以前的版本,所以可以将行标记为不再被批准,并恢复到以前的版本。