§1
1.数据库技术是随着数据管理的需要而产生的。数据处理的的核心是数据管理。数据管理指的是对数据的分类、组织、编码、储存、检索和维护。
2.数据管理技术共经历了三个阶段:
人工管理阶段、文件系统阶段、数据库系统阶段
3. 人工管理阶段:
数据不保存、数据需要由应用程序自己进行管理、
基本上没有文件概念、数据不共享
4.文件系统阶段:
数据可以长期保存、文件系统管理数据、
文件已经多样化、数据的存取基本上以记录为单位。
缺点有:数据共享性差,数据冗余度大;数据和程序缺乏独立性
5.数据库管理阶段:
(1)数据结构化。
(2)数据共享性高、冗余度小、易扩充。
(3)数据独立性高。
(4)统一的数据管理和控制:数据的安全性保护、数据的完整性控制、数据库恢复和并发控制。
(5)数据的最小存取单位是数据项。
DB:数据库(Database),DB是统一管理的相关数据的集合。
DBMS:数据库管理系统(Database Management System),DBMS是位于用户与操作系统之间的一层数据管理软件,为用户或应用程序提供访问DB的方法,包括DB的建立、查询、更新及各种数据控制。DBMS总是基于某种数据模型,可以分为层次型、网状型、关系型、面向对象型DBMS。
DBS:数据库系统(Database System),DBS是实现有组织地、动态地存储大量关联数据,方便多用户访问的计算机软件、硬件和数据资源组成的系统,即采用了数据库技术的计算机系统。
数据库技术:是一门研究数据库结构、存储、管理和使用的软件学科。
第一代数据库系统,即层次数据库系统和网状数据库系统
第二代数据库系统,即关系数据库系统
第三代数据库系统,即面向对象数据库系统
数据库学科的研究范围:数据库管理系统软件的研制; 数据库设计; 数据库理论
数据模型是现实世界数据特征的抽象。是数据库系统的核心和基础。
数据模型应满足三方面要求:一是能比较真实地模拟现实世界;二是容易为人所理解;三是便于在计算机上实现。
根据模型应用目的分为:⑴概念模型,也称信息模型,它是按用户的观点对数据和信息建模。⑵数据模型,主要包括层次模型、网状模型、关系模型和面向对象数据模型,它是按计算机系统的观点对数据建模。
数据模型三个要素:
⑴数据结构 描述系统的静态特性
⑵数据操作 描述系统的动态特性
⑶数据的约束条件 是一组完整性规则的集合
概念模型
数据描述的三个领域:现实世界、信息世界和机器世界
数据描述的两种形式:物理描述和逻辑描述。前者是指数据在存储设备上的存取方式,后者是指程序员或用户以用以操作的数据形式。
两个实体型之间的联系可以分为三类:
一对一联系(1∶1);一对多联系(1∶n);多对多联系(m∶n)
E-R图提供了表示实体型、属性和联系的方法。实体-联系方法(E-R方法)是抽象和描述现实世界的有力工具。
实体型:用矩形表示,矩形框内写明实体名。
属性:用椭圆形表示,并用无向边将其与相应的实体连接起来。
联系:用菱形表示,菱形框内写明联系名,并用无向边分别志有关实体连接起来,同时在无向边旁标上联系的类型(1∶1,1∶n或m∶n)。
数据模型
数据模型: 层次模型、网状模型、关系模型和面向对象数据模型。
其中层次模型和网状模型统称为非关系模型。
层次模型:用树型结构表示实体间联系的数据模型
层次模型有以下两个限制:
⑴只有一个结点没有双亲结点,称之为根结点;
⑵根以外的其他结点有且只有一个双亲结点。
层次数据模型可以直接表示一对多(包括一对一)的联系;
层次模型表示多对多联系,必须首先将其分解成一对多联系。分解方法有两种:冗余结点法和虚拟结点法。
网状模型:用有向图结构表示实体类型及实体间联系的数据模型。
(1)允许一个以上的结点无双亲;(2)一个结点可以有多于一个的双亲。
关系模型:是由若干个关系模式组成的集合,其主要特征是用二维表格结构表达实体集,用外鍵表示实体间联系。
关系模型要求关系必须是规范化的,即要求关系模式必须满足一定的规范条件,这些规范条件中最基本的一条就是,关系的每一个分量必须是一个不可分的数据项,也就是说,不允许表中还有表。
数据系统的三级模式结构:外模式(物理模式)、模式(逻辑模式)和内模式
两级映象:
外模式/模式映象 一般在外模式中描述。
模式/内模式映象 一般在内模式中描述。
两层映象保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。
数据库管理系统的功能:
⑴数据定义
⑵数据操纵
⑶数据库运行管理
⑷数据组织、存储和管理
⑸数据库的建立和维护
⑹数据通信接口
数据库管理系统组成:
⑴数据定义语言及其翻译处理程序
⑵数据操纵语言及其编译(或解释)程序
⑶数据库运行控制程序
⑷实用程序
一个设计优良的DBMS:
⑴友好的用户界面
⑵比较完备的功能
⑶较高的运行效率
⑷清晰的系统结构和开放性
§2
关系数据库系统与非关系数据库系统的区别是,关系系统只有"表"这一种数据结构;而非关系数据库系统还有其他数据结构,对这些数据结构有其他的操作。
关系模型的组成:关系数据结构、关系操作集合、关系完整性约束
关系数据语言
关系代数语言 例如ISBL
元组关系演算语言 例如ALPHA,QUEL
关系演算语言
域关系演算语言 例如QBE
具有关系代数和关系演算双重特点的语言 例如SQL
关系的三类完整性约束:实体完整性、参照完整性和用户定义的完整性
实体完整性规则:要求关系中组成主键的属性上不能有空值。
参照完整性规则:要求不引用不存在的实体。
用户定义完整性规则:由具体应用环境决定,系统提供定义和检验这类完整性的机制。
关系数据语言的共同特点是:语言具有完备的表达能力,是非过程化的集合操作语言,功能强,能够嵌入高级语言中使用。
基本关系具有以下六条性质:
①列是同质的(Homogeneous),即每一列中的分量同一类型的数据,来自同一个域。②不同的列可出自同一个域,称其中的每列为一个属性,不同的属性要给予不同的属性名。
③列的顺序无所谓,即列的次序可以任意交换。
④任意两个元组不能完全相同。
⑤行的顺序无所谓,即行的次序可以任意交换。
⑥分量必须取原子值,即每一个分量都必须是不可分的数据项。
关系模型要求关系必须是规范化的,即要求关系模式必须满足一定的规范条件。这些规范条件中最基本的一条就是,关系的每一个分量必须是一个不可分的数据项。
关系是关系模式在某一个时刻的状态或内容。关系模式是静态的,稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。但在实际当中,人们常常把关系模式和关系都称为关系。
实体完整性规则说明如下:
(1)实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一 个实体集。例如学生关系对应于学生的集合。
(2)现实世界中的实体是可区分的,即它们具有某种唯一性标识。
(3)相应地,关系模型中以主码作为唯一性标识。
(4)主码中的属性即主属性不能取空值。所谓空值就是"不知道"或"无意义"的值。
关系可以有三种类型:基本关系(通常又称为基本表或基表)、查询表和视图表
元组变量主要有两方面的用途:
①简化关系名。
②操作条件中使用量词时必须用元组变量。
§3
SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体。
特点包括:①综合统一、②高度非过程化、③面向集合的操作方式、④以同一种语法结构提供两种使用方式、⑤语言简洁,易学易用。
定义和合理地使用视图能带来的好处为:
⑴、视图能够简化用户的操作
⑵、视图使用户能以多种角度看待同一数据
⑶、视图对重构数据库提供了一定程度的逻辑独立性
⑷、视图能够对机密数据提供安全保护
视图更新操作规则的限制:
如果视图是从多个基本表使用联接操作导出的,则不允许更新。
如果导出的视图使用了分组和聚合操作,也不允许更新。
如果视图是从单个基本表使用选择和投影操作导出的,并且包括了基本表的主键或某个候选键,则可以执行操作。
SQL中数据控制功能包括事务管理功能和数据保护功能,即数据库的恢复、并发控制;数据库的安全性和完整性。
§4
数据依赖是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系,是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。现在人们已经提出了许多种类型的数据依赖,其中最重要的是函数依赖和多值依赖。
关系模式规范化时一般应遵循以下原则:
(1)关系模式进行无损连接分解。
(2)合理选择规范化程度。
(3)正确性与可实现性原则。
关系模式规范化的基本步骤如图所示。
①对1NF关系进行投影,消除原关系中非主属性对码的函数依赖,将1NF关系转换为若干个2NF关系。
②对2NF关系进行投影,消除原关系中非主属性对码的传递函数依赖,从而产生一组3NF关系。
③对3NF关系进行投影,消除原关系中主属性对码的部分函数依赖和传递函数依赖(也就是说,使决定属性都成为投影的候选码),得到一组BCNF关系。
消除决定属性集非码的非平凡函数依赖
1NF
消除非主属性对码的部分函数依赖
2NF
消除非主属性对码的传递函数依赖
3NF
消除主属性对码的部分和传递函数依赖
BCNF
消除非平凡且非函数依赖的多值依赖
4NF
消除不是由候选码所蕴含的连接依赖
5NF
以上三步也可以合并为一步:对原关系进行投影,消除决定属性不是候选码的任何函数依赖。
④对BCNF关系进行投影,消除原关系中非平凡且非函数依赖的多值依赖,从而产生一组4NF关系。
⑤对4NF关系进行投影,消除原关系中不是由候选码所蕴含的连接依赖,即可得到一组5NF关系。
5NF是最终范式。
1NF/2NF/3NF存在的问题: ①插入异常 ②删除异常 ③数据冗余度大 ④修改复杂
BCNF问题:①数据冗余度大 ②增加操作复杂 ③删除操作复杂 ④修改操作复杂
关系模式分解的三个定义(判断对关系模式的一个分解是否与原关系模式等价可以有三种不同的标准):
(1)分解具有"无损连接性"。
(2)分解要"保持函数依赖"。
(3)分解既要"保持函数依赖",又要具有"无损连接性"。
规范化理论提供了一套完整的模式分解算法,按照这套算法可以做到:
①若要求分解具有无损连接性,那么模式分解一定能够达到4NF。
②若要求分解保持函数依赖,那么模式分解一定能够达到3NF,但不一定能够达到BCNF。
③若要求分解既具有无损连接性,又保持函数依赖,则模式分解一定能够达到3NF,但不一定能够达到BCNF
BCNF的关系模式都具有如下3个性质:
①所有非主属性都完全函数依赖于每个候选码。
②所有主属性都完全函数依赖于每个不包含它的候选码。
③没有任何属性完全函数依赖于非码的任何一组属性。
§5
数据库的被破坏主要有以下几个方面:
(1)系统的软、硬件故障,造成数据被破坏。
(2)数据库的并发操作引起数据的不一致性。
(3)自然的或人为的破坏。
(4)对数据库数据的更新操作有误。
针对上述问题,数据库管理系统提供相应的功能:
(1)数据库恢复:在系统失效后的数据库恢复,配合定时备份数据库,使数据库不丢失数据。
(2)并发控制:保证多用户能共享数据库,并维护数据的一致性。
(3)安全性保护:防止对数据库的非法使用,以避免数据的泄露、纂改或破坏。
(4)完整性保护:保证数据的正确性和一致性。
数据库安全控制的一般方法:
①用户标识和鉴定;②存取控制;③定义视图;④审计;⑤数据加密。
数据库的安全性主要是指保护数据库,防止由于非法使用数据库造成数据泄露、更改或破坏。数据库的完整性:数据的正确性、一致性和相容性。
数据的完整性与安全性是数据库保护的两个不同的方面。安全性是防止用户非法使用数据库。完整性则是防止合法用户使用数据库时向数据库中加入不合语义的数据。
事务:并发控制的单位,是用户定义的一组数据库操作序列。
特征:原子性、一致性、隔离性、持久性。
并发控制的主要技术是采用封锁机制。封锁就是事务T可以向系统发出请求,对某个数据对象(最常用的是记录)加锁。于是事务T对这个数据对象就有一定的控制。基本的封锁类型有两种:排它锁(X锁)和共享锁(S锁)。
和操作系统一样,封锁的方法可能引起活锁和死锁。
活锁是指当若干事务要对同一数据项加锁时,造成一些事务的永远等待,得不到控制权的现象;死锁是指两个以上事务集合中的每个事务都在等待加锁当前已被另一事务加锁的数据项,从而造成相互等待的现象。
数据库中解决死锁的常用方法有:
⑴、要求每个事务一次就将所有要使用的数据全部加锁,否则就不能执行。
⑵、采用按序加锁法。
⑶、不采取任何措施来预防死锁的发生,而是周期性的检查系统中是否有死锁。
可串行化的调度:如果几个事务并行(交错)执行的结果和按次序串行执行的结果相同,则称该并行执行结果是正确的。这样的调度称为可串行化的调度。
两段锁协议是指所有事务必须分两个阶段对数据库项加锁和解锁。
两段锁协议规定所有的事务应遵守下列规则:
⑴、在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁。
⑵、在释放一个封锁之后,事务 不 再获得任何其他封锁。
所谓“两段”锁含义是:事务分为两个阶段。第一阶段是获得封锁,也称为扩展阶段。在该阶段,事务可以申请获得任何数据项上的任何类型的锁,但是不能释放任何锁。第二阶段是释放封锁,也称为收缩阶段。在该阶段,事务可以释放任何数据项上的任何类型的锁,但是不能再申请任何锁。
数据库系统故障可分为:事务内部的故障、系统故障、介质故障、计算机病毒。
转储:静态转储(转储期间不允许对数据库进行任何存取、修改活动)
动态转储(转储期间允许对数据进行存取或修改)
海量转储(每次转储全部数据库)
增量转储(每次只转储上次转储后更新过的数据)
日志文件是用来记录对数据库每一次更新活动的文件。在转储中必须建立日志文件,后援副本和日志文件综合起来才能有效地恢复数据库。
利用日志文件恢复事务的过程:
①从头扫描日志文件,找出哪些事务在故障发生时已经结束,哪些事务尚未结束;
②对尚未结束的事务进行撤销处理,对已经结束的事务进行重做处理。
①硬件故障;病毒破坏:当数据库本身被破坏时,可重装转储数据库的后备副本,然后运行日志文件,执行事务恢复,这样就可以重建数据库。
②发生事务故障;系统故障:当数据库本身没被破坏,但内容已经不可靠时,可利用日志文件恢复事务,从而使数据库回到某一正确状态,这时不必重装后备副本。