数据库管理系统
概述
数据库系统(DataBase System,DBS): 是一个采用了数据库技术,有组织地、动态地存储大量相关联数据,从而方便多用户访问的计算机系统
数据库(DataBase,DB): 是统一管理的、长期储存在计算机内的,有组织的相关数据的集合
数据库管理系统(DataBase Management System,DBMS): 是数据库系统的核心软件,是由一组相互关联的数据集合和一组用以访问这些数据的软件组成。DBMS 通常分三类:
- 关系数据库系统(Relation DataBase System,RDBS)
- 面向对象的数据库系统(Object-Oriented DataBase Systems,OODBS)
- 对象关系数据库系统(Objective Relational DataBase System,ORDBS)
基本概念
- 主键(Primary Key):是一个数据库表中的唯一标识符,用于区分每一条记录。每个表只能有一个主键,它的值必须是唯一的,不能为NULL
- 索引(Index):索引是一种用于提高数据库查询效率的数据结构
- 外键(Foreign Key):是用来在两个表之间建立关联的字段。它指向另一个表中的主键,确保表之间的数据关系一致
- 复合键(Composite Key):由多个字段组合而成,用于唯一标识表中的一条记录。当一个字段不能唯一标识记录时,多个字段组合在一起可能实现这一点
- 闭包:设X是函数依赖集,被X逻辑蕴涵的函数依赖全体构成的集合,称为函数依赖集X的闭包。闭包本质上就是这些属性能直接或间接推出的属性集的集合
- 范式(Normalization):范式化是一种设计数据库结构的技术,目的是减少数据冗余并确保数据依赖性合理
发展阶段
graph LR
A[人工管理阶段] --> B[文件系统阶段]
B --> C[数据库系统阶段]
数据模型
数据模型由三部分组成:
- 数据结构:对系统静态特性进行描述
- 数据操作:对系统动态特性进行描述
- 完整性约束:一组完整性规则的集合
基本数据模型种类
层次模型、网状、关系、面向对象
-
层次模型:树形结构表示E和R的关系。
- 优点:通过指针实现,查询效率高
- 缺点:只能表示1:n的关系,实现和操作复杂
-
网状模型:有向图表示E和R的关系
- 优点:通过指针实现,查询效率高。m:n容易实现,但复杂,用户难掌握
- 缺点:DBA写程序复杂
-
关系模型:用表格结构表达实体集,用外键表示实体间联系
- 优点:建立在严格的数学概念基础上;结构简单、清晰、易懂;存取路径对用户透明,简化数据库开发
- 缺点 :由于存取路径透明,查询效率不如非关系模式
-
三种类型:
- 基本关系
- 查询表
- 视图表
三级模式两级映像
三级模式: 通过视图层、逻辑层和物理层三个层次上的抽象来降低用户屏蔽系统的复杂性,简化用户与系统的交互。从数据库管理系统的角度,数据库也分为外模式(用户模式、子模式)、概念模式(逻辑模式)和内模式(一个数据库只有一个内模式)
两级映像: 概念模式/内模式映像、外模式/概念模式映像。这两级映像保证了数据库中的数据具有较高的逻辑独立性和物理独立性
规范化理论
关系模式中出现的异常
- 数据冗余
- 增:插入异常
- 删:删除异常
- 改:修改异常
函数依赖
函数依赖是键概念的推广,键是一种特殊的函数依赖
-
部分函数依赖
-
传递函数依赖
-
完全函数依赖
-
自反性
-
增广性
-
传递性
-
并规则
-
分解规则
-
伪传递规则
范式
Info
1NF ⊃ 2 ⊃ 3 ⊃ BCNF
- 1NF:如果关系模式R的每个关系r的属性值都是不可分的原子值。
- 2NF:如果关系模式R满足1NF,且每个非主属性完全依赖于候选键
- 3NF:如果关系模式R满足1N(当 2NF 消除了非主属性对主码的传递函数依赖),且每个非主属性都不传递依赖于R的候选键
- BC范式(BCNF):如果关系模式R满足1NF,且每个属性都不传递依赖于R的候选键
反规范化理论
-
增加派生列
-
增加冗余列
-
重新组表
-
分割表
-
水平分割
-
垂直分割
数据库的控制功能
DBMS运行的基本单位是事务
- A(Atomicity):要么做,要么全都不做
- C(Consistency):从一个一致性状态变成另一个一致性状态
- I(Isolation):一个事务正在执行不能被干扰
- D(Durability):一旦提交,永久改变
并发控制
场景:多用户共享系统中,多事务对同一数据进行操作,导致并发
并发操作的问题
- 丢失更新:同时更新,后者更新破环前者
- 读过时的数据(不可重复读):
- 读脏数据:
封锁的类型
- 排他型封锁(X封锁):只能当前事务读取和修改数据。(最严格)
- 共享型封锁(S封锁):允许其他的事务可读,但不能修改(X的放松政策)
封锁协议
- 一级封锁协议:可防止丢失更新,可恢复
- 二级封锁协议
- 三级封锁协议
- 两段锁协议
一级封锁协议 | 二级封锁协议 | 三级封锁协议 | 两段锁协议 | |
可防止 | 丢失更新, 可恢复 | 丢失更新,读取脏数据 | 丢失更新,可重复读和读脏数据 | |
不能保证 | 可重复读和不读脏数据 | 可重复读 | ||
两阶段提交协议 |
-
加锁阶段和解锁阶段也称为扩展阶段和收缩阶段,是传统集中式数据库的两阶段提交协议
-
获取阶段和运行阶段是与开发数据库应用过程相关的阶段
-
表决阶段和执行阶段是分布式数据库的两阶段提交协议
-
封锁粒度小,则并发高,但开销大
-
封锁粒度大,则并发低,但开销小
死锁
封锁的方法固然可以有效防止数据的不一致性,但封锁本身会产生死锁问题。
防止封锁的办法:
- 预防法:顺序申请法
- 死锁的解除法:死锁检测程序和死锁解除程序
备份与恢复技术
数据库中的故障
- 事务内部故障
- 系统范围内的故障(软故障):需回滚事务,恢复到正常状态
- 介质故障(硬故障):外存(磁盘)故障
- 计算机病毒
数据备份
备份分类
-
静态备份(冷)和动态备份(热)
-
静态:备份期间不能操作,降低了数据库的可用性
-
动态:备份期间可以操作,备份和用户事务可并发执行,但不能保证后援副本的数据正确有效
-
全量和增量
日志文件
原则:”先写日志文件“原则,在写数据库的修改
数据恢复
原理:数据冗余
解决的是 ”数据库中的故障“中的问题
数据库的安全性
- DBMS自身安全技术:身份识别、视图、使用权限控制
- 数据库管理系统的功能
用户认证
- 口令(密码)认证
- 强身份认证:用户证书、智能卡、用户指纹识别
用户角色
- 登陆权限:可查、不能修改
- 资源管理权限:增删改、授权
- DBA权限:增删改、授权、备份、审计
数据授权
访问控制对象的数据粒度
- 库级-》表-〉行-》属性
访问存取控制原则
- 隔离原则:只取自己范围内的数据
- 控制原则:不能越权
数据库视图
也叫虚拟表。聚合信息、限定查询的行列、整合表
审计功能
事后监督手段
- 用户审计
- 系统审计
数据库的完整性
定义:数据的正确性和相容性
完整性约束条件
方法:保证完整性检查,设置约束条件
静态约束
- 定义:语义限制与数据逻辑间的逻辑约束
- 范围:数据类型、数据格式、取值范围、取值集合、空值、静态关系约束和静态元祖约束等
动态约束
- 定义:数据库变迁时的约束。数据库中数据的变化应遵守的规则称为数据动态约束
- 范围:修改列定义时的约束,修改列值时的约束、动态元祖约束
完整性控制
定义:发现用户的操作请求违背约束条件,或者采取的动作保证完整性
- 实体完整性:要求主码中的任意属性不能为空
- 参照完整性:一个表中含有另一表中的外键。
- 用户定义的完整性
- 触发器
实体和参照完整性约束适用于任何DBMS
立即执行约束:如果在一条语句自行完成后立即检查
延迟执行约束:在整个事务执行结束后再检查
完整性规则的五元组:DOACP
- D:约束作用的数据对象
- O:触发完整性检查的数据库操作
- A:数据对象必须满足的断言或语义约束
- C:选择A作用的数据对象值的谓词
- P:违反完整性规则时触发的过程
数据库性能
SQL的性能优化
SQL进程占整个服务器资源的60%-90%。
数据库的性能优化
跟踪运行任务的性能指标,动态调整服务器配置参数,不断迭代优化
查询优化
- 提升I/O效率:把数据、日志、索引放到不到的I/O设备三,增加读取速度
- 横向、纵向分割表
- 优化索引
- OR 分割语句,配合UNIION实现多个查询,UNION ALL的效率更高
- where 限制返回行数
- 少用DIStinct
- IN
大数据量查询优化
- 数据量小的数据通过程序常量的方式解决
- 采用物化视图、索引视图
- 适当增加数据冗余
- 针对数据的特点,采用特定的索引类型
设计流图
需求分析
需求分析: 即分析数据存储的要求,产出物有数据流图、数据字典、需求说明书。获得用户对系统的三个要求:信息要求、处理要求、系统要求
概念结构设计
概念结构设计: 就是设计E-R图,也即实体-联系图,与物理实现无关,就是说明有哪些实体,实体有哪些属性。工作步骤包括:选择局部应用、逐一设计分E-R图、E-R图合并
E-R 合并冲突
属性冲突:同一属性可能会存在于不同的分E-R图中,由于设计人员不同或是出发点不同,对属性的类型、取值范围、数据单位等可能会不一致。
命名冲突:相同意义的属性,在不同的分E-R图上有着不同的命名,或是名称相同的属性在不同的分E-R图中代表着不同的意义。
结构冲突:同一实体在不同的分E-R图中有不同的属性,同一对象在某一分E-R图中被抽象为实体而在另一分E-R图中又被抽象为属性。
逻辑结构设计
概念结构设计: 就是设计E-R图,也即实体-联系图,与物理实现无关,就是说明有哪些实体,实体有哪些属性。工作步骤包括:选择局部应用、逐一设计分E-R图、E-R图合并。
物理结构设计
物理设计: 根据生成的表等概念,生成物理数据库。工作步骤包括确定数据分布、存储结构和访问方式。