数据库索引、三范式、事务

news2024/11/27 0:41:43

索引

索引(Index)是帮助 MySQL 高效获取数据的数据结构。常见的查询算法,顺序查找,二分查找,二叉排序树查找,哈希散列法,分块查找,平衡多路搜索树 B 树(B-tree)。

常见索引原则有
  1. 选择唯一性索引:唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。

  2. 为经常需要排序、分组和联合操作的字段建立索引:

  3. 为常作为查询条件的字段建立索引。

  4. 限制索引的数目:越多的索引,会使更新表变得很浪费时间。

  5. 尽量使用数据量少的索引:如果索引的值很长,那么查询的速度会受到影响。

  6. 尽量使用前缀来索引:如果索引字段的值很长,最好使用值的前缀来索引。

  7. 删除不再使用或者很少使用的索引

  8. 最左前缀匹配原则,非常重要的原则。

  9. 尽量选择区分度高的列作为索引:区分度的公式是表示字段不重复的比例

  10. .索引列不能参与计算,保持列“干净”:带函数的查询不参与索引。

12 . 尽量的扩展索引,不要新建索引。

数据库三范式

范式是具有最小冗余的表结构。3 范式具体如下:

第一范式(1st NF -列都是不可再分)

第一范式的目标是确保每列的原子性:如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF)

在这里插入图片描述

第二范式(2nd NF-每个表只描述一件事情)

首先满足第一范式,并且表中非主键列不存在对主键的部分依赖。 第二范式要求每个表只描述一件事情。

image-20240102200205249

第三范式(3rd NF- 不存在对非主键列的传递依赖)

第三范式定义是,满足第二范式,并且表中的列不存在对非主键列的传递依赖。除了主键订单编号外,顾客姓名依赖于非主键顾客编号。

在这里插入图片描述

数据库是事务

事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列操作,这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行 。事务是一个不可分割的工作逻辑单元事务必须具备以下四个属性,简称 ACID 属性:

原子性(Atomicity)
  1. 事务是一个完整的操作。事务的各步操作是不可分的(原子的);要么都执行,要么都不执行。
一致性(Consistency)
  1. 当事务完成时,数据必须处于一致状态。
隔离性(Isolation)
  1. 对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务。
永久性(Durability)
  1. 事务完成后,它对数据库的修改被永久保持,事务日志能够保持事务的永久性。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

听GPT 讲Rust源代码--library/panic_unwind

File: rust/library/panic_unwind/src/seh.rs 在Rust源代码中,rust/library/panic_unwind/src/seh.rs这个文件的作用是实现Windows操作系统上的SEH(Structured Exception Handling)异常处理机制。 SEH是Windows上的一种异常处理机制&#xff…

c++ / day04

1. 整理思维导图 2. 全局变量,int monster 10000;定义英雄类hero,受保护的属性string name,int hp,int attck;公有的无参构造,有参构造,虚成员函数 void Atk(){blood-0;},法师类继承自英雄类&a…

七功能遥控编解码芯片

