关系数据库和mysql

一.  数据库的三个设计范式,

第一范式:当关系模式R的所有属性都不能在分解为更基本的数据单位时,称R是满足第一范式的,简记为1NF。满足第一范式是关系模式规范化的最低要

求,否则,将有很多基本操作在这样的关系模式中实现不了。

第二范式:如果关系模式R满足第一范式,并且R得所有非主属性都完全依赖于R的每一个候选关键属性,称R满足第二范式,简记为2NF。

第三范式:设R是一个满足第一范式条件的关系模式,X是R的任意属性集,如果X非传递依赖于R的任意一个候选关键字,称R满足第三范式,简记为3NF.

注:关系实质上是一张二维表,其中每一行是一个元组,每一列是一个属性

二. 事物

事物特性acid:

1、原子性:原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。

2、一致性:事务必须使数据库从一个一致性状态变换到另外一个一致性状态。比如转账:转账前aaa+bbb=2000;转账后aaa+bbb=2000;

3、隔离性:事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。

4、持久性:指一个事务一旦被提交,它对数据库中数据的改变就是永久性的。

事物的隔离级别:

1、如果不考虑事务的隔离性,会出现什么问题?

脏读:一个线程中的事务读到了另一个线程中事务未提交的数据

不可重复读:一个线程中的事务读到了另一个线程中提交的update的数据,前后两次读到的内容不一致。

虚读:一个线程中的事务读到了另一个线程中提交的insert或delete的数据,前后读到的记录条数不一致。

2、事务的隔离级别:

READ  UNCOMMITTED    脏读、不可重复读、虚读都有可能发生

READ  COMMITTED  能避免脏读;不可重复读、虚读有可能发生(Oracle默认)

REPEATABLE  READ  能避免脏读、不可重复读;虚读有可能发生(MySQL默认)

SERIALIZABLE  能避免脏读、不可重复读、虚读的发生

以上隔离级别:从上到下,级别越高,性能越低,数据也越安全。

MySQL:

查看当前数据库的隔离级别:

select  @@tx_isolation;

更改隔离级别:(开启事务之前更改)

set  transaction  isolation  level  四个级别之一

你可能感兴趣的:(关系数据库和mysql)