数据库原理
数据库原理
DBMS:数据库管理系统
DBA:数据库管理员
E-R模型:实体-联系数据模型
三级模式结构:外模式$\rightarrow$模式$\rightarrow$内模式
完整性约束:
- 实体完整性(主键不为空)
- 参照完整性
- 用户自定义完整性
SQL:结构化查询语言
数据访问方式:
- 顺序访问
- 索引
索引特点:
- 小表使用索引,性能不会提高,反而增大开销
- 查询返回的数据很少时,索引可以优化查询,若返回很多数据,反而会增大系统开销
- 索引提高了数据返回速度,但使得数据更新操作变慢
- 索引需要占用额外数据库存储空间
- 索引更新需要较大开销,不应频繁更新索引
- 不应将索引与表存储在同一驱动器上,容易造成冲突
关系规范化:
- 1NF(属性不可再分)
- 2NF(仅传递依赖)
- 3NF(无传递依赖)
- BCNF(完全依赖)
事务:将一组数据库操作打包起来形成一个逻辑独立的工作单元,这个工作单元不可分割,其中包含的数据库操作要么全部发生,要么都不发生。
事务四大特性:
- 原子性
- 一致性
- 隔离性
- 持久性
建立冗余数据的方式:
- 数据转储
- 日志文件
并发控制四类问题:
- 丢失修改(脏写)
- 读“脏”数据(脏读)
- 不可重复读
- 幻读
事务隔离级别:
- 读未提交(脏读、不可重复读、幻读)
- 读已提交(不可重复读、幻读)
- 可重复读(幻读)
- 可串行化
封锁技术:
- 排他锁(X 锁、写锁)
- 共享锁(S 锁、读锁)
封锁协议:
一级封锁协议(脏读、不可重复读、幻读):修改数据 R 前加 X 锁,事务结束后释放
二级封锁协议(不可重复读、幻读):在一级封锁协议的基础上,读取数据 R 前加 S 锁,读后释放
三级封锁协议(幻读):在一级封锁协议的基础上,读取数据 R 前加 S 锁,事务结束后释放
两段锁协议(可串行化)
- 任何读写操作前都需先加锁
- 释放任意锁后,事务不得再加锁