数据库知识(事务+三范式)

昨天看数据库方面的知识看了事务,没想到今天老师

上课讲spring与MyBatis整合中也讲到了数据库事务方

面的知识,也就是说事务是比较重要的一个知识,因

此有必要来加深一下印象。

一、三大特性:ACID

A:原子性 事务是最小的单元,不可再分。

C:一致性 事务必须保持多天dml语言同时

成功或者失败。

I:隔离性 事务A与事务B之间互相隔离。

D:持久性 持久性说的是事务的最终数据

必须存到硬盘文件中,事务才算成功的结束。

二、事物之间相互影响种类:

1.脏读:一个事务读取了另一个事务未提交的数据。

2.不可重复读:就是在一个事务范围内,两次相同的

查询会返回两个不同的数据,是因为在此间隔内有其他事务对数据进行了修改。

三、sql server 中的数据库的事务隔离级别

未提交读:在读取数据时不会加任何锁,也不会进行检测,可能会

读到没有提交的数据。

已提交读:只读取提交的数据等待其他事物释放排他锁,读数据的

共享锁在读操作完成后会立即释放。这个隔离级别是sql server默认的隔离级别。

可重复读:像已提交读一样,但共享锁会保持到事物结束才会释放。
可串行读:类似于可重复读,但锁不仅会锁定所查询的数据,也会

锁定所查询的范围,这样就阻止了新数据插入所查询的范围。

三、总结:

事务的(ACID)特性是由关系数据库管理系统(RDBMS,数据库系统)来

实现的。数据库管理系统采用日志来保证事务的原子性、一致性和持久性。日

志记录了事务对数据库所做的更新,如果某个事务在执行过程中发生错误,就

可以根据日志,撤销事务对数据库已做的更新,使数据库退回到执行事务前的

初始状态。 数据库管理系统采用锁机制来实现事务的隔离性。当多个事务同

时更新数据库中相同的数据时,只允许持有锁的事务能更新该数据,其他事务

必须等待,直到前一个事务释放了锁,其他事务才有机会更新该数据。

三大范式

一、定义:

第一范式:任何一张表都应该有主键,并且每一个字段原子性不可再分。

第二范式:建立在第一范式的基础上,所有非主键字段完全依赖主键,不

能产生部分依赖。(多对多,三张表,关系表两个外键)

第三范式:建立在第二范式的基础之上,所有非主键字段直接依赖主键,不

能产生传递依赖。(一对多,两张表,多的表加外键)

总结:在实际开发中,以满足客户需求为主,有的时候会拿冗余换执行速度。

 

 

 

posted @ 2022-05-17 17:46  云上未来  阅读(67)  评论(0)    收藏  举报