当前位置:   article > 正文

数据库系统概论知识点总结_数据库系统概论总结

数据库系统概论总结

一、绪论

1.1数据库的基本概念

数据data: 描述事物的符号,数据库中存储的基本对象;

数据库DataBase, DB: 长期存储在计算机内的、有组织的、可共享的大量数据的集合;

数据库管理系统DataBase Management System, DBMS: 位于用户与操作系统之间的一层数据管理软件;

数据库系统DataBase System, DBS: 由数据库DB、数据库管理系统DBMS、数据库应用系统(DBAS)、数据库管理员(DBA)和用户(User)组成。

1.2数据库系统的特点

①数据结构化

②数据的共享性高,冗余度低而且容易扩充

③数据独立性高: 物理独立性和逻辑独立性

④数据由数据库管理系统统一管理和控制

(结构化数据库)3个基本特点永久存储、有组织(结构化的)、可共享(多种用户/多个程序,并发共享);

1.3数据库系统的功能

数据定义:数据定义语言(DDL),定义数据库表等数据对象。

数据操纵:数据操纵语言(DML),实现对数据库的基本操作(查询、插入、删除、修改)。

数据库运行管理:对数据库实现统一管理、统一控制(安全性/完整性/并发控制/恢复) 。

数据库建立、维护:实用程序,实现数据加载/转储恢复/重组重构/性能监测分析等功能。

1.4数据模型的分类

数据模型主要分为两类概念模型(信息模型)和逻辑模型与物理模型。

概念模型按用户的观点建模,用于数据库设计,表示方法有E-R模型,由数据库设计人员完成;

逻辑模型按计算机的观点建模,用于DBMS实现,包括网状模型、层次模型、关系模型等等,由数据库设计人员完成;

物理模型是对数据最底层的抽象,由DBMS完成。

1.5数据模型的组成

数据模型的组成: 数据结构、数据操作、数据的完整性约束条件

数据模型是严格定义的一组概念的集合,需要精确描述系统的静态特性、动态特性和完整性约束条件因此数据模型由以下三个部分组成:
数据结构:描述系统的静态特性→描述数据库的组成对象以及对象之间的联系
数据操作:描述系统的动态特性→是对数据库中各种对象的实例所允许的操作的集合,其类型有查询和更新(增删改)
数据的完整性约束条件:用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效与相容,完整性约束条件是一组完整性规则的集合

1.6数据库的三级模式结构

数据库系统的三级模式结构:外模式、模式(逻辑模式)、内模式
在这里插入图片描述

外模式(子模式/用户模式)∶ 数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,数据库用户的数据视图,是与某应用有关的数据的逻辑表示;

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

内模式(存储模式): 数据物理结构和存储方法的描述,是数据在数据库内部的组织方式

1.7数据库的二级映像与数据独立性

外模式/模式映像: 保证了数据的逻辑独立性
当模式改变时,对外模式/模式的映像做出改变,保证外模式不变,应用程序由外模式编写,从而应用程序不变;
模式/内模式映像:保证了数据的物理独立性
当数据库的存储结构改变时,对模式/内模式映像做出改变,使模式不变,进而应用程序不变;

二、关系数据库

候选码:能够惟一标识关系中的一个元组的一个属性或最小属性组。

主码:指定候选码中的一个作为主码。

主属性:包含在任一候选码中的属性称为是主属性。

非主属性:不包含在任一候选码中的属性称为是非主属性。

全码:关系模式的所有属性组是这个关系模式的侯选码。
关于本章的其他内容可参考文章

三、关系数据库标准语言SQL

本章的内容可参考文章

四、数据库安全性(授权)

1数据库安全性概念

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

2、数据库安全性控制

用户身份鉴别:静态口令鉴别、动态口令鉴别、生物特征鉴别、智能卡鉴别;

存取控制;

自主存取控制方法:包括授予(GRANT)和收回(REVOKE);

4.3如何授权: 授予GRANT

发出如下语句的可以是数据库管理员、也可以是数据库对象创建者、也可以是已经拥有该权限的用户

GRANT 权限 ON 对象类型 对象名 TO 用户名 [WITH GRANT OPTION];

权限: 查询权限SELECT,全部操作权限ALL PRIVILEGES

对象类型&对象名: 对象类型可以是TABLE也可以是VIEW,对象名为对应的表名或者视图名

用户名: 可以是指定用户,也可以是全体用户PUBLIC

如果没有指定WITH GRANT OPTION子句,则获得某种权限的用户只能使用该权限,不能传播该权限

注意:SQL不允许循环授权即被授权者不能把权限再授回给授权者或其祖先

eg.把查询权限授给用户U1
GRANT SELECT ON TABLE Student TO U1;

4.4收回授权: 收回REVOKE

REVOKE 权限 ON 对象类型 对象名 FROM 用户名 [CASCADE|RESTRICT];

CASCADE: 级联回收。将用户传播出去的权限一并收回
RESTRICT: 受限回收。若用户传播过该权限,回收将会失败

eg.把用户U4修改学生学号的权限收回
REVOKE UPDATE(Sno)ON TABLE Student FROM U4;

五、数据库完整性

5.1数据库的完整性

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

正确性: 符合现实世界语义

相容性: 同一对象在不同表中的数据符合逻辑

5.2数据的完整性和安全性区别

数据的完整性(integrity)防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据

防范对象不合语义的、不正确的数据

数据的安全性(security)保护数据库防止恶意的破坏和非法的存取

防范对象:非法用户和非法操作

5.3三大完整性约束条件

①实体完整性: 主码唯一且非空

检查与违约处理: 检查主码是否唯一,如果不唯一则拒绝插入或修改;检查主码各个属性是否为空,只要有一个为空就拒绝插入或修改。

②参照完整性: 外码的约束

检查:对被参照表和参照表进行增删改操作时可能会破坏参照完整性,必须检查以保证两个表的相容性;

违约处理:外码约束可以在创建参照表时说明不同的违约策略。

③用户定义完整性: 属性上约束条件的定义

非空NOT NULL, 列值唯一UNIQUE, 检查列值是否满足一个表达式CHECK。
检查和违约处理:当向表中插入元组或者修改属性值时,关系数据库管理系统将检查属性上的约束条件是否被满足,如果不满足则操作被拒绝。

六、关系数据理论

不正当关系模式常出现的错误
(1)数据冗余(Data Redundancy)

浪费大量的存储空间每一个系主任的姓名重复出现,重复次数与该系所有学生的所有课程成绩出现次数相同。
(2)更新异常(Update Anomalies)

数据冗余 ,更新数据时,维护数据完整性代价大。某系更换系主任后,必须修改与该系学生有关的每一个元组。(3)插入异常(Insertion Anomalies)

如果一个系刚成立,尚无学生,则无法把这个系及其系主任的信息存入数据库。

(4)删除异常(Deletion Anomalies)

如果某个系的学生全部毕业了, 则在删除该系学生信息的同时,把这个系及其系主任的信息也丢掉了。

有关这一章节的其他知识(关系模式、函数依赖、码、范式等知识)可以参考关系数据库理论知识总结

七、数据库设计的步骤

7.1数据库设计的步骤

1、需求分析
调查机构情况与熟悉业务活动,明确用户的需求,确定系统的边界,生成数据字典和用户需求规格说明书

2、概念结构设计
将需求分析得到的用户需求抽象为概念模型,绘制E-R图

3、逻辑结构设计
将E-R图转换为与DBMS相符合的逻辑结构(包括数据库模式和外模式),例如E-R图向关系模型转换,再根据规范化理论对数据模型进行优化,设计用户子模式
4、物理结构设计
通常关系数据库物理设计的内容包括关系模式选择存取方法、以及设计关系、索引等数据库文件的物理存储结构5、数据库实施
建立实际数据库结构、试运行、装入数据

6、数据库运行和维护
维护数据库的安全性、完整性控制以及系统的转储和恢复; 性能的监督、分析和改进; 增加新功能; 发现错误和修改错误

7.2概念模型:ER图

绘制ER图

7.3逻辑模型:构建关系模式

将ER图转化成关系模式

八、数据库编程

8.1嵌入式SQL与主语言之间的通信

嵌入式SQL与主语言之间的通信包括:

①SQL向主语言传递执行状态信息,主要用SQL通信区

②实现主语言向SQL提供参数,主要用主变量实现

③将SQL语句查询数据库的结果交给主语言处理,主要用主变量和游标实现

8.2SQL通信区、主变量、游标的概念

①SQL通信区:

SQL语句执行后的执行状态信息将送到SQL通信区中,应用程序从中取出这些信息,据此决定接下来执行的语句。SQL通信区在应用程序中用EXEC SQL INCLUDE SQLCA 加以定义
②主变量:

SQL语句中使用的主语言程序变量简称为主变量(即SQL使用主语言的变量)

