一、数据库系统基本原理
数据库管理系统的主要功能:
- 数据定义功能
- 数据操纵功能
- 数据控制功能 --------数据的完整性检查、并发控制、数据的安全性保护、数据库的恢复
- 数据的组织、存储和管理功能
人工管理阶段的特点:
- 数据不保存
- 数据不具有独立性
- 数据不共享
- 只有程序的概念,没有文件的概念
文件管理阶段的特点:
- 数据冗余和不一致
- 数据独立性差
- 数据孤立
数据库系统阶段的特点:
- 数据结构化
- 数据的共享型高、冗余度低、易扩充。
- 数据独立性高
- 数据由DBMS统一管理和控制
数据模型:
- 概念模型——设计人员与用户
- 逻辑模型——设计人员与程序员
- 外部模型
- 内部模型—物理模型
数据模型三要素:
- 数据结构
- 数据操作
- 数据的完整性约束——实体完整性、操作完整性、用户定义的完整性
一个关系就是一个规范的二维表
数据库系统的三级结构:
- 用户级 -> 外模式 : 局部数据的逻辑结构和特征的描述(多个)
- 概念级 -> 概念模式 :全体数据的逻辑结构和特征的描述(一个)
- 物理级 ->内模式 : 数据物理结构和存储方式的描述(一个)
二级映射:
- 外模式/模式映射 和 模式/内模式映射
数据独立性:
- 物理独立性:模式/内模式映射实现
- 逻辑独立性:外模式/模式映射实现
二、关系模型基本理论
基本术语:
关系、域、候选键、主键、主属性、非主属性、全码、外键。
数据库完整性:
数据的正确性和相容性
完整性规则:
- 1.实体完整性规则
- 2.参照完整性规则 ->定义外键与主键之间的引用规则
- 3.用户定义完整性
MySQL约束
主键约束 :值唯一,不能为空值
唯一约束 :值唯一,可有一个且仅有一个空值
检查约束 : 检查输入的数据
外键约束 : 被定义为外键的字段,其取值只能为主表中引用字段的值或NULL值
外键约束的设定
触发器:
DML触发器,只能对INSERT、UPDAT、DELETE三种操作。
有AFTER 和BEFORE两种
关系代数:
基本操作:并、差、笛卡尔积、投影、选择
组合操作:交、连接、除、
三、事务管理与并发控制
事务的ACID特性:
- 原子性:事务所包含的操作,要么全做、要么全不做
- 一致性:事务处理前后,数据必须满足业务规则约束
- 隔离性:多个并发事务都是各自独立的
- 持久性:事务处理结束后,修改应该是永久的
事务模式:
- 自动提交事务模式
- 显式事务模式
- 隐性事务模式
并发执行可能引起的问题:
- 丢失更新
- 不可重复读
- 读脏数据
并发事务的异常情况:
- 丢失更新
- 读脏数据
- 不可重复读
- 幻影读
隔离级别:
隔离级别 | 丢失更新 | 读脏数据 | 不可重复读 | 幻影读 |
未提交读 | 是 | 是 | 是 | 是 |
提交读 | 否 | 否 | 是 | 是 |
可重复读 | 否 | 否 | 否 | 是 |
可串行读 | 否 | 否 | 否 | 否 |
锁:
基本锁:排他锁(X锁)、共享锁(S锁)
封锁协议:
一级封锁协议:
事务T在修改数据对象之前必须对其加X锁,直到事务结束。
- 防止丢失更新
二级封锁协议:
在一级协议基础上,加上事务T在读取数据对象R之前必须对其加S锁,读完后释放S锁
- 防止丢失更新
- 防止读脏数据
三级封锁协议:
在一级协议基础上,加上事务T在读取数据R之前必须先对其加S锁,读完后并不释放S锁,直到事务T结束才释放
- 防止丢失更新
- 防止读脏数据
- 防止不可重复读
四、数据库安全性
防止非法使用,
- 物理控制
- 法律保护
- 操作系统支持
- 网络管理
- DBMS实现
角色授权
GRANT <角色类型>[,<角色类型>] TO <用户> [IDENTIFIED BY <口令>]
<角色类型>::= Connect | Resource | DBA
取消命令
REVOKE <角色管理>[,<角色管理>] FROM <用户>
五、故障恢复
1.故障分类
- 事务故障 ->事务不能正常运行
- 系统故障 ->对未完成的事务UNDO,对已完成的事务REDO
- 介质故障 ->外存故障
2.恢复实现技术
基本原则:数据的冗余。
常用技术:数据备份和登记日志文件
数据备份:
海量存储、增量存储
静态转储、动态转储
3.恢复策略
六、关系模型规范化设计理论
可能存在的异常:
- 数据冗余
- 插入异常
- 删除异常
- 更新异常
抽象类型
- 继承:学生自动有 “人员” 的姓名、性别属性
- 聚集:学号、姓名、性别打包成 “学生” 实体
- 分类:张三、李四是不是 “学生” 实体
- 泛化:学生、教师都是 “人员” 超类的子类
冲突类型
- 命名冲突
- 语义冲突
- 结构冲突
- 属性冲突