第二章
第三七八九章
第四章
第五章
第十章
第十一章
数据库系统概论(第5版王珊)
第十章 数据库恢复技术
第十一章 并发控制
数据库系统主要涉及数据、数据库、数据库管理系统和数据库系统4个基本概念
①数据结构化
②数据的共享性高,冗余度低而且容易扩充
③数据独立性高:物理独立性(应用程序与物理存储相互独立,数据的物理存储改变,应用程序不改变),逻辑独立性(应用程序与逻辑结构相互独立,数据的逻辑结构改变,应用程序不改变)
④数据由数据库管理系统统一管理和控制
①数据data:描述事物的符号,数据库中存储的基本对象
②数据库 DataBase,DB: 长期存储在计算机内的、有组织的、可共享的大量数据的集合
③数据库管理系统 DataBase Management System,DBMS: 位于用户与操作系统之间的一层数据管理软件
④数据库系统 DataBase System,DBS: 由数据库、数据库管理系统、应用程序和数据库管理员(DBA)组成
⑤数据组织 Data Organization 是按照一定的方式和规则对数据进行归并、存储、处理的过程
⑥数据的存储与管理 :数据库出现前的两个阶段 :①人工管理 ②文件系统。其中①的特点:数据不保存,应用程序管理数据,数据不能共享,数据没有独立性。②的特点:数据长期保留,有文件系统管理数据,数据的共享性和独立性差,冗余度大。
⑦数据操纵功能:通过数据库查询语言实现:插入,查询,更新,删除,事务控制,存储过程与触发器,视图。
⑧数据库系统构成:计算机硬件、包含数据库、数据库管理系统在内的计算机软件和数据库用户构成
数据库管理三个阶段 :
数据库出现前的两个阶段 :①人工管理, ②文件系统。其中①的特点:数据不保存,应用程序管理数据,数据不能共享,数据没有独立性。②的特点:数据长期保留,有文件系统管理数据,数据的共享性和独立性差,冗余度大。
数据库出现后:数据结构化,数据共享性,独立性高,冗余度低,易扩充,并且有数据库系统统一管理和控制。
①数据结构化
②数据的共享性高,冗余度低而且容易扩充
③数据独立性高:物理独立性(应用程序与物理存储相互独立,数据的物理存储改变,应用程序不改变),逻辑独立性(应用程序与逻辑结构相互独立,数据的逻辑结构改变,应用程序不改变)
④数据由数据库管理系统统一管理和控制
数据模型包括概念模型(信息模型)和逻辑模型(物理模型)
概念模型按用户的观点建模,用于数据库设计,表示方法有 E-R
模型逻辑模型按计算机的观点建模,用于 DBMS 实现,包括网状模型、层次模型、关系模型等等
物理模型是对数据最底层的抽象,是指逻辑模型在计算机中的存储结构
概念模型:包括一些基本概念:实体,属性,码,域,实体型,实体集,联系。
包括实体型之间的联系:1:1 , 1:n , n : m。
包括单个实体型内的联系:1:1 , 1:n , n : m。
表示方法:E-R图
逻辑模型:信息世界到计算机世界的抽象,成熟的模型:层次模型(树结构),网状模型(图结构),关系模型(二维表(关系))。
层次模型:无双亲,自上而下,一对多
优点:简单,查询效率高
缺点:不是适用非层次联系
网状模型:一个以上节点可以没有双亲结点,一个节点可以有多个双亲结点,多对多
优点:良好的性能以及存储方式
缺点:数据结构复杂,数据模式和系统实现均不理想
关系模型:每个关系的数据结构都是一张规范化的二维表
优点:概念单一结构简单,易懂
缺点:效率较低,不如层次模型和网状模型
由数据结构、数据操作、完整性约数条件三个部分组成
数据结构:数据对象的集合
数据操作:数据库允许执行操作的集合
完整性约束条件:数据完整性规则的集合
实体:世界客观存在并且可以相互区别的事务
属性:实体具有的某一特性
码:唯一标识实体的属性集合
域:属性取值范围
实体型:实体名的表现形式,用来刻画实体的共同特征和性质
实体集:同一类型实体集合
联系:分为实体型内部的联系和实体型之间的联系
E-R:概念模型的表示方法
层次模型:最早的数据的逻辑模型,树状结构,结构清晰简单,但是数据结构比较复杂
网状模型:非层次模型,节点之间多对多,性能好高效率,但是数据模式和系统实现不理想
关系模型:最重要的数据模型,数据结构是一张规范的二维表,实体之间联系使用关系表示,数据独立性更高更好的安全保密性,但是查找效率低
数据库系统的结构通常包括三个主要层次:外模式(外部层)、概念模式(逻辑层)和内模式(物理层)。
数据库系统中的模式(Schema)指的是数据库中数据的逻辑结构和组织方式的描述。它描述了数据库中存储的数据对象(表、视图等)以及这些对象之间的关系。
课本P11
模式:也称为逻辑模式或者概念模式,是由数据库设计者在统一考虑用户需求的基础上,用某种数据模型对数据库中的全部数据的逻辑结构和特征总体描述
外模式:也称为子模式或者用户模式,是数据库用户能够看到和使用的局部数据的逻辑结构和特征描述,是数据库客户的数据视图
内模式:也称物理模式或者存储模式,是数据库中全体数据的内部表述或者底层描述,描述的数据在存储介质上的存储方式以及物理结构,对应着实际存储存储在外存储介质上的存储方式以及物理结构
例如,考虑一个简单的学生信息数据库:
假设有一个关系表格 Students,包含了以下属性:学生ID(StudentID)、姓名(Name)、年龄(Age)、班级(Class)。
形式化定义如下: Students = {StudentID, Name, Age, Class}
其中,每个学生可以用一个元组表示: t1 = (101, ‘Alice’, 20, ‘A101’) t2 = (102, ‘Bob’, 21, ‘B102’)
关系模式是描述关系数据库中表的结构和特性的方式。它定义了表中包含的列、列的数据类型以及列之间的约束条件。关系模式描述了数据库表的逻辑设计。
关系数据库是一种基于关系模型的数据库系统,它以表格形式组织和存储数据。这些表格被称为关系或表,每个关系包含了元组(也称为行或记录)以及属性(也称为列或字段)。
包括查询操作和更新操作两大部分
主键(Primary Key):定义一个关系中的唯一标识符,保证每个元组都有唯一的标识符。主键必须保证非空且唯一。
2. 参照完整性约束(Referential Integrity):
确保关系之间的一致性。通过外键引用另一个关系中的主键来实现:
外键(Foreign Key):在一个关系中,指向另一个关系的主键,用于保证引用完整性。外键的值必须是另一个关系中存在的主键值或者为空(如果允许的话)。
3. 用户定义的完整性约束(User-Defined Integrity):
由用户根据特定业务规则定义的完整性约束,可以是业务规则、限制条件等。
自定义规则:根据特定业务需求定义的约束条件,例如保证价格大于零、日期在特定范围内等。
关系模式指的是数据库中表的结构,描述了表的字段名、数据类型、键和约束等信息。它是一个关系的描述性信息,规定了数据如何被组织、存储和操作。
范式理论是数据库设计中的重要概念,用于确保数据库的结构和关系模式满足特定的规范和标准,以减少数据冗余和提高数据的一致性。范式分为多个级别(如第一范式至第五范式),每个级别都有特定的规则和条件
范式分为多个级别,每个级别都有一组规则,以确保数据库设计中的数据组织结构达到特定的标准。
依赖关系图描述了数据模式中属性之间的依赖关系,可以用来分析范式。
参考这篇博客:
【通俗易懂】关系模式范式分解教程 3NF与BCNF口诀!小白也能看懂-CSDN博客
在设计数据库时,如果一个关系模式不符合BCNF,就需要进行分解。这种分解通常使用函数依赖和依赖图,根据范式理论将关系模式分解为符合BCNF的子模式。
最小依赖集求法:
口诀: 右侧先拆单,依赖依次删。
** 还原即可删,再拆左非单。**
将关系模式R<U,F>分解为一个BCNF的基本步骤是
BCNF分解
1)先求最小依赖集,候码非码成子集
2)余下左侧全候码,完成BCNF题。
例.关系模式R,有U={A,B,C,D,E,G},F={B->G,CE->B,C->A,CE->G,B->D,C->D},将关系模式分解为3NF且保持函数依赖
将关系模式分解为3NF且保持函数依赖:
第一步:先求最小依赖集。可以发现CE->G多余,因此最小依赖集为F={B->G,CE->B,C->A,B->D,C->D}。
第二步:候码非码成子集。由于候选码为(CE)因此将CE->B划分出子集(BCE),而B->G,B->D左侧均不含主属性(C、E)中的任何一个故划分出(BG),(BD)
第三步:此时剩余依赖F={C->A,C->D}剩余元素{A,C,D}检查发现函数依赖左侧都是候选码即完成BCNF分解,如果不满足则继续分解余下的。
于是BCNF分解的最后结果为{(BG),(BD),(ACD),(BCE)}。
需求分析
概念结构设计
逻辑结构设计
物理结构设计
数据库设计
数据库运行和维护
p151
考试要点:概念题
事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。事务和程序是两个概念。一般地讲,一个程序中包含多个事务。事务的开始与结束可以由用户显式控制。如果用户没有显式地定义事务,则由数据库管理系统按默认规定自动划分事务。在 SQL 中,定义事务的语一般有三条:
BEGIN TRANSACTION
COMMIT;
ROLLBACK:
(1)原子性
事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。
(2)一致性
事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
(3)隔离性
一个事务的执行不能被其他事务干扰。即一个事务的内部操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。
(4持续性
持续性也称永久性 (Permannce),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其执行结果有任何影响。
1.事务内部的故障
事务内部的故障有的是可以通过事务程序本身发现的,有的是非预期的,不能由事务程序处理。事务故障意味着事务没有达到预期的终点(COMMIT 或者显式的 ROLLBACK),因此,数据库可能处于不正确状态。恢复程序要在不影响其他事务运行的情况下,强行回滚该事务,即撤销该事务已经作出的任何对数据库的修改,使得该事务好像根本没有启动一样。这类恢复操作称为事务撤销(UNDO)。
2.系统故障
系统故障是指造成系统停止运转的任何事件,使得系统要重新启动。发生系统故障时,一些尚未完成的事务的结果可能已送入物理数据库,从而造成数据库可能处于不正确的状态。为保证数据一致性,需要清除这些事务对数据库的所有修改。
3.介质故障
系统故障常称为软故障 (soft crash),介质故障称为硬故障 (hard crash)。硬故障指外存故障,如磁盘损坏磁头碰撞,瞬时强磁场干扰等。这类故障将破坏数据库或部分数据库,并影响正在存取这部分数据的所有事务。这类故障比前两类故障发生的可能性小得多,但破坏性最大。
4.计算机病毒
计算机病毒是一种人为的故障或破坏,是一些恶作剧者研制的一种计算机程序。这种程序与其他程序不同,它像微生物学所称的病毒一样可以繁殖和传播,并造成对计算机系统包括数据库的危害。
(1)定义
转储即数据库管理员定期地将整个数据库复制到磁带、磁盘或其他存储介质上保存起来的过程。这些备用的数据称为后备副本(backup)或后援副本。
(2)方法
当数据库遭到破坏后可以将后备副本重新装入,但重装后备副本只能将数据库恢复到转储时的状态,要想恢复到故障发生时的状态,必须重新运行自转储以后的所有更新事务。转储是十分耗费时间和资源的,不能频繁进行。数据库管理员应该根据数据库使用情况确定一个适当的转储周期。
(1)日志文件的格式和内容日志文件是用来记录事务对数据库的更新操作的文件。日志文件主要有以下两种格式:
①以记录为单位的日志文件
对于以记录为单位的日志文件,日志文件中需要登记的内容包括: 各个事务的开始标记;各个事务的结束标记:各个事务的所有更新操作。
每个日志记录的内容主要包括:事务标识: 操作的类型操作对象:更新前数据的旧值:更新后数据的新值
②以数据块为单位的日志文件
日志记录的内容包括事务标识和被更新的数据块。
(2)日志文件的作用
①事务故障恢复和系统故障恢复必须用日志文件。
②在动态转储方式中必须建立日志文件,后备副本和日志文件结合起来才能有效地恢复发生故障时的数据库。
③在静态转储方式中,也可以建立日志文件。当数据库毁坏后可重新装入后援副本把数据库恢复到转储结束时刻的正确状态,然后利用日志文件,把已完成的事务进行重做处理,对故障发生时尚未完成的事务进行撤销处理。这样不必重新运行那些已完成的事务程序就可把数据库恢复到故障前某一时刻的正确状态。
(3登记日志文件
为保证数据库是可恢复的,登记日志文件时必须遵循两条原则:
①登记的次序严格按并发事务执行的时间次序。
②必须先写日志文件,后写数据库。
考试要点(概念题)
1. 并发控制的责任
事务是并发控制的基本单位,保证事务acid特性是事务处理的重要任务,而事务acid特性可能遭到破坏的原因之一是多个事务对数据库的并发操作造成的。为了保证事务的隔离性和一致性,DBMS需要对并发操作进行正确调度。这些就是数据库管理系统中并发控制机制的责任。
2.数据不一致及其原因
并发操作带来的数据不一致性主要包括丢失修改,不可重复读和读脏"数据。产生三类数据不一致性的主要原因是并发操作破坏了事务的隔离性。并发控制就是要用正确的方式调度并发操作,使一个用户事务的执行不受其他事务的干扰,从而避免造成数据的不一致性。并发控制的主要技术有封锁(locking),时间戳(timesamp)和乐观控制法,商用的dbms一般都采用封锁方
法。
封锁是事务 T 在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后事务 T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他事务不能更新此数据对象。
基本的封锁类型有两种: 排他锁 (exclusive locks,简称X锁) 和共享锁 (sharelocks,简称 S 锁)。
(1)排他锁
排他锁又称为写锁。若事务T对数据对象 A 加上X锁,则只允许T读取和修改 A,其他任何事务都不能再对 A 加任何类型的锁,直到 T释放A上的锁为止。
(2)共享锁
共享锁又称为读锁。若事务T对数据对象 A 加上 S 锁,则事务T可以读 A 但不能修改 A,其他事务只能再对A加S锁,而不能加锁,直到T释放A 上的S锁为止。
活锁是并发控制中的一种情况,类似死锁,但不同之处在于活锁是指系统一直在尝试重新执行一组操作,但最终无法进行,导致系统无法进展,尽管没有真正发生死锁。
死锁是指在多任务处理系统中,两个或多个进程或线程互相等待对方持有的资源而导致的一种僵局状态。在这种情况下,每个进程都在等待另一个进程所持有的资源,而同时又不释放自己持有的资源,导致所有进程都无法继续执行。
数据库系统~期末习题案例解析
设计题:
图书 (书号,书名,作者编号,出版社,出版日期);
作者 (作者编号,作者名,年龄,地址);
试用SQL语句写出下列查询:检索年龄低于作者平均年龄的所有作者的作者名、书名和出版社。
:::tips
解答:
SELECT 作者名,书名,出版社
FROM 图书,作者
WHERE 图书.作者编号 = 作者.作者编号
AND 年龄 < = (SELECT AVG (年龄) FROM 作者);
:::
学生 (学号,姓名,专业,入学日期)
收费 (学年,学号,学费,书费,总金额)
假设规定属性的类型:学费、书费、总金额为数值型数据;学号、姓名、学年、专业为字符型数据;入学日期为日期型数据。列的宽度自定义。
试用SQL语句定义上述表的结构,(定义中应包括主键子句和外键子句)。
解答:
CREATE TABLE 学生
(学号 CHAR (8),
姓名 CHAR (8),
专业 CHAR (13),
入学日期 DATE,
PRIMARY KEY (学号));
CREATE TABLE 收费
(学年 CHAR (10),
学号 CHAR (8),
学费 NUMERIC (4),
书费 NUMERIC (5,2),
总金额 NUMERIC (7,2),
PRIMARY KEY (学年,学号),
FOREIGN KEY (学号) REFERENCES 学生 (学号));
学生(学号,姓名,性别,专业,奖学金)
课程(课程号,名称,学分)
学习(学号,课程号,分数)
用关系代数表达式实现下列1—4小题:
(1).检索“英语”专业学生所学课程的信息,包括学号、姓名、课程名和分数。
(2).检索“数据库原理”课程成绩高于90分的所有学生的学号、姓名、专业和分数;
(3).检索不学课程号为“C135”课程的学生信息,包括学号,姓名和专业;
(4).检索没有任何一门课程成绩不及格的所有学生的信息,包括学号、姓名和专业;
用SQL语言实现下列5—8小题:
(5).检索不学课程号为“C135”课程的学生信息,包括学号,姓名和专业;
(6).检索至少学过课程号为“C135”和“C219”的学生信息,包括学号、姓名和专业;
(7).从学生表中删除成绩出现过0分的所有学生信息;
(8).定义“英语”专业学生所学课程的信息视图AAA,包括学号、姓名、课程号和分数。
解答:
(1).П学号,姓名,课程名,分数(σ专业=‘英语’(学生∞学习∞课程))
(2).П学号,姓名,专业,分数(σ分数>90∧名称=‘数据库原理’(学生∞学习∞课程))
(3).П学号,姓名,专业(学生)-П学号,姓名,专业(σ课程号=‘C135’(学生∞学习))
(4).П学号,姓名,专业(学生)-П学号,姓名,专业(σ分数<60(学生∞学习))
(5).SELECT 学号,姓名,专业
FROM 学生
WHERE 学号 NOT IN
(SELECT 学号
FROM 学习
WHERE 课程号=‘C135’);
(6).SELECT 学号,姓名,专业
FROM 学生
WHERE 学号 IN
(SELECT X. 学号
FROM 学习 AS X, 学习AS Y
WHERE X.学号=Y.学号 AND X.课程号=‘C135’ AND Y 课程号=’C219’);
(7).DELETE FROM 学生
WHERE 学号 IN
(SELECT 学号
FROM 学习
WHERE 分数=0)
(8).CREATE VIEW AAA(学号,姓名,课程号,分数);
AS SELECT 学号,姓名,课程号,分数
FROM 学生,学习
WHERE 学生.学号 =学习.学号 AND 专业=’英语’;
R (商店编号,商品编号,数量,部门编号,负责人)
如果规定:
(1) 每个商店的每种商品只在一个部门销售;
(2) 每个商店的每个部门只有一个负责人;
(3) 每个商店的每种商品只有一个库存数量。
试回答下列问题:
(1) 根据上述规定,写出关系模式R的基本函数依赖;
(2) 找出关系模式R的候选键;
(3) 试问关系模式R最高已经达到第几范式?为什么?
(4) 如果R不属于3NF,请将R分解成3NF模式集。
解答:
(1) 有三个函数依赖:(商店编号,商品编号) →部门编号
(商店编号,部门编号) →负责人
(商店编号,商品编号) →数量
(2) R的候选键是 (商店编号,商品编号)
(3) 因为R中存在着非主属性“负责人”对候选键 (商店编号、商品编号)的传递函数依赖,所 以R属于2NF,R不属于3NF。
(4) 将R分解成:R1 (商店编号,商品编号,数量,部门编号)
R2 (商店编号,部门编号,负责人)
试画出用关系代数表示的语法树,并用关系代数表达式优化算法对原始的语法树进行优化处理,画出优化后的标准语法树。
语法树:
解答:
SQL查询:
SELECT Cname
FROM Student,Course,SC
WHERE Student.Sno=SC.Sno AND Course.Cno=SC.Cno AND Student.Sdept=‘IS’;
原始的查询语法树:
关系代数语法树:
优化后的关系代数语法树:
科研项目组,科研人员和科研项目。他们之间关系如下:每个科研项目组可以有多个科研人员,每个科研人员可以属于多个科研项目组;
每个科研项目组可以负责多个科研项目,每个科研项目只能有一个科研项目组负责;
每个科研人员可以参与多个科研项目的工作,每个科研项目由多个科研人员参与工作。
自己设计每类实体的主要属性,画出E-R图
“学生”属性为:学号,姓名,地址,年龄,性别;
“教师”属性为:职工号,教师姓名,职称;
“课程”属性为:课程号,课程名。
画出E-R图