三级模式
数据库设计过程
E-R 模型
实体与关系模式 1 对 1——至少有两种关系模式 1 对 多——职工与部门 多对多——学生与课程
键
超键与候选键的区别:超键存在冗余
范式
1NF 只包含原子值,每一个分量都是不可再分的数据项 2NF 当且仅当 R 是 1NF,且每一个非主属性完全依赖主键(不存在部分函数依赖) 3NF 当且仅当 R 是 2NF,且 E 中没有非主属性传递依赖于码(不存在部分函数依赖) BCNF E 中每个依赖关系必定包含 E 的某个候选关键字 存在问题:数据冗余,插入异常,删除异常,更新异常
并发控制
事务 把操作封装起来,看作一个整体,这些操作同时完成或同时失败。 可能出现的问题:
- 丢失更新
- 不可重复读
- 读“脏”数据
解决办法
- 一级封锁协议:事务 T 在修改数据 R 之前必须先对其加 X 锁,防止丢失修改
- 二级封锁协议:一级封锁协议加上事务 T 在修改数据 R 之前对其加 S 锁,读完后释放 S 锁,防止读“脏”数据
- 三级封锁协议:一级封锁协议加上事务 T 在修改数据 R 之前对其加 S 锁,事务结束才释放 S 锁,防止数据重复读
数据库安全
数据库备份与恢复
分类方式一
备份方式 | 特点 | 优点 | 缺点 |
---|---|---|---|
冷备份(静态备份) | 在数据库正常关闭的状态下将数据库的文件全部备份 | 速度快 | 不能按表或用户恢复 |
热备份(动态备份) | 在数据库正常运行的状态下将数据库的数据文件备份 | 可实现恢复某一时间点恢复 | 不能出错 |
分类方式二
完全备份 备份所有数据 差量备份 仅备份上次完全备份后变化的数据 增量备份 备份上传备份后变化的数据
- 静态海量转储 系统无运行事务时,转储全部数据库
- 动态海量转储 系统运行事务时,转储全部数据库
- 静态增量转储 系统无运行事务时,转储上次更新的数据
- 动态增量转储 系统运行事务时,转储上次更新的数据