第1章 数据库系统概述
(数据处理技术的发展 + 数据库的基本概念和特点)
一:数据、信息、知识、决策
对应:Data、Information、Knowledge、Decision
二:数据库技术的产生与发展
产生原因:数据管理任务的需要
数据管理技术的发展过程:人工管理阶段(20世纪50年代中前)、文件系统阶段(20世纪50年代末——60年代中)、数据库系统阶段(20世纪60年代末——现在)
数据管理技术的发展动力:应用需求推动;计算机硬件发展;计算机软件发展
应用程序与数据的对应关系:(人工管理阶段)应用程序和数据集一对一;(文件系统阶段)应用程序和数据根据存取方法多对多;(数据库系统阶段)应用程序和数据库根据DBMS多对一
三、数据库系统基本概念
基本概念:数据Data、数据库Database、数据库管理系统DBMS、数据库系统DBS
数据:数据库中存储的基本对象;描述事物的符号记录;特点为其与语义不可分
数据库:长期储存在计算机内的、有组织的、可共享的大量数据的集合
数据库管理系统:位于用户与操作系统间的一层数据管理软件;基础软件 / 大型复杂的软件系统;用途为科学地组织和存储数据、高效地获取和维护数据
DBMS的主要功能:数据定义功能;数据组织、存储和管理;数据操作功能;数据库的事务管理和运行管理;数据库的建立和维护功能;其他(通信、数据转换、互操作等)
数据库系统:由数据库、数据库管理系统、应用程序、数据库管理员构成;
四、数据库系统的特点
1:数据结构化(整体结构化)
2:数据的共享性高,冗余度低且易扩充(数据库系统从整体角度看待和描述数据;数据共享的好处)
3:数据独立性高(物理独立性;逻辑独立性;二级映像功能保证数据独立性)
4:数据由DBMS统一管理和控制(数据的安全性保护;数据的完整性检查;并发控制;数据库恢复)
五、小结
- 数据库是长期存储在计算机内有组织的大量的共享的数据集合
- 可以供各种用户共享,具有最小冗余度和较高的数据独立性
- 数据库管理系统在数据库建立、运用和维护时对数据库进行统一控制,以保证数据的完整性、安全性,并在多用户同时使用数据库时进行并发控制,在发生故障后对数据库进行恢复
第2章 数据模型
一、两类模型
客观对象的抽象过程:概念模型 + 数据模型(2步抽象)
数据模型:抽象、表示和处理现实世界的信息;是现实世界的模拟;满足要求【真实、易懂、实现】
分类:概念模型 + 逻辑/数据模型和物理模型
二、概念模型
(信息世界中的基本概念;两个实体型之间的联系;两个以上实体型之间的联系;单个实体型内的联系;概念模型的一种表示方法;实例)
信息世界的基本概念:实体Entity(客观存在的事物)、属性Attribute(实体的特性)、码Key(唯一标识实体的属性集)、域Domain(属性的取值范围)、实体型Entity Type(用实体名及其属性名集合来抽象和刻画同类实体)、实体集Entity Set(同类实体的集合)、联系Relationship(事物内部及事物间的联系,实体内部 + 实体之间)
两个实体型之间的联系:1:1一对一、1:n一对多、m:n多对多
两个以上实体型间的一对多关系:1:n、n:m
单个实体型内的联系:1:n、m:n
实体-联系方法(E-R方法):E-R图描述现实世界的概念模型
——实体型(矩形,框内写实体名);属性(椭圆形,无向边与对应实体连接);联系(菱形,框内写联系名,无向边与对应实体连接,标注联系类型);联系的属性(椭圆形,无向边与对应联系相联)
三、数据模型的组成要素
(数据结构、数据操作、完整性约束条件)
数据结构:描述数据库的组成对象和对象间的联系;对系统静态特性的描述
数据操作:对数据库中各种对象(型)的实例(值)允许执行的操作及有关的操作规则;对系统动态特性的描述
数据操作的类型:查询;更新(增删改)
完整性约束条件:数据模型必须遵守的基本通用完整性约束条件(实体完整性&参照完整性);具体应用
四、最常用的数据模型
(层次模型、网状模型、关系模型、面向对象模型、对象关系模型、半结构化数据模型、NoSQL)
层次模型:树形结构;根结点、双亲结点、兄弟结点、叶结点
特点:结点双亲唯一;只能直接处理一对多的实体联系;码字段(每个记录类型定义一个排序字段);任何记录值只有按其路径查看时,才显出其全部意义;没有一个子女记录值能够脱离双亲记录值而独立存在
存储结构(物理模型):邻接法;链接法(子女-兄弟链接法、层次序列链接法)
优点:数据结构简单清晰;查询效率高,性能优于关系模型,不低于网状模型;完整性支持良好
缺点:多对多联系表示不自然;对增删的限制多,应用程序编写复杂;查询子女结点须通过双亲结点;结构严密,层次命令趋于程序化,即操作需要采用程序编程
网状模型:代表为DBTG系统
特点:允许多个结点无双亲;结点可有多个双亲;两结点间可有多种联系(复合联系);层次模型是网状模型的特例
存储结构:单向链接;双向链接;环状链接;向首链接
优点:可更直接描述现实世界;性能良好,存取效率较高
缺点:结构较复杂,数据库结构的复杂度随应用环境的扩大而增加,不利于用户掌握;DDL、DML语言复杂,用户难使用
关系模型:数据的逻辑结构是二维表,由行和列组成
数据结构:关系(表)、元组(表中的一行)、属性(表中的一列)、主码(唯一确定元组的属性组)、域(属性的取值范围)、分量(元组的一个属性值)、关系模式(对关系的描述,关系名(属性1,…,属性n))
关系必须规范化:每个分量必须是一个不可分的数据项,不允许大表套小表
操纵:数据操作是集合操作,操作对象和操作结果是关系
关系的完整性约束条件:实体完整性;参照完整性;用户定义的完整性
存储结构:表用于表示实体及实体间的联系,以文件形式存储
优点:建立在严格的数学概念基础上;概念单一;关系模型的存取路径对用户透明
缺点:存取路径透明导致查询效率不如非关系数据模型;为提高性能须对用户的查询请求进行优化,增加了开发DBMS的难度
第3章 关系数据库操作
一、关系数据库和关系模型
关系数据结构的形式化定义:域Domain、笛卡尔积、关系Relation
(1)域:一组具有相同数据类型的值的集合
(2)笛卡尔积:D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}
元组:笛卡尔积中的每一个元素(d1,d2,…,dn)
分量:元素(d1,d2,…,dn)中的每个值di
基数:
(3)关系:D1×D2×…×Dn 的子集,R(D1,D2,…,Dn)
元组:关系中的每个元素t 单元关系(n=1) 与 二元关系(n=2)
关系的表示:二维表,表中每行对应一个元组,每列对应一个域 / 属性
码:候选码(唯一表示元组)、全码(所以属性组是候选码,即极端情况)、主码(多个候选码中选定一个)、主属性(候选码的诸属性,对应非主属性)
三类关系:基本关系(实际存在的表)、查询表(查询结果对应的表)、视图表(虚表)
关系模式:关系模式是型;关系是值;关系模式是对关系的描述
关系模型的形式化表示:R(U,D,DOM,F)
R——关系名,U——组成该关系的属性名集合,D——U中属性的域,DOM——属性向域的映像集合,F——属性间的数据依赖关系集合
关系数据库:在给定应用领域中所有关系的集合
二、关系操作
常用的关系操作:
- 查询:选择、投影、并、交、差、笛卡尔积、连接、除(黄色部分为5种基本操作)
- 数据更新:插入、删除、修改
关系操作的特点:集合操作方式,一次一集合
关系的三类完整性约束:实体完整性;参照完整性;用户定义完整性
实体完整性:若属性A是基本关系R的主属性,则A不可为空
参照完整性:关系间的引用;外码(参照关系 & 被参照关系);关系R和S,若属性F是R的外码,且与S的主码对应,则R中每个元组在F上的值必须为空值或等于S中某个元组的主码值
三、关系代数
概述:
运算符 | 含义 | 计算公式 | |
集合运算符 | ∪ | 并 | |
- | 差 | ||
∩ | 交 | ||
× | 笛卡尔积 | ||
比较运算符 | > | 大于 | |
≥ | 大于等于 | ||
< | 小于 | ||
≤ | 小于等于 | ||
= | 等于 | ||
<> | 不等于 | ||
关系运算符 | σ | 选择 | |
π | 投影 | ||
连接 | |||
÷ | 除 | ||
逻辑运算符 | ¬ | 非 | |
∧ | 与 | ||
∨ | 或 |
专门的运算关系:
(1)R,t,t[Ai](元组t中相应于属性Ai的一个分量)
(2)A(属性组A),t[A],A({A1,…,An}中去掉{Ai1,…Aik}后剩余的属性组)
(3)trts(tr是R的一个元组,ts是S的一个元组,trts称为元组的连接,n + m列)
(4)象集Zx(X和Z为R的属性组,当t[X]=x时,x在R中的象集为Zx = {t[Z]|t∈R,t[X]=x})
常用的连接运算:
(1)等值连接:从关系R与S的广义笛卡尔积中选取A、B属性值相等的元组,且B属性重复显示
(2)自然连接:R和S具有相同的属性组B,且B属性不再重复显示
(3)外连接:把舍弃的元组也保存在结果关系中,而在其他属性上填空值
左外连接:只保留左边关系R中舍弃的元组
右外连接:只保留右边关系S中舍弃的元组
除:元组在X上分量值x的象集Yx包含S在Y上投影的集合
例题:
四、关系演算
关系演算:以数理逻辑中的谓词演算为基础
分类(按谓词变元不同):元组关系演算;域关系演算
元组关系演算语言ALPHA:
检索语句:GET
更新语句:PUT,HOLD,UPDATE,DELETE,DROP
常用检索语句:
(1)简单检索:GET 工作空间名 (表达式1)
(2)限定检索:GET 工作空间名 (表达式1):操作条件
(3)带排序的检索:GET 工作空间名(表达式1):操作条件 DOWN/UP 表达式2
(4)带定额的检索:GET 工作空间名(定额)(表达式1):操作条件 DOWN/UP 表达式2
(5)用元组变量的检索:RANGE 关系名 变量名
元组变量的用法:
- 最终查询的内容放在GET()里,作为最外层循环
- 条件涉及的表格,设元组变量X,作为最内层循环
- 几个表格,通常几层循环
(6)用存在量词∃的检索:RANGE 关系名 变量名 GET 工作空间名 (表达式1):∃变量名 (表达式2)
(7)带有多个关系的表达式的检索
(8)用全称量词∀的检索(扫描表中所有记录)
全称量词和存在量词的互换:全称量词表示全部满足某条件,等于“不存在不满足某条件的”
(9)用两种量词的检索
(10)用蕴含的检索
(11)聚集函数 / 内部函数
COUNT TOTAL MAX MIN AVG等
全称量词单独使用和全称量词与存在/蕴含/不存在量词联合使用的区别:
常用更新操作语句:
(1)修改操作:
- HOLD 工作空间名 (表达式1):操作条件
- 用宿主语言修改工作空间中元组的属性(MOVE)
- UPDATE 工作空间名
(2)插入操作
- 用宿主语言在工作空间中建立新元组
- PUT 工作空间名 (关系名)
(3)删除操作
- 用HOLD把要删除的元组从数据库中读到工作空间中
- DELETE 工作空间名
域关系演算语言QBE:
构造查询的要素:示例元素;打印操作符P.;查询条件
检索操作:
(1)简单查询
(2)条件查询(与、或、多表连接、非)
(3)聚集函数
CNT SUM AVG MAX MIN等
(4)对查询结果排序
升序——AO. 降序——DO.
更新操作:
(1)修改操作
U.表明所在的行是修改后的新值,放在值或者关系上
(2)插入操作
I.,放在关系上
(3)删除操作
D.,放在关系上
五、关系代数表达式的优化
目的:节省时间,提高效率
基本策略:先做选择,运用投影去除多余属性,再做连接
优化算法:语法树
第4章 SQL语言
一、SQL语言概述
(1)产生与发展
Structured Query Language,通用且功能极强的关系数据库语言
(2)特点
- 综合统一(集合了数据定义语言DDL、数据操纵语言DML、数据控制语言DCL)
- 高度非过程化(不需要了解存取路径)
- 面向集合的操作方式(操作元组的集合)
- 以同一种语法结构提供2种使用方法(语言独立,嵌入式)
- 语法简洁,易学易用(核心功能仅9个动词:SELECT,CREATE,DROP,ALTER,INSERT,UPDATE,DELETE,GRANT,REVOKE)
(3)基本概念
SQL支持数据库三级模式结构(外模式——模式——内模式)
基本表:一个关系对应一个基本表,一个或多个基本表对应一个存储文件,一个表带若干索引
视图:从一个或多个基本表导出,只存放视图的定义不存放视图的数据,虚表,用户可以在视图上继续定义视图
二、SQL的数据定义
主码:加下划线的属性
数据定义功能:
- 模式定义SCHEMA
- 表定义TALBE
- 索引定义INDEX
- 视图定义VIEW
(1)模式的定义与删除
定义模式使用CREATE SCHEMA,模式名可不指定且隐含为用户名
删除模式使用DROP SCHEMA。CASCADE——级联,RESTRICT——限制
(2)基本表的定义、删除与修改
定义基本表时的常用完整性约束:
- 主码:PRIMARY KEY
- 外码:REFERENCES
- 唯一性:UNIQUE
- 非空值:NOT NULL
- 参照完整性:FOREIGN KEY REFERENCES
数据类型:
模式与表:一个模式包含多个基本表
修改基本表:
- ADD:增加新列、新的列级完整性约束条件和新的表级完整性约束条件
- DROP COLUMN:删除表中的列
- DROP CONSTRAINT:删除指定的完整性约束条件
- ALTER COLUMN:修改原有的列定义,包括修改列名和数据类型
(3)索引的建立与删除
建立索引的目的:加快查询速度
B+树索引:动态平衡 HASH索引:查找速度快
建立索引的语句:CREATE [UNIQUE] [CLUSTER] INDEX <索引名>
UNIQUE:每个索引值对应唯一的数据记录
CLUSTER:聚簇索引
修改索引的语句:ALTER INDEX <旧索引名> RENAME TO <新索引名>
删除索引的语句:DROP INDEX <索引名>
数据字典:关系数据库管理系统内部的一组系统表,记录了【关系模式定义、视图定义、索引定义、完整性约束定义、用户操作权限、统计信息】等
三、SQL的数据更新
(1)插入数据
插入方法:
- 单个元组:INSERT INTO … VALUES …
- 子查询结果:INSERT INTO …
(2)修改数据
UPDATE … SET … WHERE …
- 修改某一元组的值
- 修改多个元组的值
- 带子查询的修改语句
(3)删除数据
DELETE FROM … WHERE …
- 删除某一元组的值
- 删除多个元组的值
- 带子查询的删除语句
四、SQL的数据查询
常用查询条件:
(1)单表查询
- 选择表中的若干列
- 选择表中的若干元组:DISTINCT消除重复行,ALL选择所有可能行
- Order by字句
- 聚集函数
- Group by字句
(2)连接查询
- 等值连接与非等值连接查询
- 自身连接查询
- 外连接查询
- 复合条件连接查询
(3)嵌套查询
- 嵌套查询定义
- 嵌套查询分类
- 嵌套查询求解方法
- 引出子查询的谓词
(4)集合查询
- 并操作UNION
- 交操作INTERSECT
- 差操作MINUS
(5)基于派生表的查询
(6)select语句的一般形式
五、视图
视图:从一个或多个基本表或视图导出的表
特点:虚表;只存放定义不存放数据;基本表数据变化,视图查询数据随之改变
(1)定义视图
- 建立视图:CREATE VIEW … AS …
- 删除视图:DROP VIEW … [CASCADE]
(2)查询视图
与查询基本表相同,实现视图查询的方法为【视图消解法】
(3)更新视图
(4)视图的作用
- 简化用户的操作
- 以多种角度看待同一数据
- 对重构数据库提供了一定程度的逻辑独立性
- 对机密数据提供安全保护
- 更清晰地表达查询
六、嵌入式SQL
SQL语言的使用方式:交互式、嵌入式
引入嵌入式SQL的原因:SQL语言是非过程性语言;事务处理应用需要高级语言
(1)嵌入式SQL的处理过程
处理过程:预编译方法
区分SQL语句和主语言语句:EXEC SQL <SQL语句>;
(2)嵌入式SQL语句与主语言之间的通信
SQL语句:面向集合,描述性
高级语言语句:面向记录,过程性
数据库工作单元与源程序工作单元间的通信:
- SQL通信区:一个数据结构(向主语言传递SQL语句的执行状态信息)
- 主变量:主语言的程序变量
- 游标(数据缓冲区):解决集合性操作语言与过程性操作语言的不匹配问题
(3)不使用游标的SQL语句
种类:
- 说明性语句
- 数据定义语句
- 数据控制语句
- 查询结果为单记录的select语句
- 非current形式的增删改语句
(4)使用游标的SQL语句
必须使用游标的SQL语句:
- 查询结果为多条记录的select语句
- Current形式的update语句
- Current形式的delete语句
使用游标的步骤:说明游标(DECLARE)——打开游标(OPEN)——推进游标指针并取当前记录(FETCH)——关闭游标(CLOSE)
(5)动态SQL
允许在程序运行过程中临时“组装”SQL语句;支持动态组装SQL语句和动态参数两种形式
使用SQL语句主变量;动态参数;
使用动态参数的步骤:声明SQL语句主变量——准备SQL语句(PREPARE)——执行准备好的语句(EXECUTE)
七、小结
- SQL语句可以分为数据定义、数据查询、数据更新、数据控制
- SQL是关系数据库语言的工业标准。大部分数据库管理系统产品都能支持SQL92,但是许多数据库系统只支持SQL99、SQL2008和SQL2011的部分特征,至今尚没有一个数据库系统能够完全支持SQL99以上的标准
- 在嵌入式SQL中,SQL语句与主语言语句分工非常明确。SQL:直接与数据库打交道,取出数据库中的数据。主语言:控制程序流程,对取出的数据做进一步加工处理
- SQL语言是面向集合的,一条SQL语句原则上可以产生或处理多条记录
- 主语言是面向记录的,一组主变量一次只能存放一条记录
第5章 数据库系统体系结构
一、数据库的体系结构
1:三级模式结构(用户局部逻辑结构——数据库整体逻辑结构——数据库的物理结构)
(1)概念模式
定义:对数据库全局逻辑结构的描述
描述对象:所有实体、实体的属性和实体间的联系;数据的约束;数据的语义信息;安全性和完整性信息
(2)外模式
定义:用户观念下局部数据结构的逻辑描述
优点:方便用户使用,简化用户接口;保证数据独立性;有利于数据共享;有利于数据安全和保密
(3)内模式
定义:对数据库中数据物理结构和存储方式的描述
关联的工作:数据和索引的存储空间分配;存储的记录描述;记录放置;数据压缩和数据加密技术
2:两级映像和两级数据独立性
三级模式间提供的2层映像:外模式/概念模式映像(逻辑数据独立性);概念模式/内模式映像(物理数据独立性)
数据独立性:应用程序和数据库的数据结构间相互独立,不受影响;包含逻辑数据独立性和物理数据独立性
3:数据库的抽象层次
(1)物理数据库——数据库最内层,内模式为框架
(2)概念数据库——数据库中间层,概念模式为框架
(3)逻辑数据库——数据库最外层,外模式为框架
4:数据模式与数据模型
二、数据库系统DBS
1:DBS的组成
数据库、数据库管理系统、应用开发工具软件和应用程序、数据库的软/硬件支持环境、数据库管理员等
2:DBS的全局结构
3:DBS结构的分类
(1)集中式DBS
运行在一台计算机上,不与其他计算机系统交互
- 运行在个人计算机上的单用户数据库系统
- 运行在大型主机上的高性能数据库系统
(2)客户机/服务器式DBS
客户/服务器结构:前端客户机系统 + 后端服务器系统
N层客户/服务器结构:数据层、商业逻辑层、视觉层
(3)分布式DBS
特点:分布性、逻辑整体性
优点:数据共享、自治性、可用性
(4)并行式DBS
三、数据库管理系统DBMS
1:DBMS的工作模式
- 接受应用程序的数据请求和处理请求
- 将用户的数据请求转换成复杂的机器代码
- 实现对数据库的操作
- 从对数据库的操作中接受查询结果
- 对查询结果进行处理(格式转换)
- 将处理结果返回给用户
2:DBMS的主要功能
(1)数据库定义:外部模式、概念模式、内部模式、模式间映像的定义、数据库完整性定义
(2)数据库操作:增删改查 INSERT DELETE UPDATE SELECT
(3)数据库控制:数据库完整性检查、安全性控制、并发控制、数据库恢复
(4)数据组织、存储和管理
(5)数据通信
四、DBMS的系统结构
五、几种典型结构的DBMS
1:基于Client/Server结构的数据库系统
数据存取的工作过程:
- Client端:应用处理逻辑、显示和数据表示及用户交互界面等
- Server端:数据存取管理、完整性控制及并发控制等
2:基于Web的数据库系统
- 在Web服务器端提供中间件来连接Web服务器和数据库服务器
- 将应用程序下载到客户端,并在客户端直接访问数据库
六、小结
- 数据库的体系结构是对数据的三个抽象级别。把数据的具体组织留给DBMS去做,用户只需抽象地处理逻辑数据,而不必关心数据在计算机中的存储,减轻了用户使用系统的负担。由于三级结构之间往往差别很大,存在着两级映象,因此使DBS具有较高的数据独立性:物理数据独立性和逻辑数据独立性
- 数据独立性是指在某个层次上修改模式而不影响较高一层模式的能力
- DBS的全局结构体现了DBS的模块功能结构