我正在编写一个应用程序,用户可以在其中添加有关图书,出版商,来源(特定图书的链接)等信息。
每个用户都应该能够添加或编辑有关任何书籍(流派,出版商等)的书籍或信息。
当用户添加或更改有关图书的信息时,此信息仅供他使用,而版主不会检查信息的正确性。验证后,将为所有用户提供信息。
您可以看到我的数据库模式here。
我应该如何存储有关用户提供的更改的信息?
答案 0 :(得分:1)
您至少可以使用几种基本方法。
选项1:在一组并行表中保留挂起的更改 - 在此选项中,您或多或少会使用与主架构相同的表复制架构,但每个表添加额外的编辑 - 相关信息,例如 proposed_by , proposed_datetime , approval_status , approved_by 等。
在此选项中,您将跟踪所有建议的更改,并且只有在主持人批准后才会将其写入主要表格集。您可以在这些并行表中保留建议更改的历史记录,也可以将已批准和拒绝的更改删除,只保留挂起的更改。这取决于您的业务需求。
选项2:使用状态标记跟踪主表中的待处理更改 - 在此选项中,您可以将选项1中的更改跟踪列添加到主表中。您还有一个 status_flag 列,用于指明哪些记录是正式的,哪些记录是待定的更改。如果需要的话,你也可以设想跟踪被拒绝的变化。
选择哪个选项?所有设计都是权衡利弊。根据您的需要,您可以使用这些选项中的任何一个。第一个选项的问题是您必须复制所有表,然后在其上添加更改跟踪列。第二个选项的问题是,读取数据的代码会更复杂,因为它必须考虑过滤掉所有挂起的更改(如果跟踪它们,则拒绝更改)
我是干净代码的粉丝。出于这个原因,我可能倾向于选项1,但后来我不了解您的业务需求,因此您必须自己做出决定。