Chapter 1
数据库定义:数据库是长期储存在计算机内、有组织、可共享的大量数据的集合。
数据模型三要素:数据结构、数据操作、完整性约束
数据(Data)是数据库中存储的基本对象
数据的定义:描述事物的符号记录
数据的种类:数字、文本、图形、图像、音频、视频
数据的语义:数据的含义
数据的特点:数据与其语义是不可分的
数据库系统的特点
-
数据结构化
-
数据的共享性高,冗余度低,易扩充
-
数据独立性高
-
数据由数据库管理系统统一管理和控制

三层结构、两个映像、物理独立性、逻辑独立性
Chapter 2
域,笛卡尔积,关系,元组,属性候选码,主码,外部码,主属性,非主属性,全码
域:一组具有相同数据类型的值的集合。 笛卡儿积:两个分别为n目和m目的关系R和S的笛卡尔积是一个n+m列的元组的集合。 关系:在域D1,D₂,…..,D,上笛卡尔积D1xD2x...xDn,的子集称为关系,表示为R(D,D2.…,D)。 元组:关系中的每个元素是关系中的元组, 属性:关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。由于域可以相同,为了加以区分,必须对每列起一个名字,称为属性。 主码,候选码,外部码 ① 候选码:关系中能惟一标识一个元组的某一属性组。
② 主码:若一个关系有多个候选码,则选定其中一个为主码。
③ 外部码:设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码K、相对应,则称F是基本关系R的外部码,简称外码。
主属性候选码的诸属性称为主属性
不包含在任何侯选码中的属性称为非主属性或非码属性
全码:所有属性构成码
Chapter 3
SQL的特点
-
综合统一
-
高度非过程化
-
面向集合的操作方式
-
以同一种语法结构提供多种使用方式:交互式、嵌入式
-
语言简洁,易学易用
Chapter 4 数据库安全性
数据库安全性控制常用方法和技术
-
用户身份鉴别
-
存取控制
-
主体、客体定义
-
主体:系统中的活动主体,代表实际的用户。
-
客体:系统中的被动实体.例如表,视图等。
-
-
自主存取控制方法定义和特点
-
定义:在自主存取控制方法中,用户对于不同的数据库对象有不同的存取权限,不同的用户对同一对象也有不同的权限,而且用户还可将其拥有的存取权限转授给其他用户。
-
特点:非常灵活
-
-
强制存取控制方法定义和特点
-
定义:在强制存取控制方法中,每一个数据库对象被标以一定的密级,每一个用户也被授予某一个级别的许可证。对于任意一个对象。只有具有合法许可证的用户才可以存取。
-
特点:比较严格
-
-
-
视图机制
-
审计数据加密
-
推理控制、隐蔽信道、数据隐私保护
Chapter 5 数据库完整性
什么是数据库安全性?什么是完整性?数据库完整性和安全性的区别和联系?
数据的完整性
-
防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据
-
防范对象:不合语义的、不正确的数据
数据的安全性
-
保护数据库防止恶意的破坏和非法的存取
-
防范对象:非法用户和非法操作
数据的完整性和安全性是两个不同概念,数据库的完整性是指数据的正确性和相容性。数据库的安全性是指保护数据库,以防止不合法的使用造成的数据泄密、更改或破坏。其相同点是两者都是对数据库中的数据进行控制,各自所实现的功能目标不同。
三类完整性约束定义
-
实体完整性:主码不为空
-
参照完整性:外码只能是参照对象所有的值或者空
-
用户定义的完整性:用户定义的完整性就是针对某一具体应用的数据必须满足的语义要求
为维护数据库的完整性,DBMS必须能够提供定义完整性约束条件的机制、提供完整性检查的方法、违约处理
外码
设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码
基本关系R 称为参照关系 (Referencing Relation)
基本关系S 称为被参照关系 (Referenced Relation) 或目标关系 (Target Relation)
可能破坏参照完整性的情况及违约处理

