到底需要加唯一索引不

文章目录

  • 前言
  • 一、逻辑删除、唯一索引一起使用(不推荐)
  • 二、使用物理删除、并加唯一索引
  • 使用逻辑删除,不加唯一索引


前言

唯一索引、逻辑删除,相信这两个词对于java程序员来说一点都不陌生吧。

唯一索引:索引列的值必须是唯一的,不允许重复
逻辑删除:用字段的状态记录数据是否被删除

最近项目上遇到因为没有正确使用这两个东西,导致一系列的问题。比如删除的时候逻辑删除,并且比如身份证号,手机号又加了唯一索引,再次保存就报错。有些项目从业务上来讲身份证,手机号必须唯一但是没有加唯一索引,但是产生了很多重复数据,今天就来分析一下什么场景下使用这两个东西。


一、逻辑删除、唯一索引一起使用(不推荐)

不建议一起用,除非项目开发前经过严格的设计讨论。逻辑删除的数据本身作为删除了的数据来说,不应该被业务逻辑中查询到(潜规则)。

加了逻辑删除之后,并且身份证号或者手机等字段加了唯一索引之后。这种情况的话在进行业务操作的时候,被逻辑删除的数据就要被我们业务代码查询出来了。比如我一个账号(手机号)已经被删除(逻辑)了,再次注册的话,直接报错就会因为有唯一索引而保存失败。因为已经物理删除的业务数据里面含有唯一索引的字段,重新走正常新增流程的时候时候就要考虑到这种情况。

除非已经被删除的数据,唯一索引的值不会再次从新增业务,这种场景还是可以加的。只是我很少遇到这种情况

二、使用物理删除、并加唯一索引

大多数的业务场景,都不会要求物理删除,并且有写字段的值有唯一性,比如账号的身份证,用户名、手机号等。如果我们这边表的数据状态比较多,并且业务比较复杂,和其他系统关联程度比较多。涉及新增编辑的业务非常多、数量量还非常大。这种情况就使用物理删除身份证加唯一索引。

为什么呢?
说一下我们公司的案例吧,现在我们公司的会员信息,有100万,这100万的数据来源口径非常多,估计得有近10个来源口径吧,口径都这么多了,维护的人就更多了,导致有些接口有并发问题,或者说是在维护数据时候又产生了脏数据。因为对于大部分公司来说,并发测试是做得不够的。所以想这种情况唯一索引就必须加上,避脏数据的产生,便于后期的数据维护。想要记录物理删除的数据,就用单独一个表记录吧。

使用逻辑删除,不加唯一索引

这种情况就适合业务简单、数据量少的情况。因为业务简单代码好控制,好判断,好维护。数据量少,就算产生了脏数据也比较容易清理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/551037.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

怎么转行做产品经理?

