【发布时间】:2020-07-31 22:08:41
【问题描述】:
在数据库中,我有多个问题的答案值:
问题1 -> 答案1 答案2
问题2 -> answer3 answer4 answer5
--
现在用户提交他对这些答案的更新:
问题1 -> 回答1 回答2 回答6
问题2 -> answer3 answer4
--
那么,进行这些更改的最佳方式是什么?我需要删除丢失的条目,添加新条目而不删除旧值。
最简单的方法是删除所有旧答案并编写新答案。但是我的系统有软删除,所以删除的条目并没有真正删除,只是用删除日期标记。如果我这样做,数据库表会增长得非常快,因为每次用户进行更新时它都会写入几十个新条目。
我能想到的另一种方法是在两次迭代中进行:第一次将保存的值与新值进行比较,如果找不到匹配项则删除保存的值。第二次迭代将新值与旧值以及缺少的所有值进行比较。
但也许还有更实用、更有效的方法?
【问题讨论】:
-
您不应将多个值放在同一列值中。您应该有一个表格,每个问题+答案都有一个单独的行,问题表格有一个外键。
-
查看规范化
-
如果 question_id 为 0,则使用设置为原始行 id 的 question_id,并且 parent_id 列所有编辑都会创建新行,通过 parent_id 链接回原始 question_id 和以前的编辑,那么它只是一种情况在选择上按顺序排序/分组
标签: php arrays database symfony