考试题型:

一、判断题(10分/10)
二、填空题(20分/10)
三、选择题(20分/10)
四、大题一(30分/2)–>关系代数/SQl语言
五、大题二(20分) –>关系数据库设计

第一章 绪论

1、数据库的4个基本概念

(1)数据

数据是数据库中存储的基本对象,是用来描述事物的符号记录。

(2)数据库

存放数据的仓库。是长期储存在计算机内、有组织的、可共享的大量数据的集合。数据中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可为用户共享。

(3)数据库管理系统

是位于用户和操作系统之间的一层数据管理软件。数据管理系统和操作系统一样是计算机的基础软件,也是一个大型复杂的软件系统。

(4)数据库系统

是数据库、数据库管理系统、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统。


2、数据库系统的特点

(1)数据结构化

数据库系统实现整体数据的结构化,这是数据库的主要特征之一,也是数据库系统与文件系统的本质区别。

(2)数据的共享性高、冗余度低且易扩充

数据共享可以大大减少数据冗余,节约存储空间。数据共享还能够避免数据之间的不相容性与不一致性。(弹性大、易于扩充)

(3)数据独立性高

数据独立性包括数据的物理独立性和逻辑独立性。物理独立性是指用户的应用程序与数据库中的物理存储是相互独立的;逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的。

(4)数据由数据库管理系统统一管理和控制

1、数据的安全性保护;2、数据的完整性检查;3、并发控制;4、数据库恢复

综上所述:数据库是长期储存在计算机内有组织、大量、共享的数据集合。它可以供各种用户共享,具有最小的冗余度和较高的数据独立性。数据库管理系统在数据库建立、运用和维护时对数据库进行统一控制,以保证数据的完整性和安全性,并在多用户使用数据库时进行并发控制,在发生故障后对数据库进行恢复。


3、概念模型

(1)实体:客观存在并可相互区别的事物

(2)属性:实体所具有的某一特性

(3)码:唯一标识实体的属性集

(4)实体型:用实体名及其属性名集合来抽象和刻画同类实体(具有相同属性的实体必然具有共同的特征和性质)

(5)实体集:同一类型的实体的集合

(6)联系:实体[型]内部的联系和实体[型]之间的联系(通常指不同实体集之间的联系,实体之间的联系有一对一、一对多、多对多等多种类型)


4、数据模型

(1)数据结构:描述数据库的组成对象以及对象之间的联系

(2)数据操作:对数据库中各种对象[型]的实例[值]允许执行的操作的集合,包括操作及有关的操作规则。(查询、更新两大类操作)

(3)数据的完整性约束条件:一组完整性规则。任何关系必须满足实体完整性和参照完整性


5、关系模型

关系模型是最重要的一种数据模型。关系数据库系统采用关系模型作为数据的组织方式。

(1)关系模型的数据结构:建立在严格的数学模型的基础上。关系模型要求关系必须是规范化的,关系的每一个分量必须是一个不可分的数据项。

  • 码:也称为码键。表中的某个属性组,它可以唯一确定一个元组;
  • 域:域是一组具有相同数据类型的值的集合;
  • 分量:元组中的一个属性值。

(2)关系模型的数据操纵与完整性约束:操作对象和操作结果都是关系。

(3)关系模型的优缺点:

优点:

  • 关系模型与格式化模型不同,它是建立在严格的数学概念的基础上的。
  • 关系模型的概念单一。所以数据结构简单、清晰,用户易懂易用。
  • 关系模型的存取路径对用户透明,从而具有更高的数据独立性、更好的安全保密性,简化了程序员和数据库开发建立的工作。

缺点:

  • 存取路径对用户隐蔽,导致查询效率不如格式化数据模型。

6、数据库系统的三级模式结构

(1)模式:模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。

(2)外模式:外模式也称子模式或用户模式,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。(外模式通常是模式的子集,一个数据库可以有多个外模式)

(3)内模式:内模式也称存储模式,一个数据库只有一个内模式。它是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式。


第二章 关系数据库

1、一些碎片知识

(1)

域是一组拥有相同数据类型的值的集合。

(2)关系类型

关系有三种类型:基本关系(通常又被称为基本表或者基表)、查询表和视图表。

(3)关系的每一个分量必须是一个不可分的数据项

(4)关系的模式称为关系模式

(5)关系数据库的型也被称为关系数据库模式,是对关系数据库的描述。

(6)关系操作的特点是集合操作方式,即操作的对象和结果都是集合


2、传统的集合运算

传统的集合运算是二目运算,包括并、差、交、笛卡尔积4种运算。

(1)并:R∪S={t|t∈R∪t∈S}

(2)差:R-S={t|t∈R∩t∉S}

(3)交:R∩S={t|t∈R∩t∈S}

(4)笛卡尔积:R×S={(tr,ts)|tr∈R∧ts∈S}


