数据库原理

数据库原理

DBMS:数据库管理系统

DBA:数据库管理员

E-R模型:实体-联系数据模型

三级模式结构:外模式$\rightarrow$模式$\rightarrow$内模式

完整性约束:

  • 实体完整性(主键不为空)
  • 参照完整性
  • 用户自定义完整性

SQL:结构化查询语言

数据访问方式:

  • 顺序访问
  • 索引

索引特点:

  • 小表使用索引,性能不会提高,反而增大开销
  • 查询返回的数据很少时,索引可以优化查询,若返回很多数据,反而会增大系统开销
  • 索引提高了数据返回速度,但使得数据更新操作变慢
  • 索引需要占用额外数据库存储空间
  • 索引更新需要较大开销,不应频繁更新索引
  • 不应将索引与表存储在同一驱动器上,容易造成冲突

关系规范化:

  • 1NF(属性不可再分)
  • 2NF(仅传递依赖)
  • 3NF(无传递依赖)
  • BCNF(完全依赖)

事务:将一组数据库操作打包起来形成一个逻辑独立的工作单元,这个工作单元不可分割,其中包含的数据库操作要么全部发生,要么都不发生。

事务四大特性:

  • 原子性
  • 一致性
  • 隔离性
  • 持久性

建立冗余数据的方式:

  • 数据转储
  • 日志文件

并发控制四类问题:

  • 丢失修改(脏写)
  • 读“脏”数据(脏读)
  • 不可重复读
  • 幻读

事务隔离级别:

  • 读未提交(脏读、不可重复读、幻读)
  • 读已提交(不可重复读、幻读)
  • 可重复读(幻读)
  • 可串行化

封锁技术:

  • 排他锁(X 锁、写锁)
  • 共享锁(S 锁、读锁)

封锁协议:

  • 一级封锁协议(脏读、不可重复读、幻读):修改数据 R 前加 X 锁,事务结束后释放

  • 二级封锁协议(不可重复读、幻读):在一级封锁协议的基础上,读取数据 R 前加 S 锁,读后释放

  • 三级封锁协议(幻读):在一级封锁协议的基础上,读取数据 R 前加 S 锁,事务结束后释放

  • 两段锁协议(可串行化)

    • 任何读写操作前都需先加锁
    • 释放任意锁后,事务不得再加锁