数据库系统概论笔记

来源:一只小杰鸽 发布时间:2020-04-28 17:01:45 阅读量:1637

数据库系统概论

绪论

数据库DB


数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合。


数据库管理系统DBMS


数据库管理系统是位于用户与操作系统之间的一层数据管理软件(计算机的基础软件)


(1)数据定义功能


(2)数据组织、存储和管理


(3)数据操纵功能


(4)数据库的事务管理和运行管理


(5)数据库的建立和维护功能


(6)其他功能


数据库系统


数据库系统是由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员(DBA)组成的存储、管理、处理和维护数据的系统。


数据库系统的特点


(1)数据结构化


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


(2)数据独立性高


数据独立性是由数据库管理系统提供的二级映像功能来保证的。


a.物理独立性是指用户的应用程序与数据库中数据的物理存储是相互独立的。


b.逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的。


概念模型


(1)信息世界中的基本概念


a.实体


b.属性


c.码


d.实体型


e.实体集


f.联系


(2)概念模型的一种表示方法:实体-联系方法(E-R方法/E-R模型)


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


(1)模式


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


一个数据库只有一个模式。


(2)外模式


外模式也称子模式或用户模式,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。


(3)内模式


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


数据库系统的二级映像功能与数据独立性


(1)外模式/模式映像


当模式改变时,由数据库管理员对各个外模式/模式的映像作相应改变,可以使模式保持不变,从而应用程序也不必改变。保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。


(2)模式/内模式映像


当数据库的存储结构改变时,由数据库管理员对模式/内模式映像作相应改变,可以使模式保持不变,从而应用程序也不必改变。保证了数据与程序的物理独立性,简称数据的物理独立性。


关系数据库

关系


候选码、主码、主属性、非主属性(非码属性)


基本关系的六条性质:


(1)列是同质的


(2)不同列可出自同一个域,每一列为一个属性,不同属性(列)给不同属性名


(3)列的顺序可任意交换


(4)任意两个元组不能完全相同


(5)行的顺序可任意交换


(6)每一分量是不可分的数据项


关系模式:关系的描述R(U, D, dom, F),简记为R(U)或R(A1, A2, …, An)


关系操作


查询操作和插入、删除、修改操作两部分


关系的完整性


(1)实体完整性


(2)参照完整性


(3)用户定义的完整性


关系代数


(1)传统的集合运算(前三者都有n个属性且相应属性取自同一个域)


并(合并)


差(去除)


交(共同)


笛卡尔积(元组连接)


(2)专门的关系运算


选择(满足条件的行)


投影(列的组合)


连接(元组连接且满足条件θ)


a.等值连接(条件θ为相等)


b.自然连接(等值连接去除重复列,默认舍弃悬浮元组)


除(R÷S,R中公共属性在非公共属性上的象集包含了S中公共属性投影集合,R÷S结果为这些满足条件的非公共属性的元组集合)


关系数据库标准语言SQL

数据定义


对模式SCHEMA、基本表TABLE、视图VIEW、索引INDEX的创建CREATE、删除DROP和修改ALTER(9种组合,不能修改模式、视图和索引)(10种组合,不能修改模式和视图)


数据查询


单表查询

查询所有*


消除重复行DISTINCT,默认是全部行ALL


范围闭区间(NOT) BETWEEN AND


属性值的集合(NOT) IN


字符匹配LIKE+通配符(任意长度% 任意单个字符_)(+ 转义符ESCAPE)


空值IS (NOT) NULL


按属性列排序ORDER BY + 升序ASC(默认,空值最后)/降序DESC(空值最先)


元组个数COUNT(*) (遇到空值不影响)


某列中值的:个数COUNT(),总和SUM(),平均值AVG(),最大值MAX(),最小值MIN() (遇到空值跳过)


分组GROUP BY (+ HAVING)


连接查询

自身连接FIRST,SECOND


外连接LEFT/RIGHR/FULL OUTER JOIN ON()


嵌套查询

子查询结果属性值的集合(NOT) IN


子查询结果的某个值ANY


子查询结果的所有值ALL


返回查询结果(NOT) EXISTS


多层嵌套


集合查询

查询结果是元组的集合,可以进行集合操作并UNION、交INTERSECT、差EXCEPT


基于派生表查询

子查询生成的临时派生表作为主查询的对象,AS设置别名


数据更新


插入

INSERT


INTO


VALUES


修改

UPDATE


SET


WHERE


删除

DELETE


FROM


WHERE


空值


空值与其他值算术运算为空值,比较运算为UNKNOWN


视图的作用


视图能够简化用户的操作

视图使用户能以多种角度看待同一数据

视图对重构数据库提供了一定程度的逻辑独立性

视图能够对机密数据提供安全保护

适当利用视图可以更清晰地表达查询

数据库安全性

数据库的安全性


