比如一道题目的选项更新。原来4个选项,现在删除第4个,又新增2个选项。
我目前的处理方式是,把原来的4个都删除了,直接把新的5个选项insert进去。
这样做合适吗?
我觉得我是偷懒了。我觉得比较规范的是,每次更新要比对新选项和原选项的数目,多了就更新原来的,再把多的加上去,少了就更新几个,再把多余的删掉。
对数据库操作的规范不太懂。求解。谢谢
每个选择题在后面都应该有一个ID, 当把数据拿回去以后。如果有Hibarenate来说是执行saveorupdate操作。如果没有就是判断,ID一致就是更新,没有id
的就是Insert.有ID并且点了删除就是执行delete。这个强烈不退捡删了全重新插入。
因为按照你的描述很可能在做一个问卷系统。问卷系统就有答题结果。如果是用户在问卷已经发布的状态下,少量修改问卷。在答案的ID发生变化的情况
下。已经做了问卷的人的答案是很难和新的问卷ID关联上的。
做标记,你删除的这些可能以后还能用到这些数据,比如说分析用户的选择习惯,分析用户的历史数据等等
具体问题具体分析
如果符合需求的
先删后增 是一种比较常见的方法
你的答案比如 A B C D当时插入数据库的时候插入个id?这样你删除答案的时候去根据id删除。
如果说是更新数据库的多条数据的话;如果你知道是要删除(修改)哪一条,那么用saveorupdate()方法(hibernate);简单来说就是写一个方法
在最后判断是否有Id(因为知道要删除哪一条)有Id就用update 没有id就save
应该有ID吧,可以用ID做判断,有的就更新,没有的插入,多余的删除
没有特殊需求的话,这种直接用一个字段对数据进行序列化保存就够了,不需要多条数据
举个例子 现在市场部 有5个员工 现在来了两个新人 走了两个老人
但是我手里的数据 只有更新后的 市场部全部人员名单
我没必要拿新名单 和旧名单 比较 删了走的人 加了新的人
这时候就可一把 以前的 市场部员工 全部删掉 把新的全部insert进去
只要满足需求 就可以了
id | question | answer |
---|---|---|
1 | 您的性别 | ['男', '女'] |
2 | 您的专业 | ['计算机', '文学', '土木工程'] |
这类,不关心选择过程,只需要关心结果即可,用户选择结果需要做冗余保存,无需通过ID什么的进行关联