编辑推荐: |
本文介绍了关系数据库系统约束(四类),以及RDBMS
的并发控制,数据库恢复,E-R数据模型与E-R图,逻辑设计,函数依赖和关系模式的规范化。
本文来自博客园,由火龙果软件Alice编辑、推荐。 |
|
一、关系数据库系统概述
数据:是对事物描述的符号记录,它描述事物中人们所感兴趣的特征,它能被计算机识别、存储和处理
数据管理:是对数据的分类、组织、编码、存储、查询和维护等活动,是数据处理的中心环节
数据管理的目标:
减少数据的冗余度(数据的重复存储)
提高数据的共享性(用户/语言/现在未来)
提高数据的独立性(应用程序独立于数据结构变化
数据管理的三个阶段:人工 -> 文件 -> 数据库(60年代末)
数据库技术:数据管理的最新技术,研究数据库的结构、存储、管理和使用
DBS的组成:
1.数据库:以一定的组织形式(数据模型)存放在计算机存储设备上的相关数据的集合
2.数据库管理系统:管理数据库的软件
提供多种高级用户接口
查询处理和优化
数据的安全性控制
数据的完整性控制
并发控制
数据库恢复
数据目录(数据字典)管理
3.用户或应用程序
基于数据库的应用程序及用户
使用简单的终端命令会查询语言对数据库进行存取操作,即以查询性应用为主的用户
4.数据库管理员(DBA):进行数据库的规划、设计、协调、维护和管理的人员或集体
数据库系统的生存周期
1.数据库系统的规划
2.数据库设计
3.数据库的建立
4.数据库的运行、管理和维护
5.数据库的扩充和重构
开发数据库系统的有关人员
1.数据库管理员:进行数据库的规划、设计、协调、维护和管理
2.系统分析员:负责应用系统的需求分析和规范说明,与DBA和用户一起确定DBS的硬件平台和软件设置,参与DBS设计
3.程序设计员:负责设计和编制应用系统程序模块,并进行调试和安装
4.用户:参与可行性研究与需求分析
关系数据模型与关系模式
数据模型 -> 用来描述数据的一组概念和定义
三级数据模型
1.概念数据模型:面向客观世界,与DBMS无关(E-R)
2.逻辑数据模型:关系数据模型(面向用户和DBMS)
3.物理数据模型:与DBMS、OS和硬件有关
逻辑数据模型的三要素:
1.数据结构 -> 规定如何把基本的数据项组织成较大的数据单位
2.数据操作 -> 查询、更新(增、删、改);定义操作的含义、操作规则和实现操作的语言
3.数据约束 -> 是一组完整性规则的集合,定义了给定数据模型中数据及其联系所具有的制约和依赖规则
数据模式 -> 用数据模型对具体数据的描述
关系数据模型
1.关系数据库由关系组成(用二维表表示)
2.关系由元组组成(二维表的行),元组无序
3.元组由属性组成(二维表的列),属性无序
4.属性的取值范围 -- >属性域(原子数据的有限集)
5.数据间的关系用键(候选/主/主属性/外)隐含表示
关系中属性的个数 --> 关系的目
关系中元组的个数 --> 关系的基数
关系名+属性名 --> 关系模式
候选键:其属性或属性组的值能唯一决定其它所有属性的值,而它的任何真子集无此性质
1.主属性 ------- 包含在任何一个候选键中的属性
2.非主属性 ----- 不包含在任何一个候选集中的属性
主键(Primary Key(PK)):当一个关系能有多个候选键时,可选定一个来标识元组
外键(Foreign Key(FK)):(不是本关系的键)却引用了其它关系或本关系的键的属性或属性组
关系数据模型中表内不同元组间的联系用外键隐含地表示
关系数据模型中表间(实体间)的联系是用外键隐含地表示的
二、约束(四类)
1.域完整性 --> 属性域中的值/由语义决定可否为NULL
2.实体完整性 --> 每个关系都有一个主键、值唯一、≠NULL
3.引用完整性约束 --> 外键引用已有的主键值,或为NULL(非主属性作为主键)
4.一般化完整性约束 --> 由用户定义的、和数据的具体内容有关的约束
前三个称为隐含约束
后一个为显示约束(可用触发器、断言、过程)
属性为原子的 --> 固有约束
数据库中完整性约束检查,由DBMS实现或由用户负责
操作
查询是更新的基础
操作的对象及运算结果都是关系
关系代数完备集(σ,Π,∪, —, × )
σ:在关系中选出符号条件的元组(行)----> 水平分割(where)
Π:选取关系中感兴趣的列,可重排列顺序 -----> 对关系垂直分割(select)
×: 如:R x S :目为 r+s,基数为 基数R x 基数S
?:只保留一个关系中的公共属性
关系代数运算与SQL的QL的对应关系:
QL 的完整句法:
QL 的执行过程:
三、RDBMS 概述
1、层次结构:
应用层:应用程序与DBMS之间的接口,包括各种DB应用程序
语言翻译处理层:对数据库语言的各类语句进行语法分析、视图转换、授权检查、完整性检查、查询优化等
数据存取层:将上层的集合操作转换化为单元组操作,完成数据记录的存取、存取路径维护、并发控制、事务管理和数据库恢复等任务,涉及到数据字典的读与写、日志文件的读与写、加/解锁
数据存储层:负责文件的逻辑打开、关闭、读写页、读写缓冲等操作,并完成缓冲区管理、内外存交换和外存管理等任务
操作系统
DB
2、DBMS的进程结构
一个应用进程对应一个DBMS核心进程
单进程多线程结构
系统只创建一个DBMS进程
在该进程中:有常驻的公共服务线程、用户线程
各个线程能在逻辑上并行执行,共享DBMS的资源
3、DBMS与DBS的结构
分时系统环境下的集中式数据库系统结构
网络环境下的客户/服务器结构(C/S)
物理上分布、逻辑上集中的分布式数据库结构
三层结构(B/S结构): Browser ---> web 服务器 ---> 数据库服务器
4、RDBMS功能的实现技术
一、必备的用户接口 --> SQL/非过程化数据库语言
交互式SQL:不能编程,访问为主(DDL、QL、DML、DCL)
嵌入式SQL:将SQL嵌入其它程序设计语言中,可处理数据
二、数据目录(数据字典或系统目录)
有关数据库中数据的定义和描述信息是 ---> 元数据
元数据组成的若干表 --> 数据目录
数据目录的内容:
1.基表、视图的定义
2.存取路径(索引、散列)
3.用于查询优化的统计数据
4.数据目录的定义和描述等
数据目录作用、定义方法、使用范围:
1.数据目录对DBMS的运行必不可少,DBMS频繁访问
2.数据目录本身不能用SQL语句定义,由系统在初始化生成,由DBMS维护
3.DBMS一般不允许用户对之更新,只允许受控查询
4.数据目录中的基表的定义被删除,表中数据不能用
5.数据目录未定义,任何SQL语句都无法执行
三、查询处理与优化
1.数据库的存储结构
数据库的存储介质:多级
记录的存储结构
文件结构与存取路径:堆、散列、索引:动态(B+树)、静态(主索引,次索引)
2.查询优化的途径(可综合运用)
代数优化:改变基本操作的次序
依赖于存取路径的优化:结合存取路径(顺序扫描、索引、簇集)的分析考虑各操作的执行策略及选择原则
规则优化:仅根据启发式规则,选择执行的策略(先做选择、投影,后做连接操作等)
代价估算优化
四、并发控制
1)事务的概念
DBMS的最小执行单位,含有若干有序的操作
遵守ACID准则:原子性、一致性、隔离性、持久性
结束的方式:提交成功/失败 或 人为的故障
事务的定义和划分:(a)没有显式定义,则由DBMS按缺省规定自动划分事务
(b)用SQL语句显式控制一个事务的开始和终止
并发的概念
2)并发是不同用户(事务)同时访问同一数据的事件,是不同事务在时间上的交叉执行
3)事务并发执行可能带来的问题
不加控制 --> 三种冲突 -- > 三个问题 -- >
数据不一致
4)事务管理的任务 --> 保证事务的正常执行
满足ACID准则
在系统故障时应满足 --> 数据库恢复
在单事务执行时满足
在多事务并发执行时满足 -- > 并发控制
5)并发控制的正确性准则
调度的冲突可串行化(目前DBMS普遍采用)
采用锁机制:事务在操作前先对数据对象加锁
加锁时必须遵守的规则 -- > 加锁协议(相容矩阵)
几种有代表性的加锁协议:S锁(共享锁)、X锁(排它锁)、U锁(更新锁)
S锁:多个事务可封锁一个共享页;任何事务都不能修改该页; 通常是该页被读取完毕,S锁立即被释放
X锁:仅允许一个事务封锁此页;其他任何事务必须等到X锁被释放才能对该页进行访问;X锁一直到事务结束才能被释放
U锁:用来预定要对此页施加X锁,它允许其他事务读,但不允许再施加U锁或X锁;当被读取的页将要被更新时,则升级为X锁;U锁一直到事务结束时才能被释放
五、数据库恢复
1.故障的概念
起因:DBS 硬件、软件故障
现象:出现差错
后果:导致系统失效、数据丢失
DBS 的措施:增强系统可靠性
检查差错,将数据库恢复到某个一致状态
2.3种恢复技术
仅使用后备副本(脱机、增量转储、恢复用最近后备副本)
使用后备副本和日志文件(运行记录)
利用多个副本
六、E-R数据模型与E-R图(概念设计)
用E-R数据模型对现实世界抽象的结果用E-R图表示
三个抽象概念:实体、属性、联系
实体(矩形框):客观存在的且可以相互区分的事物
实体集:具有相同性质的实体的集合
联系(菱形框):实体集之间的相互关系(抽象表示)
联系的元数:与一个联系有关的实体集的个数
联系的类型:1:1、1:n、m:n
属性(椭圆):实体或联系所具有的特征
实体键(下画线):能够唯一标识实体集中某一实体的属性或属性组
七、逻辑设计
任务:
1.将概念结构转换为某个具体的DBMS所支持的逻辑结构
2.形成合理的全局逻辑结构(基表),并设计出外模式(视图)
3.对逻辑结构进行适当的调整和优化,使之在功能、完整性约束、可扩充性上满足用户需求
主要步骤:
概念设计结果 -- > 初始关系模式(E-R图转换成关系模式)
1.实体集
实体集 -- > 关系模式
实体属性 -- > 关系模式的属性 -- > 修改RDBMS不支持的类型
实体键 -- > 关系模式的键
2.联系
m : n 的联系集 -- > 用联系集的属性和两个实体集的键单独构成一个关系、新关系的键由两个实体集的键组合
而成、每个实体键是一个外键
1 :n 的联系集 -- > 联系集的属性归入 n 方关系模式中,并引用 1 方关系中的键,形成外键
1 : 1 的联系集 -- > 联系集的属性归入两个关系模式的任一个之中,并引入另一个关系的键,形成外键
多元联系集 -- > 联系集的属性与各关系模式的键构成新关系
3.将具有相同实体键的关系模式合并为一个关系模式
实例:
基于 E-R 图做逻辑设计,写出关系模式(单下划线表示主键,波浪线表示外键(此处用斜体表示 ,别问,问就是不知道咋表示波浪线))
两个实体对应两个模式,M : N联系对应一个模式
读者(借书证号,姓名,单位,职称)
图书(图书编号,分类号,书名,作者,出版单位,单价)
借阅(借书证号,图书编号,借阅日期)
八、函数依赖和关系模式的规范化
函数依赖
1.属性之间的约束关系 --> 数据依赖 --> 函数依赖
--> 多值依赖
-- > 连接依赖
2.函数依赖 -- > 一个或一组属性的值可以决定其它属性的值,是最基本的数据依赖
3.函数依赖的形式化定义 (X -> Y,表示 Y 函数依赖于
X)
4.函数依赖成立的条件
关系的任一可能指都满足(不仅是当前值)
5.平凡函数依赖与非平凡函数依赖
一个函数依赖 X -> Y 如果满足 Y ? X,则为非平凡函数依赖,否则称之为平凡函数依赖
6.完全函数依赖与部分函数依赖
若 Y 函数依赖于 X,但不依赖于 X 的任何子句 X',则称 Y 完全函数依赖于 X,否则称 Y
部分函数依赖于 X
7.传递函数依赖
若关系的三个属性子集 X、Y、Z 之间有:
X>Y,YX,Y>Z
则称 Z 传递函数依赖于 X
8.逻辑蕴涵
对一个关系模式存在的多个函数依赖,可以通过推理,从一组已知的函数依赖导出另一组函数依赖,两个函数依赖集之间的这种关系称为逻辑蕴涵
9.闭包
所有被一个已知函数依赖集 F 逻辑蕴涵的那些函数依赖的集合为 F 的闭包
10.Armstrong 公理
自反律
扩展律
传递律
候选键
求属性集闭包算法可用于推导候选键
定义:
在关系模式R(U,F)中,若 X ? U,Y ? X, 且满足 X -> U, Y?U
则称 X 为 R 的候选键
方法:
1.若属性 A 仅出现在所有函数依赖的 右 部
则它一定不包含在任何候选键中
2.若属性 A 仅出现在所有函数依赖的 左 部
则它一定包含在某个候选键中
3.若属性 A 既出现在函数依赖的 右 部,又出现在 左 部,则它可能包含在候选键中
4.在上述基础上求属性集闭包
未出现函数依赖集中的属性一定是主属性
关系模式的规范化
1.规范化 -- 使关系模式满足某种条件
2.范式NF(Normal Form) -- 关系模式满足的条件
3.有多级范式,级别越高,条件越严格(共5级,1NF、2NF、3NF(BCNF)
-- 模式设计、4NF、5NF -- 理论研究)
第一范式(1NF)
属性都是原子的关系模式满足第一范式
可记为 R ∈ 1NF(通常自动满足)
第二范式(2NF)
如果关系模式 R ∈ 1NF,且它的任一非主属性都完全函数依赖于任一候选键,则称 R 满足第二范式
记为 R ∈ 2NF
第三范式(3NF)
如果关系模式 R ∈ 2NF,且每一个非主属性不传递依赖于任一键
-> 各非主属性既不部分依赖也不传递依赖于键,记为 R ∈ 3NF
BCNF(Boyce-Codd范式)-- 改进的3NF
如果关系模式的所有非平凡函数依赖的决定子都含有键,记为 R ∈ BCNF
满足 BCNF 的关系可避免更新异常和数据冗余
若 R ∈ BCNF,则 R ∈ 3NF
4.关系模式的分解
模式分解
分解目的:使关系达到某级范式
分解准则:无损、保持依赖
|