是指保护数据库以防止不合法使用所造成的数据泄漏、更改或破坏。


TCSEC/TDI(四组七个等级)


C1级(自主安全保护):该级只提供了非常初级的自主安全保护,能实现对用户和数据的分离。进行自主存取控制(DAC),保护或限制用户权限的传播。现有的商业系统往往稍作改进即可满足要求。


B1级(标记安全保护):对系统的数据加以标记,并对标记的主体和客体实施强制存取控制(MAC)以及审计等安全机制。B1级别的产品才被认为是真正意义上的安全产品。


自主存取控制


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


因此自主存取控制非常灵活。


强制存取控制


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


因此强制存取控制相对比较严格。


数据库完整性

(1)实体完整性


说明方法:在列级定义(只适合单属性构成的码)、在表级定义


检查:主码值是否唯一、主码的各个属性是否为空


处理:拒绝插入或修改


(2)参照完整性


检查:参照表插入、修改;被参照表删除、修改


处理:拒绝执行、级联删除、设置为空值


(3)用户定义的完整性


a.属性上约束条件


检查:列值非空、列值唯一、检查列值是否满足一个条件表达式(CHECK短语)


处理:拒绝执行


b.元组上的约束条件(不同属性之间的约束条件)


检查:CHECK语句定义约束条件


处理:拒绝执行


关系数据库理论

函数依赖


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


完全函数依赖


在R(U)中如果X→Y,并且对X的任何一个真子集X’,都有X’→Y,则称Y对X完全函数依赖,记作:X → Y


部分函数依赖


若X → Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作:X → Y


传递函数依赖




候选码




主属性


包含在任何候选码中的属性。


非主属性(非码属性)


不包含在任何候选码中的属性。


外码


关系模式R中的属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外部码,简称外码。


1NF


每一个分量必须是不可分的数据项

2NF


若R∈1NF,对R的每一个非平凡的函数依赖X→Y,要么Y是主属性,要么X不是任何码的真子集,则R∈2NF。

若R∈1NF,且每一个非主属性完全函数依赖于任何一个候选码,则R∈2NF。

2NF在1NF基础上消除了非主属性对码的部分函数依赖。


3NF


若R∈1NF,对R中的每一个非平凡的函数依赖X→Y,要么Y是主属性,要么X中含有码,则R∈3NF。

3NF在2NF的基础上消除了非主属性对码的传递函数依赖,不存在非主属性对非主属性的函数依赖。


BCNF


若R∈1NF,对R中的每一个非平凡的函数依赖X→Y,X中均含有码,则R∈BCNF。

不允许主属性对码的部分和传递函数依赖。


多值依赖


设有关系模式R(U),X, Y, Z是U的非空子集。对于R的任一关系r,给定一对(x, z)值,就有一组Y的值与之对应,这组值仅仅决定于x值而与z值无关,则称“Y多值依赖于X”或“X多值决定Y”。记作X→→Y。


4NF


若关系模式R(U,F)∈1NF,如果对于R的每个非平凡多值依赖X →→ Y(Y不包含于X),X都含有码,则称R(U,F)∈4NF。


4NF消除了多值依赖。


模式分解


无损连接性和函数依赖


具有无损连接性:分解后的(几个)小模式可自然连接恢复位原来的模式


保持函数依赖:分解前后函数依赖集等价


分解为一组具有无损连接性,保持函数依赖,且满足3NF的关系范式

数据库设计

数据库设计基本步骤


需求分析


概念结构设计 构造ER模型


逻辑结构设计 生成一组关系模式


物理结构设计 设计具体DBMS下的表、视图、索引


数据库实施


数据库运行和维护


ER方法


实体、联系以及它们的属性,关系是一对一,一对多还是多对多,是否存在弱实体型。


如果一个实体型的存在依赖于其他实体型的存在,则这个实体型叫做弱实体型,否则叫做强实体型。一般地讲,如果不能从一个实体型的属性中找出可以作为码的属性,则这个实体型是弱实体型。


ER模型到关系模型的9步映射算法(前七步)


S1: 每一强实体用一个新表表示


对ER模型中的每一实体E创建对应的新表T

确定新表T的属性:

E的所有简单属性转换为对应的表T的属性

对于E的复合属性,直接从其简单成分转换

确定T的主码和Unique码

E的码转换为候选码,选定一个(意义最明显的)为主码,其余作Unique码

S2: 处理ER模型中所有参与1:1标识联系的弱实体W


找出W所依赖的强实体对应的表T

在T表中加入W的所有简单属性和复合属性的简单成分

S3: 处理ER模型中所有参与1:N或M:N标识联系的弱实体W


为W创建对应的新表T

确定新表T的属性:

E的所有简单属性转换为对应的表T的属性

对于E的复合属性,直接从其简单成分转换

确定T的主码

对于1:N联系,T中增加W所依赖的强实体对应表的主码为外码,T的主码为该外码+W的鉴别器(部分码)

