数据库

  1. 1. 三大范式
  2. 2. 索引类型
  3. 3. 事务中出现的问题
  • 隔离级别

  • 三大范式

    1. 第一范式1NF:数据库表中所有字段不可再分
    2. 第一范式2NF:在第一范式基础上,表中所有字段都完全依赖于主键,不存在部分依赖
    3. 第一范式2NF:在第二范式基础上,表中所有字段都直接依赖于主键,不存在间接依赖(传递依赖)

    索引类型

    • 按底层数据结构划分:
      • B-Tree索引
      • 哈希索引
      • R-Tree索引
      • 全文索引
    • 按数据存储方式划分
      • 聚簇索引
      • 非聚簇索引
    • 按应用类型划分
      • 主键索引
      • 普通索引
      • 唯一索引:用于保证列值唯一
      • 联合索引:多个列组成一个索引
      • 覆盖索引:组成索引的字段覆盖了需要查询的字段
      • 全文索引

    事务中出现的问题

    • 脏读:事务A先修改再回滚,事务B在事务A回滚之前读,读到的就是脏数据
    • 丢失修改:事务A和事务B同时读取并修改一个数据(例如A=A-1),其中一个事务的修改会被覆盖,从而丢失
    • 不可重复读:事务A多次读一个数据,事务B在中间修改删除数据导致事务A前后读取的数据不一致
    • 幻读:事务A多次读一个数据,事务B在中间插入数据导致事务A读到的数据变多

    隔离级别

    • 读取未提交:可能导致脏读、幻读、不可重复读
    • 读取已提交:可能导致幻读、不可重复读
    • 可重复读:可能导致幻读
    • 串行化: