2022.5.25 更新:争取明天更完 以下为原内容
第一章 绪论
1.1 数据库系统概述
数据库技术是信息系统的核心和基础
1.1.1 四个基本概念
数据库的4个基本概念:数据,数据库,数据库管理系统,数据库系统
数据:数据库中存储的基本对象
数据库:长期存储在计算机内、有组织的、可共享的大量数据的集合
数据库管理系统:科学地组织和存储数据、高效地获取和维护数据
数据库管理系统主要功能:(1)数据定义功能(DDL)(2)数据组织、存储和管理 (3)数据操纵功能(DML) (4)数据库的事物管理和运行管理 (5)数据库的建立和维护功能
数据库系统的构成:数据库、数据库管理系统、应用程序、数据库管理员
1.1.2 数据库技术的产生和发展
数据管理:对数据进行分类、组织、编码、存储、检索和维护
数据管理技术的发展过程:人工管理阶段(批处理,20世纪50年代中之前),文件系统阶段(联机实时处理、批处理,20世纪50年代末—60年代中),数据库系统阶段(联机实时处理、分布处理、批处理,20世纪60年代末—现在)
1.1.3 数据库系统的特点
(1)数据结构化 (2)数据的共享性高、冗余度低且易扩充 (3)数据独立性高 (4)数据由数据库管理系统统一管理和控制
数据的最小存取单位是数据项,用数据模型来描述
数据独立性:逻辑独立性和物理独立性
数据独立性由数据库管理系统的二级映像功能来保证
数据管理系统提供的数据控制功能:(1)数据的安全性保护 (2)数据的完整性保护 (3)并发控制 (4)数据库恢复
数据的安全性保护:保护数据以防止不合法的使用造成数据的泄密和破坏
数据的完整性保护:保护数据的正确性、有效性和相容性
1.2 数据模型
数据模型是对现实世界数据特征的抽象,对现实世界的模拟
数据模型是数据库的系统的核心和基础
1.2.1 两类数据模型
(1)概念模型,也称信息模型,用于数据库设计
(2)逻辑模型和物理模型
逻辑模型主要包括网状模型、层次模型、关系模型、面向对象数据模型、对象关系数据数据模型、半结构化数据模型。DBMS实现
物理模型是对数据最底层的抽象
1.2.2 概念模型
表示方法:实体—联系方法 E-R图 E-R方法也称为E-R模型
实体:客观存在并可相互区别的事物称为实体
属性:实体所具有的某一特性称为属性
码:唯一标识实体的属性集称为码
实体之间的联系:一对一、一对多、多对多
1.2.3 数据模型的组成要素
(1)数据结构:描述数据库的组成对象,以及对象之间的联系,对系统静态特性的描述
(2)数据操作:对数据库中各种对象的实例允许执行的操作的集合,包括操作及有关的操作规则,对系统动态特性的描述
数据操作的类型:查询,更新(插入、删除、修改)
(3)数据的完整性约束条件
1.2.4 最常用的数据模型
层次模型、网状模型、关系模型、面向对象数据模型、对象关系数据模型、半结构化数据模型
1.2.5 层次模型
层次模型用树形结构来表示各类实体以及实体间的联系, 典型代表:IMS
特点:只能直接处理一对多的实体联系
优点:(1)数据结构比较简单清晰 (2)查询效率高,性能优于关系模型 ,不低于网状模型(3)提供良好的完整性支持
缺点:(1)多对多联系表示不自然 (2)插入和删除限制多 (3)查询子女结点必须通过双亲节点 (4)层次命令趋于程序化
1.2.6 网状模型
网状数据库系统采用网状模型作为数据库的组织方式,典型代表:DBTG(亦称CODASYL系统)
层次模型是网状模型的一个特例,用网状模型间接表示多对多联系(将多对多联系直接分解成一对多联系)
优点:(1)更为直观地描述现实世界,如一个结点可以有多个双亲 (2)具有良好的性能,存取效率较高
缺点:(1)结构复杂 (2)DDL、DML语言复杂 (3)记录之间联系是通过存取路径实现,用户必须了解系统结构的细节
1.2.7 关系模型
关系数据库系统采用关系模型作为数据的组织方式
用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成
关系:一个关系对应通常说的一张表
元组:表中的一行即为一个元组
属性:表中的一列即为一个属性
码:唯一标识实体的属性集称为码
主码:也称码键,表中的某个属性组,它可以唯一确定一个元组
域:是一组具有相同数据类型的值的集合,属性的取值范围来自某个域
分量:元组中的一个属性值
关系模式:对关系的描述
关系必须是规范化的:关系的每一个分量必须是一个不可分的数据项,不允许表中还有表
关系的完整性约束:实体完整性、参照完整性、用户定义完整性
优点:(1)建立在严格的数学概念的基础上 (2)概念单一(实体和各类联系都用关系表示,对数据的检索结果也是关系) (3)关系模型的存取路径对用户透明(更高的数据独立性,更好的安全保密性,简化程序员的工作和数据库开发建立的工作)
缺点:(1)存取路径对用户透明,查询效率往往不如格式化数据模型 (2)为提高性能,需对用户的查询请求进行优化,增加开发数据库管理系统的难度
1.3 数据库系统的结构
数据库系统通常采用三级模式结构,数据库系统内部的系统结构
最终用户角度:(1)单用户结构 (2)主从式结构 (3)分布式结构 (4)客户—服务器结构 (5)浏览器—应用服务器 / 数据库服务器多层结构
1.3.1 数据库系统模式的概念
型:对某一类数据的结构和属性的说明
值:是型的一个具体赋值
模式:数据库逻辑结构和特征的描述
实例:模式的一个具体值
1.3.2 数据库系统的三级模式结构
(1)模式
数据库中全体数据的逻辑结构和特征的描述,所有用户的公共数据视图
一个数据库只有一个模式
(2)外模式
数据库用户使用的局部数据的逻辑结构和特征的描述,数据库用户的数据视图
模式与外模式:一对多,外模式通常是模式的子集
外模式与应用:一对多,一个应用程序中只能使用一个外模式
用途:(1)保护数据库安全性 (2)每个用户只能看见和访问所对应的外模式中的数据
(3)内模式(存储模式)
数据物理结构和存储方式的描述,数据在数据库内部的表示方式
一个数据库只有一个内模式
1.3.3 数据库的二级映像功能与数据独立性
三级模式是对数据的三个抽象级别
二级映像在数据库管理系统内部实现这三个抽象层次的联系和转换
(1)外模式 / 模式映像
每一个外模式,数据库系统都有一个外模式 / 模式映像,定义外模式与模式之间的对应关系
保证数据的逻辑独立性
映像定义通常包含在各自外模式的描述中
(2)模式 / 内模式映像
定义数据全局逻辑结构与存储结构之间的对应关系
数据库中模式 / 内模式映像是唯一的
保证数据的物理独立性
该映像定义通常包含在模式描述中
1.4 数据库系统的组成
(1)数据库 (2)数据库管理系统 (3)应用程序 (4)数据库管理员 (5)硬件平台及数据库 (6)软件 (7)人员
第二章 关系数据库
2.1 关系数据结构及形式化定义
2.1.1 关系
单一的数据结构:关系,逻辑结构:二维表
域:一组具有相同数据类型的值的集合
笛卡尔积:可表示为一张二维表,表中的每列对应一个域
关系:笛卡尔积的有限子集
码:唯一标识实体的属性集称为码
主码:表中的某个属性组,它可以唯一确定一个元组
(1)候选码:若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码。简单的情况:候选码只包含一个属性
(2)全码:关系模式的所有属性组是这个关系模式的候选码,称为全码
(3)主码:若一个关系有多个候选码,则选定其中一个为主码
(4)主属性:候选码的诸属性称为主属性。不包含在任何候选码中的属性称为非主属性或非码属性
(5)三类关系:
1.基本关系(基本表或基表):实际存在的表,实际存储数据的逻辑表示
2.查询表:查询结果对应的表
3.视图表:由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据
2.1.2 关系模式
关系模式是型,关系是值,关系模式是对关系的描述:1.元组集合的结构 2.完整性约束条件
关系模式可以形式化地表示为:R (U,D,DOM,F)
R:关系名,U:组成该关系的属性名集合,D:U中属性所来自的域 DOM:属性向域的映像集合 F:属性间数据的依赖关系的集合
关系模式是对关系的描述,静态的稳定的
关系是关系模式在某一时刻的状态或内容,动态的、随时间不断变化的
2.1.3 关系数据库
在一个给定的应用领域中,所有关系的集合构成一个关系数据库
2.1.4 关系模型的存储结构
关系数据库的物理组织:交给操作系统 or 申请若干个大文件
2.2 关系操作
2.2.1 基本的关系操作
查询操作:选择、投影、连接、除、并、差、交、笛卡尔积
5种基本操作:选择、投影、并、差、笛卡尔积
更新操作:插入、删除、修改
关系操作特点:操作的对象和结果都是集合,一次一集合的方式
2.2.2 关系数据库语言的分类
关系代数语言:用对关系的运算来表达查询要求
关系演算语言:用谓词来表达查询要求
具有关系代数和关系演算双重特点的语言:SQL(Structured Query Language)结构化查询语言
2.3 关系的完整性
关系模型必须满足的完整性约束条件称为关系的两个不变性,应该由关系系统自动支持
2.3.1 实体完整性
实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值
例如:选修(学号,课程号,成绩)
“学号,课程号”为主码,这两个属性都不能取空值
关系模型中以主码作为唯一标识符,主码中的属性即主属性不能取空值
2.3.2 参照完整性
关系间的引用
外码:设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码
K
s
K_s
Ks? 相对应,则称F是R的外码
基本关系R称为参照关系
基本关系S被称为被参照关系或目标关系
关系R和S不一定是不同的关系,目标关系S的主码
K
s
K_s
Ks? 和参照关系的外码F必须定义在同一个(或一组)域上,外码并不一定要与相应的主码同名
参照完整性规则:若属性(或属性组)F式基本关系R的外码它与基本关系S的主码
K
s
K_s
Ks? 相对应(基本关系R和S不一定是不同的关系),则对应R中每个元组在F上的值必须为:
(1)或组取空值(F的每个属性值均为空值)
(2)或者等于S中某个元组的主码值
2.3.3 用户定义的完整性
针对某一具体关系数据库的约束条件,反映某一具体应用所设计的数据必须满足的语义要求
2.4 关系代数
关系代数是一种抽象的查询语言,它用对关系的运算来表达查询
关系代数的运算符
(1)集合运算符(从行的角度进行):并 差 交 笛卡尔积
(2)专门的关系运算符(涉及行和列) 选择 投影 连接 除
选择
σ
\sigma
σ:从行的角度进行的运算
投影
π
\pi
π:从列的角度进行运算,不仅消除某些列,而且还可能取消某些元组(避免重复行)
连接:1.等值连接 2.自然连接
一般的连接操作都是从行的角度进行运算。自然连接还需要取消重复列,所以是同时从行和列的角度进行运算
自然连接是一种特殊的等值连接:1.两个关系中进行比较的分量必须是相同的属性组 2.在结果中把重复的属性列去掉
外连接:把悬浮元组也保存在结果关系中,而在其他属性上填空值,就叫外连接
除运算:同时从行和列角度进行运算
第三章 关系数据库标准语言SQL
3.1 SQL概述
SQL:结构化查询语言,关系数据库的标准语言
SQL可分为数据定义、数据查询、数据更新、数据控制四大部分
SQL特点:(1)综合统一 (2)高度非过程化 (3)面向集合的操作方式 (4)独立的语言 嵌入式语言 (5)语言简洁,易学易用
数据查询:SELECT
数据定义:CREATE、DROP、ALTER
数据操纵:INSERT、UPDATE、DELETE
数据控制:GRANT、REVOKE
基本表、存储文件、视图
3.2 学生—课程数据库
Student表 Course表 SC表
3.3 数据定义
模式(CREATE SCHEMA,DROP SCHEMA)
表(CREATE TABLE,DROP TABLE,ALTER TABLE)
视图(CREATE VIEW, DROP VIEW)
索引(CREATE INDEX, DROP INDEX,ALTER INDEX)
3.3.1 模式的定义与删除
定义模式实际上定义了一个命名空间
定义模式:CREATE SCHEMA <模式名> AUTHORIZATION <用户名>[<表定义子句>|<视图定义子句>|<授权定义子句>]
删除模式:DROP SCHEMA <模式名> <CASCADE|RESTRICT>
3.3.2 基本表的定义、删除与修改
定义基本表:CREATE TABLE
SQL中域的概念用数据类型来实现
每一个基本表都属于一个模式,一个模式包含多个基本表
设置搜索路径:SET search_path TO “S-T”,PUBLIC;
修改:ALTER TABLE (ADD、 DROP COLUMN、DROP CONSTRAINT、 ALTER COLUMN)
删除:DROP TABLE <表名> [RESTRICT|CASCADE]
3.3.3 索引的建立与删除
建立索引的目的:加快查询速度
B+树索引具有动态平衡的优点,HASH索引具有查找速度快的特点
用户建立索引,系统维护、使用索引
建立:CREATE [UNIQUE] [CLUSTER] INDEX <索引名>
修改:ALTER INDEX <旧索引名> RENAME TO <新索引名>
删除:DROP INDEX <索引名>
3.3.4 数据字典
记录数据库中所有定义信息:关系模式、视图、索引、完整性约束、各类用户对数据库的操作权限、统计信息
关系数据库管理系统在执行SQL的数据定义语句时,实际上就是在更新数据字典中的相应信息
3.4 数据查询
SELECT FROM WHERE GROUP BY HAVING ORDER BY
3.4.1 单表查询
(1)选择表中的若干列
查询经过计算的值:使用列别名改变查询结果的列标题
(2)选择表中的若干元组
DISTINCT 去掉重复的行
比较大小 确定范围 确定集合 字符匹配 涉及空值的查询 多重条件查询
(3)ORDER BY子句
可以按一个或多个属性列排序
(4)聚集函数
COUNT、SUM、AVG、MAX、MIN
(5)GROUP BY子句
HAVING必须在GROUP BY里面,而WHERE是整个查询的结果
WHERE字句是不能用聚集函数作为条件表达式
HAVING短语与WHERE子句作用对象不同,WHERE子句作用与基表或视图,从中选择满足条件的元组,HAVING短语作用于组,从中选择满足条件的组
3.4.2 连接查询
连接查询:同时涉及两个以上的表的查询
(1)等值与非等值连接
连接操作的执行过程:嵌套循环法、排序合并法、索引连接
(2)自身连接
一个表与其自己进行连接
(3)外连接
左外连接,保留左边的内容
(4)多表连接
多表连接:两个以上的表进行连接
3.4.3 嵌套查询
一个SELECT-FROM-WHERE子句称为一个查询块
将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询
SQL语言允许多层嵌套查询,子查询不能使用ORDER BY子句
不相关子查询 相关子查询
(1)带有IN谓词的子查询
(2)带有比较运算符的子查询
(3)带有ANY(SOME)或ALL谓词的子查询
使用ANY或ALL谓词时必须同时使用比较运算
(4)带有EXISTS谓词的子查询
不返回如何数据,只产生逻辑值
3.4.4 集合查询
并操作、交操作、差操作
3.4.5 基于派生表的查询
如果子查询中没有聚集函数,派生表可以不指定属性列
3.4.6 SELECT语句的一般形式
SELECT FROM WHERE GROUP BY HAVING ORDER BY
3.5 数据更新
3.5.1 插入数据
(1)插入元组
INSERT INTO <表名> VALUES
(2)插入子查询结果
INSERT INTO <表名> 子查询
实体完整性、参照完整性、用户定义的完整性(NOT NULL约束,UNIQUE约束,值域约束)
3.5.2 修改数据
(1)修改某一个元组的值
(2)修改多个元组的值
(3)带子查询的修改语句
实体完整性、主码不允许修改、用户定义的完整性(NOT NULL约束,UNIQUE约束,值域约束)
3.5.3 删除数据
(1)删除某一个元组的值
(2)删除多个元组的值
(3)带子查询的删除语句
3.6 空值的处理
空值的产生:是一个很特殊的值,含有不确定性
空值的判断:IS NULL或IS NOT NULL
空值的约束条件:NOT NULL、UNIQUE、码属性
空值的算术运算、比较运算和逻辑运算,二值逻辑就扩展成三值逻辑
3.7 视图
虚表,是一个或几个基本表(或视图)导出的表
只存放视图的定义,不存放视图对应的数据
基表中的数据发生变化 ,从视图中查询出的数据也随之改变
3.7.1 定义视图
(1)建立视图
CREATE VIEW xxx AS xxx [WITH CHECK OPTION];
基于多个基表的视图、基于视图的视图、带表达式的视图、分组视图
(2)删除视图
DROP VIEW <视图名> [CASCADE]
3.7.2 查询视图
视图消解法
3.7.3 更新视图
允许对行列子集视图进行更新
对其他类型视图的更新不同系统由不同限制
3.7.4 视图的作用
视图能够简化用户操作
视图使用户能以多种角度看待同一数据
视图对重构数据库提供了一定的逻辑独立性
视图能够对机密数据提供安全保护
适当利用视图可以更清晰的表达查询
第四章 数据安全性
数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄漏、更改或破坏
4.1 数据库安全性概述
4.1.1 数据库的不安全因素
(1)非授权用户对数据库的恶意存取和破坏
(2)数据库中重要或敏感的数据被泄漏
(3)安全环境的脆弱性
4.1.2 安全标准简介
(1)TCSEC标准:安全策略,责任,保证,文档
D级 最小保护,C1 自主安全保护,C2 受控的存取保护(自主存取控制)
B1 标记安全保护(强制存取控制), B2 结构化保护, B3 安全域, A1 验证设计
(2)CC标准
4.2 数据安全性控制
数据库安全控制的常用方法:用户标识和鉴定、存取控制、视图、审计、数据加密
4.2.1 用户身份鉴别
4.2.2 存取控制
4.2.3 自主存取控制方法
4.2.4 授权:授予与回收
4.2.5 数据库角色
4.2.6 强制存取控制方法
4.3 视图机制
4.4 审计
4.5 数据加密
4.6 其他安全性
第五章 数据完整性
5.1 实体完整性
5.2 参照完整性
5.3 用户定义的完整性
5.4 完整性约束命名字句
5.5 断言
5.6 触发器
第六章 关系数据理论
6.1 问题的提出
关系数据库逻辑设计—关系数据库的规范化理论
第一范式(1NF):每个分量必须是不可分开的数据项,无重复的列
数据依赖是一个关系内部属性与属性之间的一种约束关系,可分为函数依赖和多值依赖
数据冗余、更新异常、插入异常、删除异常
原因:由存在于模式中的某些数据依赖引起
解决方法:用规范化理论改造关系模式来消除不合适的数据依赖
6.2 规范化
6.2.1 函数依赖
X函数确定Y,Y函数依赖于X,记作X—>Y
函数依赖是指关系模式R的所有关系实例均要满足的约束条件,是语义范畴的概念
X—>Y,但 Y 不属于 X,则称X—>Y是非平凡的函数依赖
X—>Y,但 Y 属于 X,则称X—>Y是平凡的函数依赖,平凡函数依赖必成立
若X—>Y,则X称为这个函数依赖的决定因素
完全函数依赖 部分函数依赖 传递函数依赖
6.2.2 码
候选码 主码 主属性 非主属性 全码 外码
6.2.3 范式
范式是符合某一级别的关系模式的集合
1NF 包含 2NF 包含 3NF 包含 BCNF 包含 4NF 包含 5NF
一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化
关系数据库的规范化理论是数据库逻辑设计的工具,规范化实质上是概念的单一化
6.2.4 2NF
第二范式(2NF):关系模式R属于1NF,并且每一个非主属性都完全函数依赖于任何一个候选码(即不存在非主属性部分函数依赖于候选码),则R属于2NF
一个关系模式不属于2NF,会产生插入异常、删除异常、修改复杂的问题
6.2.5 3NF
第三范式(3NF):关系模式R<U,F>属于1NF,若R中不存在非主属性Z对码X的传递函数依赖,则称R<U,F>属于3NF
6.2.6 BCNF
BCNF是修正的第三范式
BCNF:在关系模式R<U,F>中,如果每一个决定属性集都包含候选码,则R属于BCNF
6.2.7 多值依赖
存在多值以来:数据冗余度大、增加操作复杂、删除操作复杂、修改操作复杂
多值依赖的性质:对称性、传递性、函数依赖是多值依赖的特殊情况、并集交集差集
6.2.8 4NF
4NF就是限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。4NF所允许的非平凡多值依赖实际上是函数依赖
6.2.9 规范化小结
关系模式的规范化:一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式集合
关系数据库的规范化是数据库逻辑设计的工具
1NF—>2NF:消除非主属性对码的部分函数依赖
2NF—>3NF:消除非主属性对码的传递函数依赖
3NF—>BCNF:消除主属性对码的部分和传递函数依赖
BCNF—>4NF:消除非平凡且非函数依赖的多值依赖
1NF—>BCNF:消除决定因素非码的非平凡函数依赖
不能说规范化程度越高的关系模式就越好
6.3 数据依赖的公理系统
Armstrong公理系统:一套推理规则,模式分解算法的理论基础
用途:1.求给定关系模式的码 2.从一组函数依赖求得蕴含的函数依赖
自反律,增广律,传递律,可得到合并规则,伪传递规则,分解规则
自反律,增广律,传递律称为Armstrong公理系统,该系统是有效的,完备的
闭包:在关系模式R<U,F>中为F所逻辑蕴涵的函数依赖的全体叫做F的闭包,记为F+
X
F
+
=
A
∣
X
—
>
A
X_F^+={A|X—>A}
XF+?=A∣X—>A 能由F根据Armstrong公理导出,
X
F
+
X_F^+
XF+? 称为属性集X关于函数依赖集F的闭包
有效性:由F出发根据Armstrong公理推导出来的每个函数依赖一定在F+中
完备性:F+中的每一个函数依赖,必定可以由F出发根据Armstrong公理推导出来
F
+
F^+
F+:为 F 所逻辑蕴涵的函数依赖的全体,也可以说成由F出发借助Armstrong公理推导出的函数依赖的集合
两个函数依赖集等价是指它们的闭包等价
如果函数依赖集F满足下列条件,则称F为一个极小函数依赖集,亦称为最小依赖集或最小覆盖
(1)F中任一函数依赖的右部仅含有一个属性
(2)F中不存在这样的函数依赖X—>A,使得F与F-{X—>A}等价
(3)F中不存在这样的函数依赖X—>A,X有真子集Z使得F-{X—>A}U{Z—>A}与F等价
即F中的函数依赖均不能由F中其他函数依赖导出;F中各函数依赖左部均为最小属性集(不存在冗余属性)
每一个函数依赖集F均等价于一个极小函数依赖集
F
m
F_m
Fm? ,此
F
m
F_m
Fm? 称为F的最小依赖集
6.4 模式的分解
三种模式分解等价的定义:
1.分解具有无损连接性(4NF)
2.分解要保持函数依赖(3NF)
3.分解既要保持函数依赖,又要具有无损连接性(3NF)
第七章 数据库设计
7.1 数据库设计概述
7.2 需求分析
7.3 概念结构设计
7.4 逻辑结构设计
7.5 物理结构设计
7.6 数据库的实施和维护
第八章 数据库编程
8.1 嵌入式SQL
8.2 过程化SQL
8.3 存储过程和函数
8.4 ODBC编程
|