数据库知识(事务+三范式)
昨天看数据库方面的知识看了事务,没想到今天老师
上课讲spring与MyBatis整合中也讲到了数据库事务方
面的知识,也就是说事务是比较重要的一个知识,因
此有必要来加深一下印象。
一、三大特性:ACID
A:原子性 事务是最小的单元,不可再分。
C:一致性 事务必须保持多天dml语言同时
成功或者失败。
I:隔离性 事务A与事务B之间互相隔离。
D:持久性 持久性说的是事务的最终数据
必须存到硬盘文件中,事务才算成功的结束。
二、事物之间相互影响种类:
1.脏读:一个事务读取了另一个事务未提交的数据。
2.不可重复读:就是在一个事务范围内,两次相同的
查询会返回两个不同的数据,是因为在此间隔内有其他事务对数据进行了修改。
三、sql server 中的数据库的事务隔离级别
未提交读:在读取数据时不会加任何锁,也不会进行检测,可能会
读到没有提交的数据。
已提交读:只读取提交的数据等待其他事物释放排他锁,读数据的
共享锁在读操作完成后会立即释放。这个隔离级别是sql server默认的隔离级别。
可重复读:像已提交读一样,但共享锁会保持到事物结束才会释放。
可串行读:类似于可重复读,但锁不仅会锁定所查询的数据,也会
锁定所查询的范围,这样就阻止了新数据插入所查询的范围。
三、总结:
事务的(ACID)特性是由关系数据库管理系统(RDBMS,数据库系统)来
实现的。数据库管理系统采用日志来保证事务的原子性、一致性和持久性。日
志记录了事务对数据库所做的更新,如果某个事务在执行过程中发生错误,就
可以根据日志,撤销事务对数据库已做的更新,使数据库退回到执行事务前的
初始状态。 数据库管理系统采用锁机制来实现事务的隔离性。当多个事务同
时更新数据库中相同的数据时,只允许持有锁的事务能更新该数据,其他事务
必须等待,直到前一个事务释放了锁,其他事务才有机会更新该数据。
三大范式
一、定义:
第一范式:任何一张表都应该有主键,并且每一个字段原子性不可再分。
第二范式:建立在第一范式的基础上,所有非主键字段完全依赖主键,不
能产生部分依赖。(多对多,三张表,关系表两个外键)
第三范式:建立在第二范式的基础之上,所有非主键字段直接依赖主键,不
能产生传递依赖。(一对多,两张表,多的表加外键)
总结:在实际开发中,以满足客户需求为主,有的时候会拿冗余换执行速度。

浙公网安备 33010602011771号