小白转产品经理第一点要先学基础理论知识,学了理论再去实践,转行,跳槽! 学理论比较好的就是去报NPDP的系统班,考后也会有面试指导课、职场晋升课程,对小白来说非常合适了~(B站:不爱…

【笔记】ASP.NET Core Web API之Token验证

在实际开发中经常需要对外提供接口以便客户获取数据,由于数据属于私密信息,并不能随意供其他人访问,所以就需要验证客户身份。那么如何才能验证客户的身份呢?一个简单的小例子,简述ASP.NET Core Web API开发过程中&…

16 - Debian如何配置vsftpd(1)实现匿名上传下载

作者:网络傅老师 特别提示:未经作者允许,不得转载任何内容。违者必究! Debian如何配置vsftpd(1)实现匿名上传下载 《傅老师Debian小知识库系列之16》——原创 前言 傅老师Debian小知识库特点&#xff1a…

openfoam与blastfoam的版本兼容解决方法(从而解决正确运行blastFoam里面的案例,避免报错)

问题:最近运行blastFoam里面自带的案例时,全都报错,使用的openfoam2212加上blastfoam6.2.0。也尝试使用了openfoam7加上blastfoam2.0都报错 比如报错如下: --> FOAM FATAL IO ERROR: error in IOstream "OSHA1stream.s…

刷穿力扣006-剑指offer一数组——02寻找目标值-二维数组

刷穿力扣006-剑指offer<一>数组——02寻找目标值-二维数组 基本面试题都是我带大家刷的力扣热题100和剑指offer的75道题&#xff0c;建议刷两遍&#xff01;&#xff08;ps:想找工作实习的同学&#xff0c;文末有面试八股和简历模板&#xff09; 题目&#xff1a; 语言…

探索分布式系统监控zabbix------------自动发现与自动注册

目录 一、部署 zabbix 服务端 二、部署 zabbix 客户端 2.1环境准备 2.2服务端和客户端都配置时间同步 &#xff08;ntp&#xff09; 2.2.1服务端zbx-server 2.2.2服务端zabbix-agent01客户端 2.3客户端配置时区&#xff0c;与服务器保持一致 2.4设置 zabbix 的下载源&…

【Yapi】Idea配置easy-yapi

Idea配置easy-yapi 第一步&#xff1a;安装EasyApi 下载好EasyYapi的Plugins&#xff0c;在Settings—Plugins—Install Plugin from Disk…导入并安装&#xff0c;勾选为enabled。第二步&#xff1a;配置EasyApi 打开Settings—EasyApi&#xff0c;server设置为你的yapi地址&…

现代化个人博客系统 ModStartBlog v9.3.0 支持Laravel 9

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用&#xff0c;支持后台一键快速安装&#xff0c;让开发者能快的实现业务功能开发。 系统完全开源&#xff0c;基于 Apache 2.0 开源协议。 功能特性 丰富的模块市场&#xff0c;后台一键快速安装 …

新兴存内计算芯片架构、大型语言模型、多位存内计算架构——存内计算架构的性能仿真与对比分析探讨

一.大型语言模型&#xff08;LLM&#xff09; 近年来&#xff0c;基于注意力机制的大型语言模型&#xff08;LLM&#xff09;已经取得了令人瞩目的成功。这些模型的尺寸在不断增长&#xff0c;每两年增长240倍&#xff0c;而相应的计算需求则增长了近750倍。然而&#xff0c;硬…

本地搭建属于你自己的AI搜索引擎 支持多家AI模型

FreeAskInternet 是一个完全免费、私有且本地运行的搜索聚合器&#xff0c;并使用 MULTI LLM 生成答案&#xff0c;无需 GPU。用户可以提出问题&#xff0c;系统将进行多引擎搜索&#xff0c;并将搜索结果合并到LLM中&#xff0c;并根据搜索结果生成答案。全部免费使用。 项目…

实验六 智能手机互联网程序设计(微信程序方向)实验报告

实验目的和要求 请完成创建图片库应用&#xff0c;显示一系列预设的图片。 提供按钮来切换显示不同类别的图片。 二、实验步骤与结果&#xff08;给出对应的代码或运行结果截图&#xff09; 1.WXML <view> <button bindtap"showAll">所有图片</but…

从零开始学习大模型

随着人工智能技术的快速发展&#xff0c;大模型已成为许多领域的热门话题。然而&#xff0c;大模型的创建并不是一件容易的事情。在本文中&#xff0c;我们将从零开始学习如何创建一个大模型&#xff0c;帮助读者掌握大模型的创建过程。 一、数据收集 创建大模型的首要任务是…

2024年在Vim中开发vue2+java

neovim 0.5刚出来的时代&#xff0c;那时刚有lua插件我很狂热。每天沉迷于打造自己的IDE之中。写过一堆相关的博客&#xff0c;也录过一些视频教程。后来发现neovim的接口和插件更新的很快&#xff0c;导致配置文件要不定期的修改&#xff0c;才能保证新版本的插件的适配。我也…

计算机网络 Cisco远程Telnet访问交换机和Console终端连接交换机

一、实验要求和内容 1、配置交换机进入特权模式密文密码为“abcd两位班内学号”&#xff0c;远程登陆密码为“123456” 2、验证PC0通过远程登陆到交换机上&#xff0c;看是否可以进去特权模式 二、实验步骤 1、将一台还没配置的新交换机&#xff0c;利用console线连接设备的…

ArcGIS加载的各类地图怎么去除服务署名水印

昨天介绍的&#xff1a; 一套图源搞定&#xff01;清新规划底图、影像图、境界、海洋、地形阴影图、导航图-CSDN博客文章浏览阅读373次&#xff0c;点赞7次&#xff0c;收藏11次。一体化集成在一起的各类型图源&#xff0c;比如包括影像、清新的出图底图、地形、地图阴影、道路…

苍穹外卖学习记录(一)

1.JWT令牌认证 JSON Web Token (JWT)是一个开放标准(RFC 7519)&#xff0c;它定义了一种紧凑的、自包含的方式&#xff0c;用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任&#xff0c;因为它是数字签名的。 JWT是目前最常用的一种令牌规范&#xff0c;它最…

【学习笔记】Python大数据处理与分析——pandas数据分析

一、pandas中的对象 1、Series对象 由两个相互关联的数组(values, index)组成&#xff0c;前者&#xff08;又称主数组&#xff09;存储数据&#xff0c;后者存储values内每个元素对应关联的标签。 import numpy as np import pandas as pds1 pd.Series([1, 3, 5, 7])print(…

Linux LVM与磁盘配额

目录 一.LVM概述 LVM LVM机制的基本概念 PV&#xff08;Physical Volume&#xff0c;物理卷&#xff09; VG&#xff08;Volume Group&#xff0c;卷组&#xff09; LV&#xff08;Logical Volume&#xff0c;逻辑卷&#xff09; 二.LVM 的管理命令 三.创建并使用LVM …

AutoPSA中推荐用户使用仿CII计算

Q:请问未知错误。优易AUtoPSAInDon3.app1670行是什么原因呢&#xff1f;如下图&#xff1a; A: 这是老的仿GLIF算法&#xff0c;遇到特殊情况有这个提示&#xff0c;建议使用仿CAESARII算法。

车载摄像头视频防抖处理解决方案,全新的稳定视觉体验

面对复杂多变的道路环境和车辆运动状态&#xff0c;如何确保车载摄像头拍摄的视频稳定清晰&#xff0c;一直是行业面临的重要挑战。美摄科技&#xff0c;作为视频防抖技术的领军企业&#xff0c;以其领先的车载摄像头视频防抖处理解决方案&#xff0c;为企业提供了全新的稳定视…
最新文章