如果是M:N联系,构建新列(具有惟一值)为主码

S4: 处理ER模型中每一二元1:1联系R


确定参与该联系的实体型转换的表S和T

选定S(最好是全参与的一方,推广到参与程度高的一方)

将T的主码作为外码加入S

将联系R的所有简单属性和复合属性成分作为列加入S

S5: 处理ER模型中每一二元1:N联系R


确定处于N端的实体表S和1端的实体表T

将T的主码作为外码加入S

将R的所有简单属性和复合属性成分作为列加入S

S6: 处理ER模型中的每一多元联系和二元(M:N联系)R


为R创建对应的新表T

将R的所有简单属性和复合属性成分作为列加入T

将参与联系的(强、弱)实体型的主码作为外码加入T

将(上步得到的)所有外码组合,共同构成T的主码

S7: 处理ER模型中的每一多值属性A


为A创建对应的新表T

将A的所有简单属性和复合属性成分作为列加入T

将A所属的实体或联系转换得到的表的主码作为外码加入T

将(上步得到的)外码和A对应的全部属性确定为T的主码

关系查询处理和查询优化

1.选择变串连


2.尽可能先做选择


3.尽可能先做投影


4.同时执行多个选择和投影


5.分组


数据库恢复技术

事务


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


事务是恢复和并发控制的基本单位。


保证事务ACID特性是事务处理的重要任务。


事务的特性(ACID)


原子性(Atomicity) :最小工作单位


一致性(Consistency): 一个正确状态到另一个正确状态


隔离性(Isolation) :事务不相互干扰


持续性(Durability) :事务提交对数据库影响是永久性的


事务ACID特性可能遭到破坏的因素


多个事务并行运行时,不同事物的操作交叉执行

事务在运行过程中被强制停止

数据库恢复


数据库管理系统必须具有把数据库从错误状态恢复到某一已知的正确状态的功能


恢复的基本原理:冗余


建立冗余数据最常用的技术是数据转储和登记日志文件。


数据转储


按照状态:动态转储、静态转储


按照方式:海量转储、增量转储


登记日志文件


日志文件的作用


事务故障恢复和系统恢复必须用日志文件

在动态转储方式中必须建立日志文件,后备副本和日志文件结合起来才能有效地恢复数据库

在静态转储方式中也可以建立日志文件,当数据库毁坏后可重新装入后援副本把数据库恢复到转储结束时刻的正确状态,然后利用日志文件把已完成的事务进行重做处理,对故障发生时尚未完成的事务进行撤销处理。这样不必重新运行那些已完成的事务程序就可把数据库恢复到故障前某一时刻的正确状态。

事务内部的故障


事务故障是指事务在运行至正常终点前被终止,这时恢复子系统应利用日志文件撤销(UNDO)此事务已对数据库进行的修改。


事务故障的恢复是由系统自动完成的,对用户是透明的。


恢复步骤:


反向扫描日志文件,查找未完成事务的更新操作


对该事务的更新操作做逆操作


继续反向扫描,查找该事务的其他更新操作,并做同样处理


直至该事务的开始标记为止


系统故障(软故障)


系统故障是指造成系统停止运转的任何事件,使得系统要重新启动。


系统故障的恢复是由系统在重新启动时自动完成的,不需要用户干预。


系统故障造成数据库不一致状态的原因


未完成事务对数据库的更新可能已写入数据库

已提交事务对数据库的更新可能还留在缓冲区没来得及写入数据库

恢复步骤


正向扫描日志文件,将已提交事务(故障发生前已COMMIT)标志记入REDO队列,未完成事务,将其事务标志记入UNDO队列

对UNDO队列中的事务进行UNDO处理

对REDO队列中的事务进行REDO处理

介质故障(硬故障)


介质故障是指外存故障,这类故障将破坏数据库或部分数据库,并影响正在存取这部分数据的所有事务。


介质故障的恢复需要数据库管理员介入,具体的恢复操作仍由数据库管理系统完成。


恢复方法


重装数据库,然后重做已完成的事务


恢复步骤


装入最新的数据库后备副本,使数据库恢复到故障发生前最近转储时的一致性状态

装入日志文件副本,利用日志文件进行REDO。

并发控制

并发控制


DBMS必须提供并发控制机制来协调并发用户的并发操作以保证并发事务的隔离性和一致性


封锁


事务T在对某个数据对象例如表、记录等操作之前,先向系统发出加锁请求,在获得封锁后,事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他的事务不能更新此数据对象。


排它锁(写锁,Exclusive Locks,简称X锁)


共享锁(读锁,Share Locks,简称S锁)


封锁协议



分享:
评论:
你还没有登录,请先
请您留言

感谢您的关注,当前客服人员不在线,请填写一下您的信息,我们会尽快和您联系。

提交