第一章 绪论
1. 数据库概念:
数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合。数据库中的数据按一定的数据模型组织。描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
2. 数据库的基本特征:
数据按一定的数据模型组织、描述和储存,可为各种用户共享,冗余度较小,数据独立性较高,易扩展。概括的讲,数据库数据具有永久储存,有组织,可用向三个基本特点。
3. 数据库管理系统:
位于用户与操作系统之间的一层数据管理软件是系统软件,是基础软件,是一个大型复杂的软件系统
4. 数据库管理系统的主要功能
数据定义功能,数据组织、存储和管理,数据操纵功能,数据库的事务管理和运行管理,数据库的建立和维护功能。
5. 数据库系统的构成:
- 数据库
- 数据库管理系统(及其应用开发工具)
- 应用程序,
- 数据库管理员。
6. 数据管理技术的发展过程
人工管理阶段(20世纪50年代中之前)不独立
文件系统阶段(20世纪50年代末–60年代中)独立性差
数据库系统阶段(20世纪60年代末–现在)较高的独立性
7、数据库系统的特点:
- 数据结构化、
- 数据的共享性高,
- 冗余度低且易扩充、
- 数据独立性高、
- 数据由数据库管理系统统一管理和控制
8、数据库独立性:
- 物理独立性: 指用户的应用程序与数据库中数据的物理存储是相互独立的。当数据的物理存储改变了,应用程序不用改变。
- 逻辑独立性: 指用户的应用程序与数据库的逻辑结构是相互独立的。数据的逻辑结构改变了,应用程序不用改变。
数据独立性由数据库管理系统的二级映像功能来保证。
9、据库管理系统提供的数据控制功能
(1)数据的安全性(Security)保护 保护数据以防止不合法的使用造成的数据的泄密和破坏。
(2)数据的完整性(Integrity)检查 保证数据的正确性、有效性和相容性。
(3)并发(Concurrency)控制 对多用户的并发操作加以控制和协调,防止相互干扰而得到错误的结果。
(4)数据库恢复(Recovery) 将数据库从错误状态恢复到某一已知的正确状态。
10、常见数据模型:
10.1概念模型:
(1)实体(Entity) 客观存在并可相互区别的事物称为实体。可以是具体的人、事、物或抽象的概念。
(2)属性(Attribute) 实体所具有的某一特性称为属性。一个实体可以由若干个属性来刻画。
(3)码(Key) 唯一标识实体的属性集称为码。
(4)实体型(Entity Type) 用实体名及其属性名集合来抽象和刻画同类实体称为实体型
(5)实体集(Entity Set) 同一类型实体的集合称为实体集
(6)联系(Relationship) 现实世界中事物内部以及事物之间的联系在信息世界中反映为实体(型)内部的联系和实体(型)之间的联系。
- 实体内部的联系通常是指组成实体的各属性之间的联系
- 实体之间的联系通常是指不同实体集之间的联系
- 实体之间的联系有一对一、一对多和多对多等多种类型。
- 概念模型的一种表示方法,实体联系方法(E-R图):
10.2数据模型
数据模型的组成要素: 数据结构,数据操作,完整性约束条件
11、常见的数据模型:
11.1:层次模型(Hierarchical Model) 满足下面两个条件的基本层次联系的集合为层次模型
- 有且只有一个结点没有双亲结点,这个结点称为根结点
- 根以外的其它结点有且只有一个双亲结点
11.2 网状模型(Network Model) 满足下面两个条件的基本层次联系的集合:
- 允许一个以上的结点无双亲;
- 一个结点可以有多于一个的双亲。
11.3 关系模型(Relational Model) 每个关系的数据结构是一张二维表。
12、数据库系统的三级模式结构
12.1:模式(也称逻辑模式) 数据库中全体数据的逻辑结构和特征的描述
- 所有用户的公共数据视图
- 一个数据库只有一个模式
- 模式的地位:是数据库系统模式结构的中间层
- 与数据的物理存储细节和硬件环境无关
- 与具体的应用程序、开发工具及高级程序设计语言无关
2.外模式(也称子模式或用户模式) 数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述
- 数据库用户的数据视图,是与某一应用有关的数据的逻辑表示
- 外模式的地位:介于模式与应用之间
- 模式与外模式的关系:一对多
- 外模式与应用的关系:一对多
- 外模式的用途:保证数据库安全性的一个有力措施
- 每个用户只能看见和访问所对应的外模式中的数据
3.内模式(也称存储模式) 是数据物理结构和存储方式的描述
- 是数据在数据库内部的表示方式
- 一个数据库只有一个内模式
13、数据库的二级映像功能与数据独立性
外模式/模式映像保证数据的逻辑独立性
模式/内模式映象保证数据的物理独立性
第二章 关系数据库
1、关系模型有关系数据结构、关系操作集合和关系完整性约束三部分组成。
2、域是一组具有相同数据类型的值的集合。
3、关系有三种类型:基本关系,查询表,视图表
4、关系的五种基本操作是:选择,投影,并,差,笛卡尔积
5、关系模型中有三类完整性约束:实体完整性,参照完整性,用户定义完整性
6、
7、关系演算是以数理逻辑中的谓词演算为基础的。
第三章SQL语言
1、SQL(Structured Query Language)结构化查询语言,是关系数据库的标准语言。SQL是一个通用的、功能极强的关系数据库语言。
2、SQL语言是一个综合的、功能极强同时有简洁易学的语言。集数据查询、数据操纵、数据定义、数据控制功能与一体。
3、SQL语言的特点:综合统一,高度非过程化,面向集合的操作方式,以同一种语法结构提供多种使用方法、语法简洁,易学易用。
4、视图的作用:
- 视图能够简化用户的操作
- 视图使用户能以多种角度看待同一数据
- 视图对重构数据库提供了一定程度的逻辑独立性
- 视图能够对机密数据提供安全保护
- 适当的利用视图可以更清晰的表达查询
第四章 数据库安全性
4.1数据库的安全性
数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏 。系统安全保护措施是否有效是数据库系统主要的性能指标之一。
4.2用户标识和鉴别
-
1.系统提供的最外层安全保护措施
-
2.用户标识:由用户名和用户标识号组成(用户标识号在系统整个生命周期内唯一)
-
3.用户身份鉴别的方法
- 1.静态口令鉴别
静态口令一般由用户自己设定,这些口令是静态不变的 - 2.动态口令鉴别
口令是动态变化的,每次鉴别时均需使用动态产生的新口令登录数据库管理系统,即采用一次一密的方法 - 3.生物特征鉴别
通过生物特征进行认证的技术,生物特征如指纹、虹膜和掌纹等 - 4.智能卡鉴别
智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能
- 1.静态口令鉴别
4.3存取控制
-
1、存储控制机制:主要包括定义用户权限和合法权限检查两部分。
-
2、存储控制两类方法:
- 自主存取控制:统一用户对不同数据库有不同权限,不同用户对同一数据库也有不同权限
- 强制存取控制:只有合法许可证的用户才可以进行存取
4.4审计
- 1.审计:启用一个专用的审计日志(Audit Log),将用户对数据库的所有操作记录在上面,审计员利用审计日志,监控数据库中的各种行为,找出非法存取数据的人、时间和内容
- 2.审计事件
- 服务器事件
审计数据库服务器发生的事件 - 系统权限
对系统拥有的结构或模式对象进行操作的审计
要求该操作的权限是通过系统权限获得的 - 语句事件
对SQL语句,如DDL、DML、DQL及DCL语句的审计 - 模式对象事件
对特定模式对象上进行的SELECT或DML操作的审计
- 服务器事件
- 3.审计功能
-
基本功能
- 提供多种审计查阅方式提供多种审计查阅方式
- 多套审计规则:一般在初始化设定
- 提供审计分析和报表功能
-
审计日志管理功能
- 防止审计员误删审计记录,审计日志必须先转储后删除
- 对转储的审计记录文件提供完整性和保密性保护
- 只允许审计员查阅和转储审计记录,不允许任何用户新增和修改审计记录等
-
提供查询审计设置及审计记录信息的专门视图
-
4.5视图
- 1.把要保密的数据对无权存取这些数据的用户隐藏起来,对数据提供一定程度的安全保护
- 2.间接地实现支持存取谓词的用户权限定义
4.6数据加密
-
1.数据加密
防止数据库中数据在存储和传输中失密的有效手段 -
2.加密的基本思想
根据一定的算法将原始数据—明文(Plain text)变换为不可直接识别的格式—密文(Cipher text) -
3.加密方法
-
存储加密
-
传输加密
-
第五章 数据库完整性
1、为维护数据库的完整性,数据库管理系统必须能够实现如下功能:
- 提供定义完整性约束条件的机制
- 提供完整性检查的方法
- 进行违约处理
2、完整性包括:
-
实体完整性:有主键,即每一标识一条记录、非空;
-
参照完整性:有外键,且外键的值范围受另一张数据表中某列取值范围的约束;
-
用户自定义完整性:定义的数据库约束条件,比如限制属性的取值类型及范围等;
第六章 关系数据库理论
1、为了解决插入、删除、更新和数据冗余等问题引入规范化。
2、对于非规范化的模式,经过使属性域变为简单域转变为范式
- 1NF:不可分割,属性都是单一分开的;
- 2NF:指每个表必须有一个(有且仅有一个)数据项作为关键字或主键(primary key),其他数据项与关键字或者主键一一对应,即其他数据项完全依赖于关键字或主键。
- 3NF:在满足第二范式的基础上,任何非主属性不依赖于其他非主属性,消除了传递依赖。
- 将1NF经过消除非主属性对主关键字的部分依赖转变为2NF,将2NF经过消除非主属性对主关键字的传递依赖转变为3NF。
第七章 数据库设计
1、数据库设计的基本步骤:
- 需求分析,
- 概念设计,
- 逻辑结构设计,
- 物理结构设计,
- 数据库实施,
- 数据库运行和维护。
2、E-R图向关系模型的转换
第八章 数据库编程
1、存储过程
第九章
1、查询处理的步骤:
- 查询分析,
- 查询检查,
- 查询优化,
- 查询执行。
第十章 数据库回复技术
1、COMMIT
事务正常结束
提交事务的所有操作(读+更新)
事务中所有对数据库的更新写回到磁盘上的物理数据库中
ROLLBACK
事务异常终止
事务运行的过程中发生了故障,不能继续执行
系统将事务中对数据库的所有已完成的操作全部撤销
事务滚回到开始时的状态
2、事务的ACID特性:
- 原子性(Atomicity)
- 一致性(Consistency)
- 隔离性(Isolation)
- 持续性(Durability )
3、如何建立冗余数据
- 数据转储(backup)
- 静态转储
在系统中无运行事务时进行的转储操作
转储开始时数据库处于一致性状态
转储期间不允许对数据库的任何存取、修改活动
得到的一定是一个数据一致性的副本- 优点:实现简单
- 缺点:降低了数据库的可用性
转储必须等待正运行的用户事务结束
新的事务必须等转储结束
- 动态转储
转储操作与用户事务并发进行
转储期间允许对数据库进行存取或修改- 优点
不用等待正在运行的用户事务结束
不会影响新事务的运行 - 缺点
不能保证副本中的数据正确有效
例在转储期间的某时刻Tc,系统把数据A=100转储到磁带上,而在下一时刻Td,某一事务将A改为200。后备副本上的A过时了
- 优点
- 静态转储
- 登记日志文件(logging)
- 日志文件(log file)是用来记录事务对数据库的更新操作的文件
- 日志文件的作用:
- 事务故障恢复和系统故障恢复必须用日志文件。
- 在动态转储方式中必须建立日志文件,后备副本和日志文件结合起来才能有效地恢复数据库。
- 在静态转储方式中,也可以建立日志文件。
- 当数据库毁坏后可重新装入后援副本把数据库恢复到转储结束时刻的正确状态
- 利用日志文件,把已完成的事务进行重做处理
- 对故障发生时尚未完成的事务进行撤销处理
- 不必重新运行那些已完成的事务程序就可把数据库恢复到故障前某一时刻的正确状态
第十一章 并发控制
1、事务是并发控制的基本单位。
2、事务并发执行带来的问题
- 会产生多个事务同时存取同一数据的情况
- 可能会存取和存储不正确的数据,破坏事务隔离性和数据库的一致性
3、并发控制机制的任务
- 对并发操作进行正确调度
- 保证事务的隔离性
- 保证数据库的一致性
4、并发操作带来的数据不一致性
- 丢失修改(Lost Update)
- 不可重复读(Non-repeatable Read)
- 读“脏”数据(Dirty Read)
5、基本封锁类型
- 排它锁(Exclusive Locks,简记为X锁)
- 共享锁(Share Locks,简记为S锁)
6、X锁和S锁
- X锁:排他锁 又称写锁。若事务T对数据对象A加上X锁,事务T可以读A也可以修改A,其他事务不能再对A加任何锁,直到T释放A上的锁。这保证了其他事务在T释放A上的锁之前不能再读取和修改A。
- S锁:共享锁 又称读锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。
- 在运用X锁和S锁对数据对象加锁时,需要约定一些规则,这些规则为封锁协议(Locking Protocol)。
- 何时申请X锁或S锁
- 持锁时间
- 何时释放
7、封锁协议
-
一级封锁协议
事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。一级封锁协议可防止丢失修改,并保证事务T是可恢复的。 -
二级封锁协议
一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁。
二级封锁协议可以防止丢失修改和读“脏”数据。 -
三级封锁协议
一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。
三级封锁协议可防止丢失修改、读脏数据和不可重复读。
8、避免活锁
- 采用先来先服务的策略
当多个事务请求封锁同一数据对象时
按请求封锁的先后次序对这些事务排队
该数据对象上的锁一旦释放,首先批准申请队列中第一个事务获得锁
9、产生死锁的原因
两个或多个事务都已封锁了一些数据对象,然后又都请求对已为其他事务封锁的数据对象加锁,从而出现死等待。
10、两段锁协议
- 数据库管理系统普遍采用两段锁协议的方法实现并发调度的可串行性,从而保证调度的正确性
- 两段锁协议
指所有事务必须分两个阶段对数据项加锁和解锁
在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁
在释放一个封锁之后,事务不再申请和获得任何其他封锁 - “两段”锁的含义
事务分为两个阶段
第一阶段是获得封锁,也称为扩展阶段
事务可以申请获得任何数据项上的任何类型的锁,但是不能释放任何锁
第二阶段是释放封锁,也称为收缩阶段
事务可以释放任何数据项上的任何类型的锁,但是不能再申请任何锁