数据库
一.范式
第一范式(1NF):
属性不可分割
eg1.
学号, 课程 -> 学院, 院长, 成绩
第二范式(2NF)
每个非主属性完全函数依赖于键码(主属性).
eg2.(从eg1.分解可得)
学号-> 学院
学院-> 院长
学号,课程->成绩
第三范式(3NF)
非主属性不传递函数依赖与主属性
eg3.
eg1.中存在: 学号 -> 学院 -> 院长
需进行拆分如eg2.
二.事务
数据库事务是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位.
事务性质: ACID
1.原子性(Atomicity):事务被视为不可分割的最小单元,所有操作要么全部执行,要么全部失败回滚,回滚可以用日志来实现,日志记录着所执行的修改操作,在回滚时反向执行这些修改即可.
2.一致性(Consistency): 几个并行执行的事务,其执行结果必须与按照某一顺序串行执行的结果相一致.
3.隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务不可见.
4.持久性(Durability):对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障.(可以用备份恢复)
事务的ACID特性是由关系数据库系统(DBMS)来实现的,DBMS采用日志来保证事务的,原子性,
一致性,和持久性.
对于事务的隔离性,采用锁机制来实现.当多个事务同时更新数据库中相同的数据时,只允许持有锁的事务更新该数据,其他事务必须等待.
参考:数据库事务
https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E5%BA%93%E4%BA%8B%E5%8A%A1/9744607