Chapter 6 关系数据理论
什么是数据依赖?
-
一个关系内部属性与属性之间的一种约束关系
-
通过属性间值的相等与否体现出来的数据间相关联系
-
现实世界属性间相互联系的抽象
-
数据内在的性质
-
语义的体现
问题
数据冗余太大、更新异常、插入异常、删除异常
原因:存在于模式中某些数据依赖引起解决
方法:通过模式分解来消除其中不合适的数据依赖
范式
-
范式是符合某一种级别的关系模式的集合。
-
关系数据库中的关系必须满足一定的要求。
-
不同范式满足不同程度要求。
1NF
-
如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF
-
第一范式是对关系模式最起码的要求。不满足第一范式的数据库模式不能称为关系数据库。
-
但是满足第一范式的关系模式并不一定是一个好的关系模式。
2NF
定义6.6 若R∈1NF,且每一个非主属性完全函数依赖于码,则R∈2NF。
3NF
若R∈3NF,则每一个非主属性既不是部分依赖于码也不传递依赖于码。
BCNF
每一个决定因素都包含码
多值依赖
-
多值依赖定义(A和B互相多值依赖导致完全二分图)

-
多值依赖性质:
多值依赖与函数依赖的区别

规范化小结
-
关系数据库的规范化理论是数据库逻辑设计的工具。
-
目的:尽量消除插入、删除异常,修改复杂,数据冗余。
-
基本思想:逐步消除数据依赖中不合适的部分。
-
实质:概念单一化
关系模式的规范化过程