3、专门的关系运算

(1)选择【限制】
$$
\sigma_F(R) = {t|t∈R∩F(t)=’真’}
$$
从R(表)中找出所有满足F(条件)的t(元素)。F为运算表达式,有>、≥、<、≤、=、<>(不等于)、┐(非)、∩、∪运算符。

(2)投影
$$
\Pi_A(R)={t[A]|t∈R}
$$
选出R(表)中的A(属性列)中的t(元素)组成新视图。

(3)连接(θ连接)

表达式太难写了这里就不写了。。。

通过AθB条件判断生成的笛卡尔积,θ为“=”时的运算称之为等值运算

自然连接(没有AθB的表达式)是一种特殊的等值运算【取消重复列】。

外连接:笛卡尔积(不存在位置给null)【保留所有关系】

左外连接:保留左边关系;右外连接:保留右边关系。

(4)除运算
$$
R\div S={t_r[x]|t_r∈R∩\Pi_Y(S)⊆Y_x}
$$
R、S中相关元素形成的集合,可以在R中用不相关的元素得到就满足除法运算。


4、常用SQL运算
  • count 对元组计数
  • total 求总和
  • max 求最大值
  • min 求最小值
  • avg求平均值

第三章 关系数据库标准语言SQl

1、SQL的特点

(1)综合统一;

(2)高度非过程化;

(3)面向集合的操作;

(4)以同一语法结构提供多种使用方式;

(5)语言简洁,易学易用。


2、SQL功能

(1)数据查询【select】

(2)数据定义【create、drop、alter】

(3)数据操纵【insert、update、delete】

(4)数据控制【grant、revoke】


第四章 数据库安全性控制

包括用户身份鉴别、多层存取控制、审计、视图和数据加密等安全技术。

1、常用的用户身份鉴别

(1)静态口令鉴别

由用户自己设定,鉴别时只要按要求输入正确的口令,系统将允许用户使用数据库管理系统。

(2)动态口令鉴别

目前较为安全的鉴别方式。口令是动态变化的,每次鉴别时均需使用动态产生的新口令登录数据库管理系统。

(3)生物特征鉴别

生物特征指的是生物体唯一具有的,可测量、识别、验证的稳定生物特征。

(4)智能卡鉴别

智能卡是一种不可复制硬件,内置集成电路的芯片,具有硬件加密功能。


2、存取控制

存取控制机制主要包括定义用户权限和合法权限检查两部分,两机制一起组成了数据库管理系统的存取控制子系统。

(1)自主存取控制(灵活)

用户对于不同的数据库对象有不同的存取权限,不同的用户对同一对象也有不同的权限,而且用户还可将其拥有的权限转授给其他用户。

(2)强制存取控制(严格)

每一个数据库对象被标以一定的密级,每一个用户也被授予某一个级别的许可证。对于任意一个对象,只有具有合法许可证的用户才可以存取。


3、用户权限

数据库对象操作类型组成。在数据库系统中,定义存取权限称为授权。存取控制的对象不仅有数据本身(基本表中的数据、属性列上的数据),还有数据库模式(包括模式、基本表、视图和索引的创建)。


4、授权语句

(1)grant授予

1
2
3
4
grant <权限>[,<权限>]…
on <对象类型><对象名>[,<对象类型><对象名>]……
to <用户>[,<用户>]…
[with grant option];

例:

1
2
grant insert on table sc to u5 with grant option;
// 将sc表的insert权限给u5用户,并且允许该用户将权限授予其他用户。

(2)revoke收回

1
2
3
4
revoke <权限>[,<权限>]…
on <对象类型><对象名>[,<对象类型><对象名>]……
from <用户>[,<用户>]…
[cascade|restrict];

例:

1
2
3
revoke insert on table sc from u5 cascade;
// 收回u5用户在sc表的insert权限(同时cascade不会收回u5授权用户的权限)
// 所以restrict会级联收回下级用户权限

5、数据库角色

数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。

(1)角色的创建

1
create role <角色名>

(2)给角色授权

利用grant语句将权限授予某一个或几个角色。

1
2
3
grant <权限>[,<权限>]…
on <对象类型>对象名
to <角色>[,<角色>]…

(3)将一个角色授予其他的角色或用户

拥有with admin option的角色或用户可以将权限授予其他人。

1
2
3
grant <角色1>[,<角色2>]…
to <角色3>[,<用户1>]…
[with admin option]

(4)角色权限的收回

1
2
3
revoke <权限>[,<权限>]…
on <对象类型><对象名>
from <角色>[,<角色>]…

第五章 数据库完整性

数据库的完整性是指数据的正确性相容性

关系数据库管理系统使得完整性控制成为其核心支持的功能,从而能够为所有的用户和应用提供一致的数据库完整性。

1、实体完整性

