大二的时候是学过mysql的,但是现在全忘记了,只记得好难~没办法向其他几门课一样系统整理,东拼西凑大致了解一下罢了。
不想学也得学 o(╥﹏╥)o
-
数据库事务
-
什么是数据库事务?
- 数据库事务(Database Transaction) 是一系列的数据库操作,是数据库应用的基本逻辑单位,事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。要么全部执行,要么不执行。
- 可以理解为有一堆数据库操作组合而成的原子操作
-
事务有哪些性质?
- ACID
- 原子性(atomicity)一个事务是一个不可分割的工作单位,事务中包括的诸操作要么全部执行,要么不执行。
- 一致性(consistency) 事务必须是使数据库从一个一致性状态变到另一个一致性状态。拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性。
- 隔离性(isolation) 一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
- 持久性(durability) 一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响
-
-
范式
-
什么是范式
- 数据库的设计范式是数据库设计所需要满足的规范。
- 只有理解数据库的设计范式,才能设计出高效率、优雅的数据库,否则可能会设计出错误的数据库。
-
范式越高越好吗
-
范式可以避免数据冗余,减少数据库的空间,减轻维护数据完整性的麻烦
-
但是操作困难,因为需要联系多个表才能得到所需要数据,而且范式越高性能就会越差。
-
一般在项目中,用得最多的也就是第三范式
-
-
三大范式
-
第一范式:
-
强调原子性,数据库的列不能再分
-
比如说:地址列:中国湖南长沙,这是可以拆分成三个列的(国家,省份,城市),因此不满足第一范式
-
-
第二范式:
- 1.满足第一范式
- 2.必须有主键
- 3.其他非主键的列完全依赖主键,而不能只依赖主键的一部分
-
第三范式:
- 1.满足第二范式
- 2.非主键的列必须直接依赖主键,而不能出现依赖传递的现象
- 比如说非主键A列依赖非主键B列,非主键B列依赖主键C列
-
-
3/18更新中。。。