事务正确执行的4要素:
事务是数据库中的执行基本单元
ACID分别是原子性/一致性/隔离性/持久性
原子性:一个事务要么全部执行成功,要么全部回滚;
一致性:在事务执行前后不会破坏数据的完整性;例如从账号A转到账号B ¥100,相应的A-100,B+100,总额不会变,事务前后保持一致;
隔离性:完成前不会被其他事务看到当前执行的事务;例如未提交前,其他事务查询到的balance仍是当前事务执行前的balance;
持久性:事务提交之后则永久性更新了数据,无法回滚;
例子:
start transaction;
update account set balance = balance - 20 where name = 'erika';
update account set balance = balance + 30 where name = 'erika';
commit;
隔离级别
范式
超关键字:一个实体集中可以唯一的标识实体的属性或者属性组,可能有多余的属性
候选关键字:一个实体集中可以唯一的标识实体的属性或者属性组,没有多余的属性
主关键字:当作表行唯一标识的候选关键字
函数依赖:A依赖B(AB为属性或者属性组,记B->A),则根据B可以决定A
完全依赖:B中没有多余的属性
部分依赖:B中有多余的属性
传递依赖:A依赖B,B依赖C,则A依赖C,B->A, C->B, 则C->A
1NF: 数据库表的每一项都是不可再分的原子数据项
2NF:首先1NF, 且非主属性完全依赖于主属性
3NF:首先2NF,且属性不依赖于其他非主属性
BCNF:首先1NF,且所有属性都不部分依赖于主属性也不传递依赖于主属性