输入主变量由应用程序赋值,SQL引用; 输出主变量由SQL赋值或设置状态信息,返回应用程序;
主变量名和指示变量名前面要加冒号(:)作为标志
所有主变量和指示变量必须在SQL语句BEGIN DECLARE SECTION 与END DECLARE SECTION之间进行说明

③游标:

SQL是面向集合的,一条SQL语句可以产生或处理多条记录,而主语言是面向记录的,一组变量一次只能存放一条记录,因此引入游标来协调这两种不同的处理方式,用一个数据缓冲区来存放SQL语句的执行结果,每个游标区都有自己的名字。

十、数据库恢复技术

10.1事务

1、事务的概念
事务是数据库操作序列,这些操作要么全做,要么全不做,是不可分割的工作单位。一个事务可以是一个sql语句,一组sql语句,或者整个程序。一般来说,一个程序包含多个事务。
事务是恢复的基本单位,也是并发控制的基本单位。
2、定义事务的SQL语句
开始语句: BEGIN TRANSACTION;
结束语句: COMMIT;//表示提交事务的所有操作
或者ROLLBACK; //表示回滚,即事务运行中发生了某种故障,需要对已完成的操作进行撤销,回滚到事务开始的状态。
3、事务的4个特性(ACID):原子性,一致性,隔离性,持续性

①原子性:一个事务要么全做,要么全不做
②一致性:事务执行的结果必须一致。如果一个事务被迫中断,即事务中的一些操作做了,剩下的还没做,且做了的对数据库造成的修改已经存入物理数据库的话,就会造成数据库处于不一致的状态。因此事务要么全做,要么全不做,一致性和原子性是密切相关的
③隔离性:一个事务的执行不能被其他事务干扰
④持续性(也称为永久性):一个事务一旦提交,它对数据库中数据的改变应该是永久性的

10.2故障种类

数据库系统的故障种类: 事物内部的故障、系统故障、介质故障、计算机病毒

①事务内部的故障
事务内部的故障有的是可以通过事务程序本身发现的,有的是非预期的、不能由事务程序处理的
事务故障的情况下,数据库可能处于不正确的状态。恢复程序要在不影响其他事务运行的情况下,强行回滚该事务,即撤销该事务造成的修改,这类恢复操作称为UNDO(事务撤销)
②系统故障(软故障)
系统故障是指造成系统停止运转的任何事件,使得系统要重新启动(例如硬件错误、操作系统故障、DBMS代码错误、系统断电等等)
系统故障的情况下,在系统重新启动后,恢复子系统除了需要撤销未完成的事务以外,还需要REDO(事务重做)所有已提交的事务
③介质故障(硬故障)
外存故障,如磁盘损坏、磁头碰撞、瞬时强磁场干扰等

④计算机病毒

10.3故障恢复

DBMS必须对事务故障、系统故障和介质故障进行恢复

恢复机制涉及的两个关键问题: 1、如何建立冗余数据;2、如何利用这些冗余数据实施数据库的恢复

恢复的基本原理:利用存储在后备副本、日志文件和数据库镜像中的冗余数据来重建数据库

恢复中最经常使用的技术:数据库转储和登记日志文件

建立冗余数据的技术包括:

①数据转储
数据库管理员定期将整个数据库复制到磁带、磁盘或其他存储介质上保存起来,这些备用数据称为后备副本或后援副本。当数据库遭到破坏后可以将后备副本重新装入,但重装后备副本只能将数据库恢复到存储时的状态,要想恢复到故障发生时的状态,则必须重新运行自转储后的所有更新事务
数据转储分为: 静态转储(在系统中无运行事务时进行)、动态转储(转储期间允许对数据库进行存取或修改)
数据转储也可分为: 海量转储(每次转储全部数据库)、增量转储(每次只转储上一次转储后更新过的数据)
数据转储方法分为: 动态海量转储、动态增量转储,静态海量转储、静态增量转储

②登记日志文件

日志文件是用来记录事务对数据库的更新操作的文件,有两种格式: 以记录为单位、以数据块为单位

  • 以记录为单位的日志文件

需要登记的内容:各个事务的开始(BEGIN TRANSACTION)标记、各个事务的结束(COMMIT/ROLLBACK)标记、各个事务的所有更新操作
日志记录的内容: 事务标识(标明哪个是事务)、操作的类型(增删改)、操作对象(记录内部标识)、更新前数据的旧值(对插入而言,此项为空值)、更新后数据的新值(对删除而言,此项为空值)

  • 以数据块为单位的日志文件

