数据库理论
数据库设计中一共有6个范式,一般需要遵守3范式即可
第一范式(1NF):强调的是原子性,数据库表的每一列都是不可分割的原子数据项,即列不可拆分
第二范式(2NF):建立在第一范式的基础上,要求数据库表中的每个实例或记录必须可以被唯一地区分,即唯一标识。(1.表必须有一个主键;2.未包含在主键中的列必须完全依赖于主键)
第三范式(3NF):建立在第二范式的基础上,任何非主属性不依赖于其它非主属性,即引用主键(非主键列必须直接依赖于主键,不能存在传递依赖,即不能存在非主键列A依赖于非主键列B,非主键B依赖于主键的情况)
E-R模型
E表示entry,实体,设计实体就像定义一个类一样,指定从哪些方面描述对象,一个实体转换为数据库中的一个表
R表示relationship,关系,关系描述两个实体之间的对应规则,关系的类型包括包括一对一、一对多、多对多
关系也是一种数据,需要通过一个字段存储在表中
什么是事务:
事务是并发控制的基本单位,所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位
事务四大特性(简称ACID)
原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行。
一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致。
隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的。
持久性(Durability):对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障。
表的引擎类型必须是innodb类型才可以使用事务,这是mysql表的默认引擎。
事务的应用(对表进行修改的时候):insert, update,delete
开启事务:begin
提交事务commit
回滚事务:放弃缓存中变更的数据rollback,
一旦你提交以后,以后所有的操作都会立即影响源数据库了,也就是相当于结束此次事务了。如果想不被影响的话,需要再开启事务。
查找数据比较慢的时候的优化处理:
设计要合理,优化方案是索引,能加快数据库的查询操作
大批量更新数据的时候,需要手动开启事务,提高更新效率,更加安全