一、基本概述 TT6/TR6 是一对为遥控玩具车设计的 CMOS LSI 芯片。TT6 为发射编码芯片,TR6 为接收解码芯片。TT6/TR6 提供七个功能按键控制前进、后退、左转、右转、加速、独立功能 F1,独立功能 F2 的动作。除此以外,还有这五种常规小车功能(…

valgrind跨平台调试及其问题分析

背景 同事在项目中遇到了内存泄漏问题,长时间没有解决,领导临时让我支援一下。心想,应该不难,毕竟我之间做过valgrind的使用总结。并输出内存泄漏问题分析思路(案例篇)和快速定位内存泄漏的套路两篇文章&a…

关于Github部分下载的方法

一、问题 在Github中,我需要下载部分文件,而github只有下载最原始文件夹和单独文件的功能。 比如我想下载头四个文件,难以操作。 二、方法 推荐使用谷歌浏览器,进入扩展程序界面: 在应用商店获取GitZip for github…

理解SQL中not in 与null值的真实含义

A not in B的原理是拿A表值与B表值做是否不等的比较, 也就是a ! b. 在sql中, null是缺失未知值而不是空值。 当你判断任意值a ! null时, 官方说, “You cannot use arithmetic comparison operators such as , <, or <> to test for NULL”, 任何与null值的对比都将返…

Java基础综合练习(飞机票,打印素数,验证码,复制数组,评委打分,数字加密,数字解密,抽奖,双色球)

练习一&#xff1a;飞机票 需求: ​ 机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。 ​ 按照如下规则计算机票价格&#xff1a;旺季&#xff08;5-10月&#xff09;头等舱9折&#xff0c;经济舱8.5折&#xff0c;淡季&#xff08;11月到来…

菜鸟之MATLAB学习——QPSK OQPSK信号生成及频谱分析

本人MATLAB学习小白&#xff0c;仅做笔记记录和分享~~ % qpsk && oqpsk clc; close all;Ts1; fc10;N_sample16; N_sum100; dt1/fc/N_sample; t0:dt:N_sum*Ts-dt; Tdt*length(t);d1sign(randn(1,N_sum)); d2sign(randn(1,N_sum));gtones(1,fc*N_sample); …

反转链表、链表的中间结点、合并两个有序链表【LeetCode刷题日志】

一、反转链表 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 思路一&#xff1a;翻转单链表指针方向 这里解释一下三个指针的作用&#xff1a; n1&#xff1…

【Linux驱动】设备树模型的LED驱动 | 查询方式的按键驱动

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《Linux驱动》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 目录 &#x1f36e;设备树模型的LED驱动&#x1f369;设备树文件&#x1f369;驱动程序 &#x1…

抽象类和接口的区别(小白版)

抽象类和接口的区别&#xff1a; 抽象类&#xff08;Abstract Class&#xff09;&#xff1a; 抽象类是一种不能被实例化的类&#xff0c;它只能被用作其他类的父类&#xff08;基类&#xff09;。抽象类可以包含抽象方法和非抽象方法。抽象方法是没有具体实现的方法&#xf…

【JAVA】实验二 类与对象

实验名称 实验二 类与对象 实验目的 1. 深刻理解类的封装与继承&#xff1b; 2. 熟练掌握类的定义、包与路径、对象的创建、方法的调用、类的继承、方法的重写、运行时多态、访问权限修饰符的使用等&#xff1b; 3. 熟练运用JDK提供的常用类及API。 实验内容&…

测试自动创建设备节点的功能

一. 简介 上一篇文章在 新设备驱动框架代码的基础上&#xff0c;添加了自动创建设备节点的代码。文章地址如下&#xff1a; 自动创建设备节点代码的实现-CSDN博客 本文对自动创建设备节点的功能进行测试。 二. 自动创建设备节点代码的测试 1. 编译驱动&#xff0c;并拷贝…

Python 数据库(一):使用 mysql-connector-python 操作 MySQL 数据库

大家好&#xff0c;我是水滴~~ 当涉及到使用 Python 操作 MySQL 数据库时&#xff0c;mysql-connector-python 库是一个强大而常用的选择。该库提供了与 MySQL 数据库的交互功能&#xff0c;使您能够执行各种数据库操作&#xff0c;如连接数据库、执行查询和插入数据等。在本文…

2024年美赛数学建模ABCDEF题思路选题分析

文章目录 1 赛题思路2 美赛比赛日期和时间3 赛题类型4 美赛常见数模问题5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 美赛比赛日期和时间 比赛开始时间&#xff1a;北京时间2024年2月2日&#xff08;周五&#xff…

[笔记] GICv3/v4 ITS 与 LPI

0. 写在前面 由于移植一个 pcie 设备驱动时&#xff0c;需要处理该 pcie 设备的 msi 中断(message signaled interrup)。 在 ARM 中&#xff0c; ARM 建议 msi 中断实现方式为&#xff1a; pcie 设备往 cpu 的一段特殊内存&#xff08;寄存器&#xff09;写某一个值&#xff0…

浅谈开关量信号隔离器在钢铁厂除鳞系统的应用-安科瑞 蒋静

摘要&#xff1a;在钢铁生产线中&#xff0c;轧制是其中一项重要的加工工艺。通过轧制将金属坯料进行延展和定型&#xff0c;满足不同行业的使用要求。在轧制前需要进行除鳞&#xff0c;除鳞系统是通过高压水形成扇形水束&#xff0c;喷射到钢坯表面将氧化铁层剥离。高压水由高…

精益生产敏捷实践手册:软件行业的精益转型之路——张驰咨询

精益生产培训的内容相当广泛&#xff0c;涵盖创立精益的理念、工具、执行策略和管理方法。下面将详细介绍各种培训内容以及它们的作用&#xff1a; 理念建设 精益生产基本概念&#xff1a;什么是精益&#xff0c;它的历史和核心理念等。 组织变革管理&#xff1a;怎样在组织…

数据库攻防学习之Redis

Redis 0x01 redis学习 在渗透测试面试或者网络安全面试中可能会常问redis未授权等一些知识&#xff0c;那么什么是redis&#xff1f;redis就是个数据库&#xff0c;常见端口为6379&#xff0c;常见漏洞为未授权访问。 0x02 环境搭建 这里可以自己搭建一个redis环境&#xf…

2024网络安全趋势—— “双刃剑”效应带来全新冲击和挑战

“生成式AI”正以前所未有的方式影响着人们的生活和工作方式。 在网络安全方面&#xff0c;这项技术也正深刻改变着对抗形态和攻防模式&#xff0c;其在打开人类认知世界新路径的同时&#xff0c;也成为黑客开展网络攻击的“利器”。随着生成式AI的深入发展&#xff0c;“双刃…