Java中删除问题的逻辑不会怎么办呢?

Java中删除问题的逻辑不会怎么办呢?... Java中删除问题的逻辑不会怎么办呢? 展开
 我来答
热心晓朋友
2021-12-14 · TA获得超过287个赞
知道小有建树答主
回答量:1251
采纳率:65%
帮助的人:33.8万
展开全部

对数据进行逻辑删除,一般存在以下原因:

  • 防止数据误删除,不能找回数据;

  • 这些数据还具有一定的商业价值,比如用户的注册信息;

  • 虽然这些数据可以删除,但是这些数据还有关联数据,这些关联数据不能删除。

  • 对数据进行逻辑删除,可以保证数据的安全性和完整性。但是,逻辑删除也会带来的一些问题:

  • 数据库表的数据冗余,导致查询缓慢;

  • 写sql进行数据处理时需要排除那些已经逻辑删除的数据,这就会导致sql复杂,容易出错,特别是涉及多表查询时;

  • 进行逻辑删除时,还需要考虑与之相关的数据怎么处理;

  • 还有,如果数据表的某个字段要求唯一,并强制约束,比如用户表中的登录用户名字段,设计为逻辑删除的话,一旦有新的同用户名记录就无法插入。但如果不将该字段设置为唯一性约束的,那么在每次插入数据的时候,都需先进行一次查询,看看有无未(逻辑)删除的同名记录存在,低效率是一回事,而且在高并发的系统中,很难保证其正确性。

首先要思考要不要用逻辑删除

这一点很重要,不要盲目使用逻辑删除,首先要看是否有必要采用逻辑删除。因为采用物理删除的优势是显而易见的,不会有历史数据,数据间的关联关系也不会出错,还能节省数据库空间。采用物理删除,业务处理起来很清爽。所以如果没有必要,那么可以优先采用物理删除,从而避免逻辑删除引入的麻烦。比如说本人这次碰到的情况,实际上项目中并不需要逻辑删除,没有这方面需求,这些历史数据也没什么价值。所以这个问题就是当初的开发人员盲目采用了逻辑删除,而没有考虑周全导致的。基于这个情况,直接修改为物理删除解决问题。

当然,某些情况下必须使用逻辑删除,尤其是在现在越来越注重数据价值的环境下。比如历史数据有价值,项目对历史数据有存档要求,或者需要历史数据进行恢复等, 这些情况就必须采用逻辑删除了。

那么逻辑删除该采用怎样的设计呢?

方案1:增加delete_token字段(需要设置默认值,如“defaultToken”),与原来的unique key 组成联合主键.

delete_token字段作用:用来标识该条记录被删除,而不是通过原来的status或enabled字段来区分该记录是否已删除。

比如本文开头我碰到的情况,可以增加一个字段delete_token字段,与原来的字段A组成联合主键。比如删除表T中数据记录1时,delete_token可以更新为该条记录的主键id或者生成的唯一随机值(如UUID),用该方案可解决不能插入已删除数据的问题。同时也要注意,表T的关联关系表也需要进行类似的处理。

优点:不需要引入新表

缺点:若业务量较大或增删频繁,那么数据增长速度会很快,导致一张表中数据量太大,对表的操作效率会降低。

结论:适用于数据量较小、增删不频繁的场景。

方案2:增加备份表(删除记录表)

每张表都设计一张对应的备份表,用于存储删除的数据。表结构可以根据实际需要在原表基础上增加删除时间、删除操作者之类的字段。这样在删除数据时,对于原表,相当于是物理删除,然后再备份表中插入新的记录。注意:关联关系表也需要备份表。

优点:跟物理删除类似,不会有数据冲突的问题。同时也满足了逻辑删除的需求。将在用的业务数据与历史数据区分开,业务结构更清晰。

缺点:需要逻辑删除的数据都要有对应备份表。

Paige9033
2021-12-14 · TA获得超过157个赞
知道小有建树答主
回答量:446
采纳率:76%
帮助的人:39.7万
展开全部
没写条件,只说了结果,你要根据具体的条件来删除数据,不然确实没有逻辑
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
重庆新华电脑学校
2021-12-14 · 学动漫、设计、电竞、电商、短视频、软件等
重庆新华电脑学校
重庆新华电脑学校隶属于新华教育集团,经重庆市人力资源和社会保障局审批成立的重庆地区大规模IT人才教育基地。是国家信息化教育全国示范基地,中国IT教育十大影响力品牌学校。
向TA提问
展开全部
学技术现在已经非常普遍了,我们都知道,现在的社会要么有学历,要么有技术,没有学历没有技术很难有大的发展。但是,技术专业也分很多,很多人不知道该怎么选,初中生去学什么好呢?下面几个专业从就业前景和发展空间上来说都值得去参考。
一、软件编程
软件编程通常指程序员,程序员是从事程序开发、程序维护的基层工作人员,一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚,其岗位职责如下:
1、对项目经理负责,负责软件项目的详细设计、编码和内部测试的组织实施,对小型软件项目兼任系统分析工作,完成分配项目的实施和技术支持工作。
2、协助项目经理和相关人员同客户进行沟通,保持良好的客户关系。
3、参与需求调研、项目可行性分析、技术可行性分析和需求分析。
4、熟悉并熟练掌握交付软件部开发的软件项目的相关软件技术。
5、负责向项目经理及时反馈软件开发中的情况,并根据实际情况提出改进建议。
6、参与软件开发和维护过程中重大技术问题的解决,参与软件首次安装调试、数据割接、用户培训和项目推广。
7、负责相关技术文档的拟订。
8、负责对业务领域内的技术发展动态进行分析研究。
二、动漫专业
动漫专业人才是具有较高的文化艺术修养及较强的影视动漫画设计、原创及制作能力,能适应动漫画艺术制作、影视、广告、出版物、网络媒体、多媒体软件制作、计算机游戏开发等领域内工作的高等应用性专业人才。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式