范式

范式优点:消除数据冗余
范式缺点:降低查询效率

候选键:一个或者多个属性的组合,能够唯一确定实体的一个实例。
主键:
可选键:候选键中,没有选中的其他键,可以称之为可选键。

第一范式(1NF)

确保表中的字段必须具有原子性。

第二范式(2NF)

满足表中的每一行记录可以唯一标识,而且所有非主键字段必须完全依赖主键,不能至依赖主键的一部分。
违反会出现的问题:数据冗余、插入异常、删除异常、更新异常

第三范式(3NF)

确保表中的非主键字段和主键字段直接相关,即要求表中的所有非主键字段不能依赖于其他非主键字段。

反范式化

正常都会增加少量冗余增加查询性能,空间换时间。

巴斯-科德范式(BCNF)

若一个关系达到了第三范式,并且只有一个候选键,或者它的候选键都是单属性

第四范式(4NF)

多值依赖:属性之间的一对多关系
函数依赖:单值依赖,函数一进一出
平凡的多值依赖:整张表就是一组一对多的关系
非平凡的多值依赖:A对应多个B,A对应多个C
第四范式就是消除函数依赖和非平凡的多值依赖

第五范式

消除不是由候选键所蕴含的连接依赖。如果关系模式R中的每一个了解依赖均由R的候选键所隐含,则满足第五范式。可以理解为无损连接问题,这个范式基本没有实际意义。

域键范式

终极范式,只存在理论可能,没有数据冗余。

事务概述

MySQL中,InnoDB支持事务。

ACID

原子性(atomicity)
一致性(consistency)
隔离性(isolation)
持久性(durability)

事务状态

active
partially committed
failed
aborted

事务

显示事务:
1.使用关键字:start transactionbegin,后面可以跟修饰符:read only/ read write(默认)/ with consistent snapshot
2.savepoint(保存点)
隐式事务:
1.开启自动提交。set autocommit = true;
2.查看是否自动提交。show variables like 'autocommit';
提交:commit;
回滚:rollback;

事务隔离级别

事务并发问题
脏读:事务A读到了事务B未提交的数据。不符合一致性
不可重复读:事务A在事务内读取的结果不一致。不符合隔离性。
幻读:事务A读取到事务B提交的新增数据。不符合隔离性。
事务隔离级别:

- 脏读 不可重复读 幻读
读未提交 可能 可能 可能
读已提交 可能 可能
可重复读(REPEATABLE-READ)(默认) 可能
串行化

Redo和Undo

锁机制

你可能感兴趣的:(范式)