MySQL基础知识——范式与事务
几个概念
在说范式之前,要先了解几个概念:
关系模式
关系模式的5要素:R(U,D,DOM,F)
用下面这个category表来理解上面这个式子
mysql> desc student;
+------------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+----------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | char(10) | NO | | NULL | |
| department | char(10) | NO | | NULL | |
| grade | int(11) | NO | | NULL | |
+------------+----------+------+-----+---------+-------+
1、R-关系,可以理解为student表名。
2、U-属性组,可以理解为student表中所有字段组成的一个集合。
3、D-域,可以理解为student表中的某一个字段,比如说id,或者说name。
4、DOM-域的映像集合,可以理解为id或者name字段的取值范围(可以取哪些值)。
5、F-属性间数据的依赖关系,可以理解为:通过id(学号),可以计算出grade(年级)和department(院系),此时的依赖称为函数依赖,因为通过id,通过一个func(id)是可以计算出grade和department。
码
某一属性列K,经过某种运算(函数依赖func()),可以计算出另外一个属性列U,此时,称K为关系模型R的候选码。
比如,上面的例子,通过id计算出grade和department。那么id就是student表的候选码。
同样,通过id和name也可以找出department和grade,所以(id、name)也是student的码。
范式
事务
事务的四个特性,分别是ACID。
A(atomicity)原子性:表示事务内的所有操作是一个整体,要么全部成功,要么全部失败。事务中多个操作,只有当所有操作都成功完成,没有出错误,那么事务才认为是成功的;否则只要有一个操作失败了,就会认为事务失败了,同时,会将该事务中已经成功执行的操作进行回滚。
C(Consistency)一致性:表示一个事务内有一个操作失败时,所有的更改过的数据都必须回滚到修改前的状态。事务执行的结果必须是使数据库从一个一致性状态变为另一个一致性状态。一致性状态可以这样理解,一个事务包含两个操作,如果在事务完成后,数据库只有其中一个操作的结果生效,而另外一个操作执行后却没有生效(数据库中没有改变),此时就是不一致状态。如果数据库保存了两个操作的结果,那么就处于一致性状态。
I(isolation)隔离性:事务查看数据时,数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另外一个事务修改他之后的状态,而不会是查看到中间状态的数据一个事务的执行不能被其他事务干扰。
D(durability)持续性:事务一旦提交之后,那么事务对数据库的改变就应该是永久的(持久化到硬盘中,写入到硬盘中)。
MySQL基础知识——范式与事务的更多相关文章
- mysql基础知识语法汇总整理(二)
mysql基础知识语法汇总整理(一) insert /*insert*/ insert into 表名(字段列表) values(值列表); --蠕虫复制 (优点:快速复制数据,测试服务器压力) in ...
- mysql基础知识语法汇总整理(一)
mysql基础知识语法汇总整理(二) 连接数据库操作 /*连接mysql*/ mysql -h 地址 -P 端口 -u 用户名 -p 密码 例如: mysql -u root -p **** /* ...
- MySQL 基础知识梳理
MySQL 的安装方式有多种,但是对于不同场景,会有最适合该场景的 MySQL 安装方式,下面就介绍一下 MySQL 常见的安装方法,包括 rpm 安装,yum 安装,通用二进制安装以及源码编译安装, ...
- mysql基础知识大全
前言:本文主要为mysql基础知识的大总结,mysql的基础知识很多,这里作简单概括性的介绍,具体的细节还是需要自行搜索.当然本文还有很多遗漏的地方,后续会慢慢补充完善. 数据库和数据库软件 数据库是 ...
- MySQL基础知识:启动管理和账号管理
整理.记录常用的MySQL基础知识:时间久了,很多就忘记了. 操作系统环境为MacOS Catalina, MySQL版本为: 8.0.13 MySQL Community Server - GPL. ...
- MySQL基础知识:创建MySQL数据库和表
虚构一个微型在线书店的数据库和数据,作为后续MySQL脚本的执行源,方便后续MySQL和SQL的练习. 在虚构这个库的过程中,主要涉及的是如何使用命令行管理 MySQL数据库对象:数据库.表.索引.外 ...
- MySQL基础知识:Character Set和Collation
A character set is a set of symbols and encodings. A collation is a set of rules for comparing chara ...
- Mysql学习总结(4)——MySql基础知识、存储引擎与常用数据类型
1.基础知识 1.1.数据库概述 简单地说:数据库(Database或DB)是存储.管理数据的容器: 严格地说:数据库是"按照某种数据结构对数据进行组织.存储和管理的容器". 总结 ...
- 一、MySQL基础知识
一.背景介绍 我们每天都在访问各种网站.APP,如微信.QQ.抖音,今日头条等,这些东西上面都存在大量的信息,这些信息都需要有地方存储,存储在哪里呢?数据库. 所有我们需要开发一个网站.APP,数据库 ...
随机推荐
- UOJ 【UR #5】怎样跑得更快
[UOJ#62]怎样跑得更快 题面 这个题让人有高斯消元的冲动,但肯定是不行的. 这个题算是莫比乌斯反演的一个非常巧妙的应用(不看题解不会做). 套路1: 因为\(b(i)\)能表达成一系列\(x(i ...
- 深入浅出的webpack4构建工具--webpack4+vue+vuex+mock模拟后台数据(十九)
mock的官网文档 mock官网 关于mockjs的优点,官网这样描述它:1)可以前后端分离.2)增加单元测试的真实性(通过随机数据,模拟各种场景).3)开发无侵入(不需要修改既有代码,就可以拦截 A ...
- B-Tree外存数据结构 _(外存储器—磁盘)第一部分
1.外存储器—磁盘 计算机存储设备一般分为两种:内存储器(main memory)和外存储器(external memory).内存存取速度快,但容量小,价格昂贵,而且不能长期保存数据(在不通电情况下 ...
- 分布式计算(二)使用Sqoop实现MySQL与HDFS数据迁移
近期接触了一个需求,业务背景是需要将关系型数据库的数据传输至HDFS进行计算,计算完成后再将计算结果传输回关系型数据库.听到这个背景,脑海中就蹦出了Sqoop迁移工具,可以非常完美的支持上述场景. 当 ...
- java 迭代器遍历List Set Map
Iterator接口: 所有实现了Collection接口的容器类都有一个iterator方法用以返回一个实现Iterator接口的对象 Iterator对象称作为迭代器,用以方便的对容器内元素的遍历 ...
- <转>jmeter(十五)函数助手
jmeter作为一个开源的性能测试工具,作用还是蛮强大的,找到一篇对jmeter中函数助手解释蛮详细的一篇博客,感觉不错,转载过来,希望对大家有所帮助. 由于时间和版本问题,其中有些内容和排版我做了修 ...
- Java多线程编程模式实战指南一:Active Object模式(上)
Active Object模式简介 Active Object模式是一种异步编程模式.它通过对方法的调用与方法的执行进行解耦来提高并发性.若以任务的概念来说,Active Object模式的核心则是它 ...
- samba服务,连接远程开发机
到了新环境,自己的开发机需要通过跳板机连,每次登录跳板机都需要RSA动态密码.一开始让我迷惑的是,这有个跳板机,那怎么让本地代码和开发机代码同步呢.以前公司的情况,一个是不需要跳板机,在phpstor ...
- LOJ2537 PKUWC2018 Minimax 树形DP、线段树合并
传送门 题意:自己去看 首先可以知道,每一个点都有几率被选到,所以$i$与$V_i$的关系是确定了的. 所以我们只需要考虑每一个值的取到的概率. 很容易设计出一个$DP$:设$f_{i,j}$为在第$ ...
- 学习Angularjs向数据库添加数据
今天学习angularjs向数据库添加数据. 学习此篇,得从以往几篇开始,因为那还有创建数据表等演示. 现在来创建一个添加的存储过程: SET ANSI_NULLS ON GO SET QUOTED_ ...