一、三大范式
参考博客数据库设计三大范式
三大范式只是一般设计数据库的基本理念,可以建立冗余较小、结构合理的数据库。如果有特殊情况,当然要特殊对待,数据库设计最重要的是看需求跟性能
需求 > 性能 > 表结构
所以不能一味的去追求范式建立数据库
第一范式
每一列属性都是不可再分的属性值,确保每一列的原子性
每列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据
第二范式
每一列的数据只能与其中一列相关,即一行数据只做一件事。只要数据中出现数据重复,就要把表拆分开来
第三范式
数据不能存在传递关系,即每个属性都跟主键有直接关系而不是间接关系
二、事务的四大特性
参考博客数据库四大特性及数据库隔离级别
原子性(Atomicity)
原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。失败回滚的操作事务,将不能对事物有任何影响
一致性(Consistency)
一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态
隔离性(Isolation)
隔离性是指当多个用户并发访问数据库时,比如同时访问一张表,数据库每一个用户开启的事务,不能被其他事务所做的操作干扰,多个并发事务之间,应当相互隔离
持久性(Durability)
持久性是指事务的操作,一旦提交,对于数据库中数据的改变是永久性的,即使数据库发生故障也不能丢失已提交事务所完成的改变