日志记录的内容: 事务标识、被更新的数据块日志文件的作用:
(1)事务故障恢复和系统故障恢复必须用日志文件
(2)在动态转储方式中必须建立日志文件,后备副本和日志文件结合才能有效恢复数据库
(3) 在静态转储方式中也可以建立日志文件,当数据库毁坏后可以重新装入后备副本把数据库恢复到转储结束时刻的正确状态,然后利用日志文件,把已完成的事务进行重做处理,对故障发生时尚未完成的事务进行撤销处理
登记日志文件的两条原则:
(1)登记的次序严格按并发事务执行的时间次序

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

10.4故障恢复策略

不同的数据库系统故障下的恢复策略

1、事务故障的恢复(UNDO)
由系统自动完成,对用户透明:利用日志文件撤销(UNDO)此事务已对数据库进行的修改

2、系统故障的恢复(UNDO + REDO)
由系统重新启动时自动完成,不需要用户干预:撤销(UNDO)故障发生时未完成的事务,重做(REDO)已完成的事务
3、介质故障的恢复(重装备份并恢复到一致性状态 + RED)
最严重的一种故障: 重装数据库,重做(REDO)已完成的事务
*为避免磁盘介质出现故障影响数据库,许多数据库管理系统提供了数据库镜像功能(复制数据实现)

十一、并发控制

11.1并发控制概述

1、并发操作带来的数据不一致性:
①丢失修改:

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

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

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

2、并发控制:为了保证事务的隔离性和一致性,数据库管理系统需要对并发操作进行正确调度

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

11.2封锁

1、并发控制的基本方法:封锁(X锁、S锁)

①排他锁/写锁,X锁
若事务T对数据对象A加上X锁,则只允许事务T读取和修改A
事务T释放A上的锁之前:其他事务不能读取和修改A,不能再对A加任何类型的锁
②共享锁/读锁,S锁
若事务T对数据对象A加上S锁,则事务T可以读取A,但不能修改A
事务T释放A上的S锁之前:其他事务可以读取A,可以对A加S锁,但不能修改A,也不能对A加X锁
在这里插入图片描述

11.3封锁协议

封锁协议:约定何时申请X锁/S锁、持续时间、何时释放等等

不同的封锁协议,在不同的程度上为并发操作的正确调度提供一定的保证

常用的封锁协议:三级封锁协议

①一级封锁协议
事务T在修改数据R之前必须先对其加X锁,直到事务结束**(正常结束(COMMIT)非正常结束(ROLLBACK))才释放**;

一级封锁协议可防止丢失修改,不能保证可重复读和读“脏数据”

②二级封锁协议
事务T在修改数据R之前必须先对其加X锁(一级封锁协议),并且其他事务在读取数据之前必须先对其加S锁,读完后即可释放S锁;

二级封锁协议可以防止丢失修改和读“脏”数据,不能保证可重复读

③三级封锁协议
事务T在修改数据R之前必须先对其加X锁(一级封锁协议),并且其他事务在读取数据之前必须先对其加S锁,直到事务结束才释放(二级封锁协议是读完就能释放);

三级封锁协议可防止丢失修改、读脏数据和不可重复读
在这里插入图片描述

11.4活锁和死锁

活锁
事务T1封锁了数据R,事务T2又请求封锁R,于是T2等待;T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待;T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求…T2有可能永远等待,形成活锁
避免活锁:采用先来先服务的策略

死锁
事务T1封锁了数据R1,T2封锁了数据R2,T1又请求封锁R2,因T2已封锁了R2,于是T1等待T2释放R2上的锁,接着T2又申请封锁R1,因T1已封锁了R1,T2也只能等待T1,释放R1上的锁,这样T1在等待T2,而T2又在等待T1,T1和T2两个事务永远不能结束,形成死锁

解决活锁的方法:

DBMS在解决死锁的问题上更普遍采用的是诊断并解除死锁的方法

(1)死锁的预防(操作系统中广为采用的预防死锁的策略并不适合数据库)
1、一次封锁法:每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行

存在的问题: 降低系统并发度、难于事先精确确定封锁对象

⒉、顺序封锁法:预先对数据对象规定一个封锁顺序,所有事务按这个顺序实施封锁

存在的问题:成本高、难以实现

(2)死锁的诊断与解除
诊断:

1.超时法:如果一个事务的等待时间超过了规定的时限,就认为发生了死锁
⒉等待图法:构建事务等待图(有向图:节点表示运行的事务,边表示事务等待的情况),存在回路即死锁

解除:

选择一个处理死锁代价最小的事务,将其撤销(UNDO),释放此事务持有的所有的锁

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号