数据库系统学习笔记
@
第一讲 初步认识数据库系统
101 什么是数据库
- 起源于规范化“表”的处理
- 表里有什么
理解--区分--命名--表达 - 表的组成
班级 | 课程 | 教师 |
---|---|---|
1123 | 数据库 | 李四 |
1124 | 计算机 | 李五 |
表名 | ||
行/元组/记录 | ||
列/字段/数据项/属性 |
数据库:相互之间有关联关系的表的集合
102 什么是数据库系统
-
五个要素
数据库DB 数据库管理系统DBMS 数据库应用DBAP 数据库管理员DBA 计算机基本系统
103 什么是数据库管理系统(用户角度)
- 数据库定义
数据库定义语言:DDL
定义表的格式 - 数据库操纵
数据库操纵语言:DML
对数据库进行增删改查等 - 数据库控制
数据库控制语言:DCL
使用DCL描述控制数据库权限等 - 数据库维护
由DBA(数据库管理员)
综合起来作为数据库语言:SQL
一条数据库语言可以相当于多条高级语言
嵌入式数据库语言:可以嵌入高级语言
104 什么是数据库管理系统(系统角度)
- 功能
(1)数据库语言
(2)数据库系统 - 为完成DB管理,在后台运行这一系列程序
语言编译器
查询优化与查询实现
数据库存取与索引
通信控制
事务管理
。。。
第二讲 数据库系统的标准结构
201 数据库系统的标准结构
-
数据库系统抽象
三个层次
(1)外部层次(用户层次)
某一用户能够看到处理的数据
(2)概念层次(逻辑层次)
从全局角度理解数据
(3)内部层次(物理层次)
存储在介质上的数据 -
数据/视图 与 模式
数据:某一表示形式表现出来的数据
模式:对数据库进行的一种结构性描述 -
三级模式/三级视图
(1)外模式
用户看到的结构描述
(2)概念模式
全局性的概念描述
(3)内模式
存储介质上的结构描述 -
两层映像
E-C映像:外模式—>概念模式,便于用户观察使用
C-I映像 : 概念模式->内模式,便于计算机存储处理 -
两个独立性
不会因为系统数据存储结构与数据逻辑结构的变化而影响应用程序
(1)逻辑数据独立性:当概念模式改变时,可以不改变外部模式
(2)物理数据独立性:当内模式改变时,可以不改变概念模式,从而不改变外部模式
202 什么是数据模型
- 模式 与数据的结构:数据模型
规定模式描述方式的模型
包括:数据结构,操作和约束
模式:描述数据的结构
数据模型:描述模式的结构(数据的结构的结构) - (1) 关系模型:表(第二代)
(2)层次模型:树 (第一代)
(3)网状模式:图 (第一代)
203 数据库系统演变与发展
- 四阶段:
(1)探索阶段:研制成功格式文件系统
(2)数据库技术确立阶段:三大数据库相继提出并进行深入研究
(3)成熟阶段:提出了标准化数据库系统,DB系统快速发展,应用普及
(4)数据库技术深入发展:逐步理论化,理论不断完善 - (1)由文件系统到数据库:
文件系统:数据与程序密切结合,不用考虑存储物理细节,但共享性差,冗余度高,不一致性高
数据库系统:由DBMS统一存取,统一的控制功能,整体数据结构化
(2)由层次,网状到关系数据库
层次网状:复杂的指针系统
关系数据库:不依赖于路径信息或过程信息
支持集合操作
数据库重大发展
- 关系的第一范式:数据项的不可再分性
- 对象--关系数据库
以对象来封装需分解的数据项 - 面向对象数据库
支持复杂数据类型
支持面向对象一些特性 - 多种多样数据库到多数据库开放式互联
ODBC JDBC
开放数据库接口 - 新型数据库
第三讲 关系模型概念
301 什么是关系模型
-
一个关系一个Table
关系模型处理Table -
关系模型三要素
(1)基本结构 :关系/Table
(2) 基本操作交,并,差,广义积,选择,投影,连接,除
(3)完整性约束
实体完整性,参照完整性,用户自定完整性 -
关系运算: 关系代数和关系演算:关系演算:元组演算和域演算
R:F表示选择运算 R%表示投影运算 -
元组运算
-
域演算
302 什么是关系
-
列 的取值范围 域
-
定义元组(行),所有可能的元组(笛卡尔积)
-
关系
一组域的笛卡尔积的子集,笛卡尔积中具有某一方面意义的元组称作一个关系。
-
关系模式/表标题:
R(A1:D1,A2:D2,...An:Dn),简记为R(A1,A2,A3...An)
Ai为属性,
Di为域,
n为关系的度
关系中元组的数目为关系的基数 -
关系模式与关系
关系模式是稳定的:而关系是某一时刻的值,随时间改变
303 关系的特性
- 列必须是同质
- 不同列可能来自同一个域,不同属性要给不同属性名
- 行/列 确定靠名字或值
列位置互换性
行位置互换性 - 关系任意两个元组不能完全相同,Table可能不遵守
- 属性不可再分:关系第一范式
304 候选码/候选键
- 关系中的一个属性组,只能唯一标识一个元组,若从该属性组中去掉任何一个属性,他就不具有这一特质。这样的关系组称为 候选码
- 注码/主键
当有多个候选码时选择一个作为主码 - 主属性与非主属性:包含在任何一个候选码中的属性称为主属性
- 外码/外键:两个关系通过外码连接
304 关系模型完整性
- 实体完整性
关系主码的属性值不能为空值(不知道或无意义的值)
空值不能够参与计算 - 参照完整性
外码可以取空值 - 用户自定义完整性
用户针对具体应用环境定义的完整性约束条件 - DBMS对关系完整性的支持
第四讲 关系模型之关系代数
401 什么是关系代数
- 基于集合,提供的一系列关系代数操作:
并,差,笛卡尔积,选择,投影,更名
拓展:交,链接,关系除 - 基本形式
- 关系代数基本操作
(1)集合操作
U 并 | R | S | R U S |
---|---|---|---|
交 | R | S | R ∩ S |
差 | R | S | R- S |
笛卡尔积 | R | S | R x S |
(2)纯关系操作 | |||
![]() |
402 并相容性基本概念
- 定义:
关系R和关系S存在相容性,当且仅当
(1)关系R和关系S属性数
目必须相同
(2)对于任意i,关系R和第i个属性的域相同
403 并操作(Union)
- 加入关系R和关系S是相容的,则R和S运算结果也是关系
- 示例: R∪S
404 差运算(Difference)
- 关系R和关系S是并相容的,R-S:它是由出现在R但不出现在S中元组构成
- 示例: S-R
405 广义笛卡尔积(Cartesian Product)
- 关系R(<a1,a2,..an>)和关系S(<b1,b2,....,bm>)的广义笛卡尔积,记作:R x S
由R中元组和S中元组进行的所有的拼接操作构成 - 数学描述
- 示例: R x S = S x R
- 笛卡尔积的 度(属性个数)和 基数(元组个数)
406 选择操作(Select)
- 给定一个关系R,同时给定一个条件condition,选择运算结果也是一个关系
- 数学描述
- 示例
运算次序:括弧>比较运算>非>与>或
407 投影操作(Progect)
- 给定一个关系R,投影运算结果也是关系 ,记作Πa(R),他从关系R中选出属性包含在A中的列构成。
- 数学描述
- 示例
408 交操作(Intersection)
- 假设关系 R和S是相容的,则关系R∩S是指同时传现在R和S中元组构成
- 数学描述
- 示例
409 连接操作(θ-Join,theta-Join)
- 对多个表进行操作
- 示例 B<=H 进行连接
- 更名操作
- 等值连接操作
- 等值连接 示例:
410 自然连接(Natural-Join)
1.自然连接是一种特殊的等值连接,他由R和S的笛卡尔积中选取相同属性组B上值相等的元组构成
2. 数学描述
3. 示例:
411 关系代数组合与应用
412 除操作(Division)
- 除运算常用于解决“查询... 全部的/所有的”
- 前提条件:
给定关系R(A1,A2,A3...An)n度关系,关系S(B1,B2,B3...Bm)为m度操作,如果可以进行关系R与关系S的除运算,当且仅当:属性集{B1,B2,...Bm}是属性集{A1,A2,...An}的真子集,即m<n - 示例
413 外连接(Out-Join)
- R和S进行连接是,如果R元组在S元组中找不到匹配组,避免该元组信息丢失,将元组与S中假设存在的全为空值的元组连接,放置在结果关系中,成为外连接
- 基本操作缺陷,失去老师信息
- 示例:
(1)查询搜有老师信息
(2)查询所有课程信息
(3)查询所有老师可=和课程信息
第五讲 关系模型之关系演算
501 什么是关系元组演算
- 关系元组演算公式
{t | P(t) }
表示所有的使谓词P为真的元组t的集合
502 简单运用元组演算
- 检索出所有年龄不是最小的同学
s[A]和u[B]为元组分量,A,B为某些关系属性
503 存在量词和全称量词
1.∀,∃ 又称量词,前者为全称量词,后者为存在量词。
2. 被∀或∃限定的元组变量t,或者说,元组变量t前有存在量词或者全称量词,则该变量称为“约束变量”,否则被称为“自由变量”
504 等价变换
- 等价性
505 四个典型示例
1.
解:
2.求没学过李明老师课程的学生
3. 至少学过一门李明老师课程
4. 至少有一门没学过
506 元组演算实现关系运算
507 关系域演算
- 域演算基本形式
508 QBE
- 基本操作
- 示例
(1)插入
(2)查询条件
(3)与 运算 和 或运算
(4)多个表连接
509 QBE应用
- 简单且 查询
- 简单 或 查询
- 并操作
- 差 操作
- 乘积操作
- 投影操作
- 选择操作
510 关系运算安全性
- 关系代数是一种集合演算,是安全的
结合本身是有限的,有限元素的集合仍旧是有限的 - 关系演算不一定是安全的
R(t)是有限的, 不在R(t)中元素可能为无限的 - 对关系演算施加约束条件
安全约束有限集合DOM
- 安全元组演算表达式
511 关系运算比较
- 三种运算
(1)关系代数 (2)关系元组演算 (3)关系元组演算和关系域演算
- ISBL语言
第六讲 SQL语言概述
601 利用SQL建立数据库
606 修正与撤销数据库
alter table tablename
- 增加新列
add colname datatype,... - 删除完整性约束
drop 完整性约束名 - 修改列定义
modify colname datatype,...
第七讲 利用SQL语言复杂查询
第八讲 SQL数据库完整性与安全性
801 数据库完整性概述
- 数据库完整性
在任何情况下的正确性,有效性,一致性
(1)广义完整性
语义的完整性,并发控制,安全控制,db故障恢复
(2)狭义完整性
语义的完整性 - 完整性涉及
实体完整性:关系中主键不为空
参照完整性:外键可以取空值,取其作为主键的表的值
用户自定义完整性 - 完整性管理的作用
防止和避免不合理数据的出现
应自动防止DB语句中不合理现象 - 怎么保证完整性
允许用户定义一些完整性约束规则
DBMS自动按照完整性约束条件进行检查
802 完整性分类
- 约束对象
(1) 域完整性
施加于某一列
(2) 关系完整性约束条件
施加于表/多条关系,表完整性 - 来源
(1)结构约束
函数约束,主键约束,外键约束(只关心数值相等或是否空值)
(2)内容约束
关系属性的取值范围 - 状态
(1)静态约束
在任何时候都应满足的约束
(年龄永远大于0)
(2)动态约束
当一种状态变为另一种状态是满足的约束
(涨工资,只能数值变大)
803 表完整性和列完整性
- 静态约束
列完整性--域完整性
表完整性--关系完整性 - 动态约束
触发器
- Create table
定义完整性约束:列/表完整性
create table tablename(colname datatype [default {default_constant | null }] [col_constr {col_constr...}]
|,table_constr)
{,{colname datatype [default {default_constant | null }] [col_constr {col_constr...}]
|,table_constr}
...});
有名字约束可以单独处理,无名字约束不能够单独处理
reference 表名 列名 on delete cascade (外键,删除后置空) - 表约束
涉及到多列用表约束
复杂查询
804 SQL的断言及其应用
- 断言
一个断言就是一个谓词表达式,它表达了数据库总希望满足的条件
表约束和列约束就是一些特殊的断言
SQL提供了复杂条件表达的断言
CREARTE ASSERTIONCHECK
断言增加了数据库维护的负担降低了效率
805 SQL触发器概念
- 动态约束--触发器
- 触发器Trigger
过程完整性约束,是一段程序,可以在特定时刻被 自动执行
示例
OPAR:约束对象,约束规则,触发条件,响应动作
810 自主安全性机制
- DNMS怎么实现自主安全性
- 员工管理数据库示例
如何实现
(1)按名控制安全性:存储矩阵
(2)按内容控制安全性
811两种自主安全性控制
第一种:存储矩阵
第二种:视图
812 SQL安全性控制
- 三个级别
- 授权命令 DRANT
- 例
813 自主安全性控制
- 创建过程
- 深度和广度
814 强制安全性机制
- 安全性分级
第二十一讲 数据库查询优化技术
2101 什么是查询优化
- 如何使数据库查询时间最短
语义优化:模型的语义及完整性
语法优化:逻辑层-语法结构,优化操作顺序
执行优化:物理层-存取路径和执行算法的选择与执行次序优化
2102 查询优化总体思路
- 语义优化--内容等价性
- 语法优化(逻辑层)--语法等价性
- 执行优化(物理层)
- 总结
2104 逻辑层查询优化
- 优化示例
(1)语法树:反映了操作的先后次序
逻辑优化策略
a. 尽可能早做选择和投影:是中间结果变小
b. 把选择和又硬串接起来:一元计算序列可一起执行,只需对关系扫描一遍
c. 把投影与前后的二元运算结合起来:在第一次用关系时去掉一些无关属性
d. 把某些选择和其前的笛卡尔积操作结合成一个连接操作:当SxR前有选择并且其中有条件是S,R属性间的比较运算时,可将其转化为连接
e. 执行连接操作前对关系做适当的处理:文件排序,建立临时索引
f. 找出表达式里的公共子表达式:若公共子表达式结果不大,则预先计算,以后可读入此计算结果,节省时间,尤其视图情况下
2104 关系代数操纵等价性
- 基本操作
- 定理一:连接与连接 积与积的交换律
- 定理三:投影串接律
- 定理四:选择串接律
- 定理五:选择和投影交换律
- 定理六:选择和积的交换律
- 定理七:投影和积的交换律
- 定理八:选择和并交换律
- 定理九:选择和差交换律
- 定理十:投影和并的交换律
2105 查询优化算法实例
- 算法
- 示例
步骤:
分组:
2106 物理层查询优化
- 总体思路
- 各种实现算法
2107 代价估算
- 估算一个投影的大小
- 估算选择运算
第二十二讲 数据库事务处理并发控制
2201 为什么进行并发控制
- 三种典型不一致现象
丢失修改
不能重复读
脏读
2202 深入认识事物
- 事物的宏观性
- 事务的微观性
- 事物的特性 ACID
原子性:要么不做,要么全做
一致性:不能出现三种典型的不一致性
隔离性:两个事物之间独立,互不影响
持久性:已提交的事物影响是永久的,撤销的是可恢复的
2203 事务调度和可串行性
- 基本概念
- 怎么判断并发调度正确性
可串行性
- 可串行性模型
- 冲突可串行性
- 冲突可串行性判别算法
例
2204 基于锁的并发控制
-
怎么产生一个并发调度
-
锁
L(A)加锁---U(A)解锁
-
锁的类型
-
相容性矩阵
-
加锁解锁的时机
不可重复读,幻读和脏读的区别 -
封锁粒度
2205 基于时间戳的并发控制
- 时间戳
将某一时刻转化为一个数值
时间戳具有唯一性和递增性 - 事物的时间戳
- 时间戳并发控制
- 一种简单的调度规则
(1)读写并发
示例
- 基于时间戳的另一种调度规则
托马斯规则注意的问题
另一种调度规则
对于来自T的读写请求,调度器:
另一种调度规则总结
2206 基于有效性的并发控制
- 时间戳并发思想和有效性并发思想异同
- 基于有效性控制的调度器
- 冲突一
- 冲突二
总结:
例: