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,数据库 ...
随机推荐
- 【Java多线程】AtomicLong和LongAdder
AtomicLong简要介绍 AtomicLong是作用是对长整形进行原子操作,显而易见,在java1.8中新加入了一个新的原子类LongAdder,该类也可以保证Long类型操作的原子性,相对于At ...
- checkbox选中并通过ajax传数组到后台接收
这次讲的是通过复选框,选中,点击提交,并将值chuan到后台controller.这个应用是比较广的,什么批量修改,批量添加,授权管理等等,都用到这个.其实这个还是挺简单的,并没有想象中的那么难,但我 ...
- 在Eclipse中运行Web项目Jsp网页时提示端口被占用的解决办法:Several ports (8005, 8888, 8009) required by Tomcat v9.0 Server at localhost are already in use.
问题: 在Eclipse中运行Web项目Jsp网页启动Tomcat时提示端口被占用: Several ports (8005, 8080, 8009) required by Tomcat v9.0 ...
- iOS更新惹怒高通:苹果太可耻!
之前高通同时在德国.中国发起对苹果的专利诉讼,而他们都赢得了最终的胜利,其中包含iPhone 7.8以及X系列机型,统统在禁售机型当中. 从法院公布的细节看,高通对iPhone禁售的理由是,iOS系统 ...
- PAT A1123 Is It a Complete AVL Tree (30 分)——AVL平衡二叉树,完全二叉树
An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child sub ...
- PAT A1018 Public Bike Management (30 分)——最小路径,溯源,二标尺,DFS
There is a public bike service in Hangzhou City which provides great convenience to the tourists fro ...
- 关于Nginx
访问 www.a.com 自动跳到 www.b.com(301跳转设置) server { listen 80; server_name www.a.com; rewrite ^/(.*)$ htt ...
- javascript-mqtt
js client使用paho-mqtt,官网地址:http://www.eclipse.org/paho/,参考http://www.eclipse.org/paho/clients/js/官网给出 ...
- 【Codeforces Round 464】Codeforces #265 (Div. 1)
模拟RD265 ABC三题,Rank58 Codeforces 464 A 题意:给定一个字符串,求比这个字符串字典序大并且和它长度相等的第一个不含有长度大于等于2的回文串的字符串. 思路:首先我们枚 ...
- C++11 并发指南四(<future> 详解一 std::promise 介绍)
前面两讲<C++11 并发指南二(std::thread 详解)>,<C++11 并发指南三(std::mutex 详解)>分别介绍了 std::thread 和 std::m ...