数据库三范式:数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的。同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。
第一范式(1NF)
关键:列不可再分
数据表的每个列的值域都是由原子值组成的,不能够再分割。
要求将列尽可能最小的分割,消除某个列存储多个值的冗余的行为。
第二范式(2NF)
关键:属性完全依赖于主键
数据表里的所有数据都要和该数据表的键(主键与候选键)有完全依赖关系。
要求唯一的主键,且不存在对主键的部分依赖,希望消除表中存在冗余(多余)的列。
第三范式(3NF)
关键:属性不依赖于其它非主属性,属性直接依赖于主键
所有非键属性都只和候选键有相关性,也就是说非键属性之间应该是独立无关的。
要求没有间接依赖于主键的列,消除表中冗余的列。
数据完整性
- 实体完整性 ——主键(primary key) / 唯一约束 / 唯一索引(unique)
- 引用完整性——外键(foreign key)
- 域完整性 ——数据类型及长度、非空约束(not null)、默认值约束(default)、检查约束(check)
数据一致性
事务:一系列对数据库进行读/写的操作。
事务的ACID特性:
原子性:事务作为一个整体被执行,不能拆分。
一致性:事务应确保数据库的状态从一个一致状态转变为另一个一致状态。
隔离性:多个事务并发执行时,一个事务的执行不应影响其他事务的执行。
持久性:已被提交的事务对数据库的修改应该永久保存在数据库中。