primary key主键定义关系的主码,具有不为空和唯一的特性。用户插入数据时会对实体完整性故则自动检查:

(1)检查主码值是否唯一,如果不唯一则拒绝插入或修改;

(2)检查主码各个属性是否为空,只要一个为空就拒绝插入和修改。


2、参照完整性

foreign key外键定义关系的外码,用references指明外码参照的是哪些表的主码。

语法结构;

1
2
foreign key (Sno) references Student(Sno);
// 当前表的Sno元素和Student表中的Sno关联

3、用户定义的完整性

针对某一具体应用的数据必须满足的语义要求。
简单来说就是用户对一些属性字段进行语义限制的操作,常见的有not null/unique等。


第六章 关系数据库理论

1、术语定义

(1)函数依赖

设R(U)是属性集U上的关系模式,X、Y是U的子集。若对于R(U)的任何一个可能的关系r,如果r中不存在两个元组在X上的属性值相等,二在Y上的属性值不等,则称X函数确定YY函数依赖于X,记作X—->Y。

(2)完全函数依赖

在R(U)中,如果X—->Y,并且对于X的任何一个真子集X`–/–>Y,则称Y对X完全函数依赖。记作X–F–>Y。

(3)部分函数依赖

若X—->Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖。记作X–P–>Y。

(4)候选码

设K为R<U,F>中的属性或属性组合,若K–F–>U,则K为R的候选码。如果U函数依赖于K,即K—->U,则K称为超码。包含在任何一个候选码中的属性称为主属性

(5)全码

整个属性组是码,称为全码。


2、范式

关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同的范式。

(1)1NF

若关系模式的每一个分量都是不可再分的数据项,则关系模式R属于第一范式。

(2)2NF

若关系模式R∈1NF,并且每一个非主属性都完全函数依赖与R的码,则R∈2NF。

(3)3NF

关系模式R中若不存在这样的码X,属性组Y及非主属性Z(Z不属于Y)使得X—->Y,Y—->Z成立,Y–/–>X,则称R<U,F>∈3NF。

(4)BCNF

设关系模式R∈1NF,如果对于每个函数依赖X—->Y,若Y不属于X,则X必有候选码,那么R∈BCNF。


3、数据依赖的公理系统

数据依赖的公理系统是模式分解算法的理论基础。

Armstrong公理系统:设U为属性集总体,F是U上的一组函数依赖,于是有关系模式R<U,F>,对R<U,F>来说有以下的推理规则:

(1)自反律:若Y包含于X包含于U,则X—->Y为F所蕴含。

(2)增广律:若X—->Y为F所蕴含,且Z包含于U,则XZ—->YZ为F所蕴含。

(3)传递律:若X—->Y及Y—->Z为F所蕴含,则X—->Z为F所蕴含。

Armstrong公理系统是有效的完备的


第七章 数据库设计

1、一般定义

数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效的存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。


2、数据库设计的基本步骤

(1)需求分析

准确了解与分析用户需求。

(2)概念结构设计

对用户需求进行综合、归纳与抽象,形成一个独立于具体数据库管理系统的概念模型。

(3)逻辑结构设计

将概念结构转换为某个数据库管理系统所支持的数据模型.

(4)物理结构设计

为逻辑结构模型选取一个最适合应用环境的物理结构。

(5)数据库实施

根据逻辑设计和物理设计的结果建立数据库,编写与调试应用程序,组织数据入库,并进行试运行。

(6)数据库运行和维护

不断对其进行评估、调整和修改。


3、需求分析【不考,写错了】

(1)任务

调查的重点是“数据”和“处理”,通过调查、收集与分析,获得用户对数据库的信息要求、处理要求、安全性与完整性要求。

(2)调查步骤

【1】调查组织机构情况;

【2】调查各部门的业务活动情况;

【3】在协助业务活动的基础上,协助用户明确对新系统的各种要求;

【4】确定新系统的边界。

(3)方法

【1】跟班作业

【2】开调查会

【3】请专人介绍

【4】询问

【5】设计调查表请用户填写

【6】查阅记录


4、概念结构设计

(1)主要特点

【1】能真实、充分地反映现实世界,包括事物和事物之间的联系,能满足用户对数据的处理要求,是现实世界的一个真是模型.

【2】易于理解,可以用它和不熟悉计算机的用户交换意见。

【3】易于更改,当应用环境和应用要求改变时容易对概念模型修改和扩充。

【4】易于向关系、网状、层次等各种数据模型转换。

(2)E-R模型与E-R图

E-R模型是用E-R土来描述现实世界的概念模型,包括实体、属性、实体之间的联系等。

E-R图提供了表示实体型、属性和联系的方法:

【1】实体型用矩形表示;

【2】属性用椭圆形表示;

【3】联系用菱形表示。


5、逻辑结构设计

逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为与选用数据库管理系统产品所支持的数据模型相符合的逻辑结构。

一个实体型转换为一个关系模式。

【1】一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。

【2】一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。

【3】一个n:m联系转换为一个关系模式。

【4】三个或三个以上实体间一个多元联系可以转换为一个关系模式。

【5】具有相同码的关系模式可以合并。


6、物理结构设计

(1)确定数据库的物理结构;

(2)对物理结构进行评估。


第十章 数据库恢复技术

1、事物

所谓事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。

定义事务的语句一般有三条:

1
2
3
begin transaction;  // 代表事务的开始
commit; // 提交事务的所有操作
rollback; // 回滚,系统将事务中对数据库的所有已完成的操作全部撤销,回滚到事务开始时的状态

2、事务的特性

(1)原子性

事务是数据库的逻辑工作单位,要么都做,要么都不做;

(2)一致性

事务的执行结构必须是使数据性一致状态变到另一个一致性状态。

(3)隔离性

一个事务的执行不能被其他事务干扰。

(4)持续性

一个事务一旦提交,他对数据库中数据的改变应该是永久的。


3、登录日志文件

为保证数据库是可恢复的,登录日志文件时必须遵守两条原则:

(1)登录的次序严格按并发事务执行的时间次序。

(2)必须先写日志文件,后写数据库。

【关于(2)】如果先写了数据库修改,而在运行记录中没有登记这个修改,则以后就无法恢复这个修改了。如果先写日志,但没有修改数据库,按日志文件恢复时只不过多执行一次UNDO操作,并不会影响数据库的正确性。


第十一章 并发控制

事务可以一个一个地串行执行,即每个时刻只有一个事务运行。

在单处理机系统中,事务的并发执行实际上是这些并行事务的并行操作轮流交叉运行。

事务是并发控制的基本单位。为了保证事务的隔离性一致性,数据库管理系统需要对并发操作进行正确调度。

1、并发操作的数据不一致性

(1)丢失修改

两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被丢失。
(2)不可重复读

事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。

(3)读“脏”数据

事务T1修改某一数据并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,这时T1修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为“脏”数据,即不正确的数据。


2、并发控制

并发控制机制就是要用正确的方式调度并发操作,使一个用户事务的执行不受其他事物的干扰。

并发控制的主要技术有封锁、时间戳、乐观控制法和多版本并发控制等。


3、封锁

封锁是实现并发控制的一个非常重要的技术。基本的封锁类型有两种:

(1)排它锁

又称写锁。若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁为止。

(2)共享锁

又称读锁。若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁为止。


4、封锁协议

(1)一级封锁协议

一级封锁协议是指,事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。

可防止丢失修改,并保证事务T是可恢复的。

(2)二级封锁协议

二级封锁协议是指,在一级封锁协议的基础上增加事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁。

进一步防止读“脏”数据。

(3)三级封锁协议

三级封锁协议是指,在一级封锁协议的基础上增加事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。

进一步防止不可重复读。

【*】三级协议的区别主要在于什么操作需要申请封锁,以及何时释放锁(即持锁时间)。


5、活锁和死锁

(1)活锁

活锁的情形:事务有可能永远等待。(事务未被批准而一直处于等待状态)

避免活锁的简单方法是采用先来先服务的策略。

(2)死锁

死锁的情形:多个事务之间形成互相等待的局面。


6、死锁的预防

(1)一次封锁法

要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行。

缺点:

【1】扩大了封锁的范围,降低了系统的并发度;

【2】不要求封锁的数据在执行过程中可能变成封锁对象,很难事先精确的确定每个事务所要封锁的数据对象。

(2)顺序封锁法

预先对数据对象规定一个封锁顺序,所有事物按这个顺序进行封锁。

缺点:

【1】封锁的数据对象极多,并且随数据的插入、删除等操作不断地变化,要维护这样的资源的封锁的顺序非常困难,成本很高。

【2】事务的封锁请求可以随事务的执行而动态的决定,很难事先确定每一个事物要封锁哪些对象,也就很难按照规定的顺序去施加封锁。


7、死锁的诊断和解除

(1)诊断

【1】超时法:超过了规定时限,就认为发生了死锁。

【2】等待图法:事务的等待循序形成的有向图如果存在回路,则说明发生了死锁。

(2)解除

选择一个处理死锁代价最小的事务,将其撤销,释放此事务持有的所有锁,使其他事务得以继续运行下去。


总结

这个年纪总是喜欢做一些无意义的事去强行拔高自己的存在,这个文档也就简化了一下书本,收录了一点个人理解和作业。虽然有“疑似”考卷的押题范围,但完全没有想法去为了那个做一份针对的文档。还是以学习新知识为重心吧,不要舍本逐末了。

不知道写些什么,就胡言乱语这么多吧。 ——By Alexie·Z·Yevich 2022.5.15