不能说规范化程度越高的关系模式越好
-
在设计数据库模式结构时,必须对现实世界的实际情况和用户应用需求作进一步分析,确定一个合适的、能够反映现实世界的模式。
-
规范化步骤可以在其中任何一步终止
Chapter 7 数据库设计
数据库设计分为6个阶段
-
需求分析
-
概念结构设计
-
逻辑结构设计
-
物理结构设计
-
数据库实施
-
数据库运行和维护
需求分析和概念结构设计独立于任何DBMS
逻辑结构设计和物理结构设计与DBMS密切相关
E-R图向关系模型转换要解决的问题
如何将实体型和实体间的联系转换为关系模式?
一个实体型转换为一个关系模式
如何确定这些关系模式的属性和码?
关系的属性就是实体的属性,关系的码就是实体的码。
转换内容:将E-R图转换为关系模型:将实体、实体的属性和实体之间的联系转换为关系模式
实体间的联系转换为关系模式:
-
一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并
-
一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并
-
一个m:n联系转换为一个关系模式
-
三个或三个以上实体间的一个多元联系可以转换为一个关系模式。
-
具有相同码的关系模式可合并。
Chapter 8 数据库编程
嵌入式SQL是将SQL语句嵌入程序设计语言中,被嵌入的程序设计语言,如C、C++、Java,称为宿主语言,简称主语言。
游标
-
游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。
-
每个游标区都有一个名字
-
用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理。
Chapter 9 关系查询处理和查询优化
查询处理步骤
查询分析->查询检查->查询优化->查询执行
查询优化分为代数优化和物理优化
连接操作实现
-
嵌套循环方法(nested loop)
-
排序-合并方法(sort-merge join 或merge join)
-
索引连接(index join)方法
-
哈希连接(Hash Join)方法
选择操作的启发式规则
对于小关系,使用全表顺序扫描,即使选择列上有索引。
对于大关系,启发式规则:
-
对于选择条件是 “主码=值”的查询,查询结果最多是一个元组,可以选择主码索引。一般的RDBMS会自动建立主码索引。
-
对于选择条件是 “非主属性=值”的查询,并且选择列上有索引,要估算查询结果的元组数目。如果比例较小(<10%)可以使用索引扫描方法,否则还是使用全表顺序扫描。
-
对于选择条件是属性上的非等值查询或者范围查询,并且选择列上有索引,要估算查询结果的元组数目,如果比例较小(<10%)可以使用索引扫描,否则还是使用全表顺序扫描。
-
对于用AND连接的合取选择条件,如果有涉及这些属性的组合索引,优先采用组合索引扫描方法,如果某些属性上有一般的索引,则可以用索引扫描方法,否则使用全表顺序扫描。
-
对于用OR连接的析取选择条件,一般使用全表顺序扫描
p275->p279
p286
Chapter 10 数据库恢复技术
事务:所谓事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。
事务的特性
-
原子性
-
一致性
-
隔离性
-
持续性
恢复技术能保证事务的原子性、持续性。
并发控制技术能保证事务的一致性,隔离性。
故障种类
事务内部的故障
系统故障(软故障)
介质故障(硬故障)
计算机病毒
p295
什么是数据转储?分类
数据转储是指DBA将整个数据库复制到磁带或另一个磁盘上保存起来的过程,备用数据称为后备副本或后援副本。
静态转储与动态转储*海量转储与增量转储
2*2=4
p297
日志文件
日志文件的作用
日志文件在数据库恢复中起着非常重要的作用,可以用来进行事务故障恢复和系统故障恢复,并协助后备副本进行介质故障恢复。具体作用是: (1)事务故障恢复和系统故障恢复必须用日志文件。 (2)在动态转储方式中必须建立日志文件,后备副本和日志文件结合起来才能有效地恢复数据库。 (3)在静态转储方式中也可以建立日志文件,当数据库毁坏后可重新装入后援副本把数据库恢复到转储结束时刻的正确状态,然后利用日志文件把已完成的事务进行重做处理,对故障发生时尚未完成的事务进行撤销处理。这样不必重新运行那些已完成的事务程序就可把数据库恢复到故障前某一时刻的正确状态。
先写日志文件后写数据库?
登记的次序严格按并发事务执行的时间次序。 必须先写日志文件,后写数据库。
检查点方法的恢复步骤及优点
系统使用检查点方法进行恢复的步骤是:
(1)从重新开始文件中找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查点记录。
(2)由该检查点记录得到检查点建立时刻所有正在执行的事务清单ACTIVE-LIST。这里建立两个事务队列:
-
UNDO-LIST:需要执行UNDO 操作的事务集合;
-
REDO-LIST:需要执行 REDO 操作的事务集合。
把 ACTIVE-LIST 暂时放入 UNDO-LIST 队列,REDO 队列暂为空: (3)从检查点开始正向扫描日志文件。 ① 如有新开始的事务 T;,把T;暂时放入 UNDO-LIST 队列; ② 如有提交的事务 T,把T,从 UNDO-LIST 队列移到 REDO-LIST 队列;直到日志文件结束
(4)对UNDO-LIST 中的每个事务执行 UNDO 操作,对 REDO-LIST 中的每个事务执件结束。行 REDO 操作。
缺优点
p301
Chapter 11 并发控制
问题产生:允许多个用户同时使用数据库系统
特点:在同一时刻并发运行的事务可达数百个
并发操作带来的数据不一致性:
-
丢失修改
-
不可重复读
-
读"脏“数据
排它锁(X锁)
-
排它锁又称为写锁
-
若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。
-
保证其他事务在T释放A上的锁之前不能再读取和修改A。
共享锁(S锁)
-
共享锁又称为读锁
-
若事务T对数据对象A加上S锁,则其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。
-
保证其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。
封锁协议(笔记)
可串行化调度
可串行化调度:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行这些事务时的结果相同。
可串行性:并发事务正确调度的准则
一个给定的并发调度,当且仅当它是可串行化的,才认为是正确调度。
冲突可串行化调度
换顺序之后能串行,说明是可串行化
一个调度Sc在保证冲突操作的次序不变的情况下,通过众换两个事务不冲突操作次序得到另一个调度 Sc',如果Sc'是串行的,称调度 Sc,为迪突可违行化的调度。若一个度是冲突可串行化,则一定是可串行化的调度。因此可以用这种方法来判断一个调度是否是冲突可串行化的。
多粒度封锁
意向锁引进的原因
一般地,对某个数据对象加锁,系统要检查该数据对象上有无显式封锁与之冲突;再检查其所有上级结点,看本事务的显式封锁是否与该数据对象上的隐式封锁(即由于上级结点已加的封锁造成的)冲突;还要检查其所有下级结点,看它们的显式封锁是否与本事务的隐式封锁(将加到下级结点的封锁)冲突。显然,这样的检查方法效率很低。为此人们引进了一种新型锁,称为意向锁
意向锁类型:
IS:如果对一个数据对象加IS锁,表示它的后裔结点拟(意向)加S锁。例如,事务T要对R;中某个元组加S锁,则要首先对关系R和数据库加IS锁
IX:如果对一个数据对象加IX锁,表示它的后裔结点拟(意向)加X锁。例如,事务T要对R,中某个元组加X锁,则要首先对关系R和数据库加IX锁。
SIX:如果对一个数据对象加 SIX 锁,表示对它加S锁,再加IX锁,即 SIX-S+IX。例如对某个表加SIX锁,则表示该事务要读整个表(所以要对该表加S锁),同时会更新个别元组(所以要对该表加 IX锁)。
551

被折叠的 条评论
为什么被折叠?



