对于关系表的修改操作,先提下何为关联表,在数据表设计中,多对多关系中间会定义一张关联表。
我用项目中产品为例,
产品: 电商通产品、企业通产品 …
产品策略: 等额本息、等额本金、先息后本…
产品与产品策略之间 比如product_strategy_rel表相关联
在产品或者产品策略的cud操作时候会修改该表,
之前我的做法(也是身边人做法)不管对于新增还是修改操作,查询关系表相关数据后全部删除,再根据最新的全部添加。逻辑简单,简单粗暴。
伪代码:
delete from table_rel where id = 1;
insert into table_rel (id、value) values (1, 1), (1, 2), (1, 3);
在某些条件下是可接受的,比如,新增的数据跟原有数据没有大量的重复。但是如果出现大量的重复数据只是一小部分的更改就得不偿失了。
最近重新审视了一下这个野蛮的做法,试着能不能优化它呢
我的解决如下,当然前提是数据量不是很大的情况下,基于集合的内存操作,用空间换时间
public static void main(String[] args) { |
结果如下:
[1]
[5]
这样对于listAdd的数据进行新增操作
对于list的数据进行删除操作,避免了全删再新增。
- 本文标题: 关系表修改操作的一种思路
- 文章作者: sherryriver(木木三可)
- 发布时间: 2018.07.25
- 本文链接: https://sherryriver.github.io/2018/07/25/关系表业务操作/
- 许可协议: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。