首页 > 数据库 >数据库三大范式&mysql的索引类型和作用&事务的特性和隔离级别

数据库三大范式&mysql的索引类型和作用&事务的特性和隔离级别

时间:2023-07-31 20:00:30浏览次数:43  
标签:事务 范式 隔离 id 索引 mysql 主键 三大

数据库三大范式&mysql的索引类型和作用&事务的特性和隔离级别

数据库三大范式

第一范式

# 数据库表的每一列都是不可分割的基本数据
-每列的值具有原子性,不可再分割
-每个字段的值都只能是单一值

举例:学籍信息不符合第一范式,可以继续分割

第二范式

# 在第一范式的基础上
- 如果表是单主键,那么主键以外的列必须完全依赖于主键,其他列需要跟主键有关系
- 如果表是符合主键,那么主键以外的列必须完全依赖于主键,不仅仅是依赖主键的一部分

举例:
1.上表中如果加上学校地址那么不符合规范,和主键没有关系,此时可以加上学校名,然后另建学校表,做外键关联,外键就是规范数据库的产物。
2.下表中分数字段完全依赖于学生id和课程id,但是课程名字只依赖于主键的一部分课程id,不符合规范

第三范式

# 在第二范式的基础上
- 表中的非主键列必须和主键直接相关而不能简介相关,即非主键列之间不能相互依赖,不存在依赖传递

举例:
下表中部门名称依赖于部门id,部门id依赖于id主键,部门名称不直接依赖于id主键,属于依赖传递,不符合规范

mysql的索引类型和作用

主键索引(聚簇索引)

-表不建立主键,也会有个隐藏字段是主键,是主键索引。主键索引是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。简单来说:主键索引是加速查询 + 列值唯一(不可以有null)+ 表中只有一个

事务的特性和隔离级别

四大特性ACID

1.原子性(Atomicity):原子性确保事务中的所有操作要么全部成功完成,要么全部回滚到事务开始前的状态。如果事务中的任何操作失败,那么整个事务将回滚,以保持数据的一致性。原子性确保了事务的完整性和一致性。

2.一致性(Consistency):一致性确保事务在执行前后,数据库始终保持一致的状态。

3.隔离性(Isolation):隔离性确保并发执行的事务相互隔离,每个事务都像是在独立运行。通过隔离级别(如读未提交、读已提交、可重复读和串行化),数据库提供了对并发事务之间可见性的控制。

4.持久性(Durable):事务完成之后,她对数据的修改是永恒的,即时出现故障也能够正常保持

隔离级别

# Read uncommitted(读未提交)-ru  
- 一个事物读到了另一个事务未提交的数据

# Read committed(读已提交)-rc
-如果设置了这个级别一个事物读不到另一个事务未提交的数据
-写事务提交之前不允许其他事务的读操作
  
# Repeatable read(可重复读取)-rr
-在开始读取数据(事务开启)时,不再允许修改操作,这样就可以在同一个事务内两次读到的数据是一样的,因此称为是可重复读隔离级别
  
# Serializable(串行化)
事务串行执行,只能一个接着一个地执行,完全隔离了并发访问。它提供了最高的数据完整性,但并发性能最差

标签:事务,范式,隔离,id,索引,mysql,主键,三大
From: https://www.cnblogs.com/10086upup/p/17594350.html

相关文章

  • 从源码解读Mysql 5.7性能和数据安全性的提升
    下面我们从源码来分析mysql的事务提交以及事务在何时将binlog复制到从库的。MYSQL_BIN_LOG::ordered_commit,这个是事务在binlog阶段提交的核心函数,通过该函数,实现了事务日志写入binlog文件,以及触发dump线程将binlog发送到slave,在最后的步骤,将事务设置为提交状态。我们来分析MYSQL_B......
  • 数据库三大范式,mysql索引,事务的特性和隔离级别
    1数据库三大范式是什么数据库设计理论中的三大范式是指关系数据库中的规范化原则,目的是减少数据冗余和数据更新异常。第一范式(1NF):第一范式要求关系数据库表的每个属性都是原子性的,即每个属性不能再细分为更小的数据项。它要求将数据划分为最小的单元,避免重复或多值属性。这样......
  • mysql 查看当前正在被锁定的事务和等待锁的事务信息
    SELECTr.trx_idAS'事务ID',r.trx_stateAS'事务状态',r.trx_startedAS'事务开始时间',r.trx_wait_startedAS'等待开始时间',l.lock_tableAS'表',l.lock_indexAS'索引',l.lock_modeAS......
  • MYSQL中JSON类型介绍
    1json对象的介绍在mysql未支持json数据类型时,我们通常使用varchar、blob或text的数据类型存储json字符串,对mysql来说,用户插入的数据只是序列化后的一个普通的字符串,不会对JSON文档本身的语法合法性做检查,文档的合法性需要用户自己保证。在使用时需要先将整个json对象从数据库读......
  • Mysql高级6-视图
    一、视图介绍视图(View):是一种虚拟存在的表,视图中的数据并不在数据库中实际存在,行和列数据来自,定义视图时查询使用的表,并且是在使用视图时动态生成的。通俗的讲,视图只保存了查询的SQL逻辑,不保存查询的结果。 二、创建视图2.1语法create[orreplace]view视图名称......
  • 【Logstash】conf文件mysql多数据源导入elasticsearch配置说明
    #inputplugin输入插件,接收事件源input{jdbc{#定义类型_1type=>"type_1"#mysql的ip、端口以及用到的数据库名jdbc_connection_string=>"jdbc:mysql://localhost:3306/数据库名"#mysql用户名jd......
  • mysql常见错误
    1.C#在centos7的环境下面连接mysql数据库,报错Authenticationmethod'caching_sha2_password'failed.Eitheruseasecureconnection,specifytheserver'sRSApublickeywithServerRSAPublicKeyFile,orsetAllowPublicKeyRetrieval=True.DbType="MySql"......
  • MySQL DML 闪回之 binlog2sql
    一直以来,由于DBA的误操作或者业务bug,导致误删数据的情况都时有发生。当出现误删数据的情况时,从线上操作日志构造误删除的数据,或者DBA使用binlog和备份的方式恢复数据,不管哪种,都非常费时费力,并且容易出错。可能有的同学会说从从库恢复,但实时主从备份只能防止硬件问题,比如主库的......
  • mysql根据mysqlbinlog恢复找回被删除的数据库
    年初和朋友一起做了个项目,到现在还没收到钱呢,今天中午时候突然听说之前的数据库被攻击了,业务数据库全部被删除。看有没有什么办法恢复,要是恢复不了,肯定也别想拿钱了吧?READMEFORRECOVERYDATAAllyourdatabaseswasbackedup.Youneedtoemailusatxednydy@fexbox......
  • mysqldump 导出与导入
    导出数据库脚本(export.sh):#!/bin/bash#数据库连接信息DB_HOST="localhost"DB_USER="root"DB_PASSWORD="password"DB_NAME="your_database_name"#导出表结构和表数据到文件mysqldump-h$DB_HOST-u$DB_USER-p$DB_PASSWORD--no-data--skip-loc......