数据:描述事物的符号记录,是数据库中存储的基本对象。
DB:数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合。(数据和信息的集合)
基本特征:数据按一定的数据模型组织、描述和储存、可为各种用户共享、冗余度较小、数据独立性较高、易扩展
DBMS:位于用户与操作系统之间的一层数据管理软件,是基础软件,是一个大型复杂的软件系统。
用途:科学地组织和存储数据、高效地获取和维护数据。
功能:数据定义、数据组织、存储和管理、数据操纵、数据库的事务管理和运行管理、数据库的建立和维护。
数据控制功能:数据的安全性保护:保护数据,以防止不合法的使用造成的数据的泄密和破坏。数据的完整性检查:完整性是指数据的正确性、有效性和相容性。将数据控制在有效的范围内,或保证数据之间满足一定的关系。
并发控制:对多用户的并发操作加以控制和协调,防止相互干扰而得到错误的结果。
DBS:在计算机系统中引入数据库后的系统构成。
构成:DB、DBMS(及其开发工具)、应用系统、DBA。
特点:数据结构化、数据的共享性高,冗余度低,易扩充、数据独立性高、数据由DBMS统一管理和控制。数据冗余不可避免
文件系统与DBS:
区别:FS面向某一应用程序,共享性差、冗余度大,独立性差,纪录内有结构、整体无结构,应用程序自己控制。DBS面向现实世界,共享性高、冗余度小,具有高度的物理独立性和一定的逻辑独立性,整体结构化,用数据模型描述,由数据库管理系统提供数据安全性、完整性、并发控制和恢复能力。
联系:计算机系统中管理数据的软件
数据的逻辑独立性:模式(概念模式)改变,外模式和应用模式不变
数据管理:对数据进行分类、组织、编码、存储、检索和维护,数据处理的中心问题
数据模型:数据库中用来对现实世界进行抽象的工具,是数据库中用于提供信息表示和操作手段的形式构架。
类型:概念模型、逻辑模型。
特征:客观真实的反映对象,直观容易被人所理解、便于在计算机上实现。
组成要素:数据结构(描述数据库的组成对象,以及对象之间的联系)、数据操作(对数据库中各种对象(型)的实例(值)允许执行的操作及有关的操作规则)、完整性约束(反映和规定本数据模型必须遵守的基本的通用的完整性约束条件;提供定义完整性约束条件的机制,以反映具体应用所涉及的数据必须遵守的特定的语义约束条件)。
关系数据模型的优点:建立在严格的数学概念的基础上,概念单一-实体和各类联系都用关系(即表)来表示+对数据的检索结果也是关系,关系模型的存取路径对用户透明-具有更高的数据独立性,更好的安全保密性+简化了程序员的工作和数据库开发建立的工作。缺点:存取路径对用户透明导致查询效率往往不如非关系数据模型;为提高性能,必须对用户的查询请求进行优化增加了开发DBMS的难度
概念模型(信息模型):按用户的观点来对数据和信息建模,用于数据库设计。 数据(符号记录)。
基本概念:实体(客观存在并可以相互区分的事物)、属性、码(唯一标识实体的属性集)、域、实体型、实体集、联系(1:1联系、1:n联系、m:n联系)
逻辑模型:非关系模型(层次模型(树形结构,简单性能好,非自然表示增删限制多,一个层次DB可有多个树结构)、网状模型(指针实现联系,描述直接性能好效率高,结构&语言复杂))、关系模型(一致性,更新开销小,易理解,RW性能差
关系模型通过外来关键字表示和实现实体间的联系,??关系模型的外来关键字也是候选关键字之一,在关系模型中,关系中不能存在可再分的)、面向对象模型、对象关系模型。用于DBMS实现
物理模型:对数据最底层的抽象,描述数据在系统内部的表示方式和存取方法,在磁盘或磁带上的存储方式和存取方法
数据库系统结构-三级模式结构:模式(是数据库系统模式结构的中间层,定义:数据的逻辑结构;数据之间的联系,给数据间的联系命名;数据有关的安全性、完整性要求)、外模式(介于模式与应用之间,数据库用户使用的局部数据的逻辑结构和特征的描述,数据库用户的数据视图,是与某一应用有关的数据的逻辑表示,如:视图。单个用户使用的数据视图的描述)、内模式(是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式)
三级模式是对数据的三个抽象级别,二级映象在DBMS内部实现这三个抽象层次的联系和转换:外模式/模式映像(模式描述数据全局逻辑结构,外模式描述数据局部逻辑结构。保证数据的逻辑独立性)、模式/内模式映像(定义了数据全局逻辑结构与存储结构之间的对应关系,是唯一的,该映象定义通常包含在模式描述中(保证数据的物理独立性,数据与程序之间的独立性,使得数据的定义和描述可以从应用程序中分离出去)。三级模式和二级映像保证了数据的独立性
三级模式两级映射与数据独立性的关系:三级模式间的映射:数据库的三级模式是数据库在三个级别上的抽象,使用户能逻辑地、抽象地处理数据而不必关心数据在计算机中的物理表示与存储。对DBS而言,有物理级数据库是客观存在的,它是数据库操作的基础,概念级数据库中不过是物理数据库的一种逻辑的、抽象的描述(模式),用户级数据库则是用户与数据库的接口,它是概念级数据库的一个子集(外模式)。用户应用程序根据外模式进行数据操作,通过外模式-模式映射定义和建立某个外模式与模式间的对应关系,将外模式与模式联系起来,当模式发生改变时,只要改变其映射,即可使外模式保持不变,对应的应用程序也保持不变;通过模式-内模式映射,定义建立数据的逻辑结构(模式)与存储结构(内模式)间的对应关系,当数据的存储结构发生变化时,只需改变模式-内模式映射,就能保持模式不变,因此应用程序也可保持不变
子模式:描述用户看到/使用的部分的数据的逻辑。(概念模式的逻辑子集,用户见到的DB逻辑结构)
概念模式:描述整个DB的逻辑结构,实体及其关系,定义记录数据项的完整性、约束条件及其联系。
内模式:存储记录的类型、存储域、表示存储记录的物理顺序
约束:主键、外键、唯一性、检查、默认、非空
关系模式:对关系的描述,静态的、稳定的。
关系:关系模式在某一时刻的状态或内容,动态的、随时间不断变化的。
关系数据库:在一个给定的应用领域中,所有关系的集合构成一个关系数据库关系数据库的型与值
5种基本操作:选择、投影、并、差、笛卡尔积。
专门的关系运算:选择、投影、连接、除。
连接:内连接、外连接、交叉连接
关系数据库系统与非关系数据库系统的区别:关系系统只有“表”这一种数据结构;非关系数据库系统还有其他数据结构,以及对这些数据结构的操作
关系的完整性约束:实体完整性、参照完整性、外码(用户定义的完整性如int长度)。
实体完整性规则:若属性(一个或者一组)A是基本关系的主属性,则A不能取空值。
参照完整性规则:若属性(属性组)F是基本关系的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于S中每个元组在F上的值必须为:取空值(F的每个属性值均为空值)或等于S中某个元组的主码值
SQL的特点:综合统一、高度非过程化、面向集合的操作方式、以同一种语法结构提供多种使用方式、语言简洁,易学易用。
SQL的功能:数据定义、数据操纵、数据控制
安全性:存取控制技术(分自主和强制)、视图技术、审计技术。
自主存取控制功能:通过SQL 的GRANT语句(授权)和REVOKE(回收权限)语句实现。
角色:使用角色来管理数据库权限可以简化授权过程、CREATE ROLE语句创建角色、GRANT 语句给角色授权
视图:是从一个或几个基本表导出的虚表。
特点:只存放视图的定义,不存放视图对应的数据,数据仍然存放在原来的基本表中;基本表中的数据发生变化,从视图中查询出的数据也随之改变,视图就像是一个窗口,透过它可以看到数据库中自己感兴趣的数据及其变化。
作用:简化用户操作,使用户多角度看待同数据,提供一定程度数据逻辑独立性,安全性保护。注:视图一经定义,就可以和基本表一样被查询和删除,也可以在一个视图之上再定义视图,但是对视图的更新则有一定的限制。
索引的目的:加快查询速度。DBMS中索引一般采用B+树(动态平衡)、HASH索引(查找快)来实现。会降低数据更新速度
DB完整性:防范不合语义的、不正确的数据。为了保证数据库中存储的数据是正确的DBMS完整性实现的机制:完整性约束定义机制、完整性检查机制、违背完整性约束条件时DBMS应采取的动作
DB安全性:防范非法用户和非法操作,通过 SQL 的 GRANT 语句和 REVOKE 语句实现。用户权限组成:数据对象、操作类型
范式:符合某一种级别的关系模式的集合。关系数据库中的关系必须满足一定的要求,满足不同程度要求的为不同范式。
异常:插入异常(失败)、删除异常(多删)、修改异常、数据冗余。
实质:概念的单一化
1NF:存在部分函数依赖。数据库表中的字段都是单一属性的,不可再分。
2NF:非主树形完全依赖于候选码,一个表只描述一件事情。在1NF基础上,消除了非主属性对于码的部分函数依赖。
3NF:非主键列必须直接依赖于主键,消除非主属性对候选键的传递依赖,表中的每一列只与主键直接相关而不是间接相关(表中的每一列只能依赖于主键)。
BCNF:消除每一属性对候选键的传递依赖。在3NF的基础上,消除了主属性对于码的部分函数依赖和传递函数依赖。
4NF:表中有多个1:N关系,消除非平凡且非FD的多值依赖。任何一个二目关系是属于3NF/BCNF/4NF的
查询优化分类 :(启发式)代数优化、物理优化(基于规则的启发式优化、基于代价估算的优化、两者结合的优化方法)。查询处理是RDBMS的核心,查询优化技术是查询处理的关键技术。
比较复杂的查询,尤其是涉及连接和嵌套的查询,不要把优化的任务全部放在RDBMS上,应该找出RDBMS的优化规律,以写出适合RDBMS自动优化的SQL语句。对于RDBMS不能优化的查询需要重写查询语句,进行手工调整以优化性能
事务:用户定义的一组按顺序执行的不可分割的数据库操作序列(一个程序的单次执行或操作序列)。是数据库的逻辑工作单位。
特性:原子性(所有操作全做或全不做)、一致性(数据正确性不被破坏,从一个一致性状态变到另一个)、隔离性(一个事务的执行不能被其它干扰)、持续性(事务一旦提交,对数据库的改变永久)。
与程序比较:在关系数据库中,一个事务可以是一条或多条SQL语句,也可以包含一个或多个程序;一个程序通常包含多个事务
恢复:将数据库从错误状态恢复到某一已知的正确状态。
基本原理:冗余。利用存储在系统其它地方的冗余数据来重建数据库中已被破坏或不正确的那部分数据。/利用存储在后备副本、日志文件和数据库镜像中的冗余数据来重建数据库。
技术:数据库转储和登记日志文件。事务故障的恢复-UNDO,系统故障的恢复-UNDO + REDO,介质故障的恢复-重装备份并恢复到一致性状态 + REDO
提高恢复效率:检查点技术(在日志文件中增加检查点记录(改善恢复效率)、增加重新开始文件、恢复子系统在登录日志文件期间动态地维护日志):可以提高系统故障的恢复效率,可以在一定程度上提高利用动态转储备份进行介质故障恢复的效率。镜像技术:可以改善介质故障的恢复效率
数据转储:静态转储与动态转储、海量转储与增量转储
日志文件:用来记录事务对数据库的更新操作的文件。作用: 进行事务故障恢复、进行系统故障恢复、协助后备副本进行介质故障恢复。
先写日志文件的原因:写数据库和写日志文件是两个不同的操作在这两个操作之间可能发生故障。如果先写了数据库修改,而在日志文件中没有登记下这个修改,则以后就无法恢复这个修改了。如果先写日志,但没有修改数据库,按日志文件恢复时只不过是多执行一次不必要的UNDO操作,并不会影响数据库的正确性
事务故障:事务在运行至正常终止点前被终止。恢复:由恢复子系统应利用日志文件撤消(UNDO)此事务已对数据库进行的修改;事务故障的恢复由系统自动完成,对用户是透明的,不需要用户干预。
系统故障:未完成事务对数据库的更新已写入数据库,已提交事务对数据库的更新还留在缓冲区没来得及写入数据库。恢复:撤销Undo 故障发生时未完成的事务、重做Redo 已完成的事务。恢复:正向扫描日志文件,找出在故障发生前已提交的事务,将其事务标识记入REDO队列(进行重做处理),同时找出故障发生时尚未完成的事务,将其事务标识记入UNDO队列(进行撤销处理)。
介质故障:重装数据库、重做已完成的事务,使用后备副本?
如果数据库只包含成功事务提交的结果,就说数据库处于一致性状态。保证数据一致性是对数据库的最基本的要求
X锁(写锁,排它锁,可读可修改,不可加锁)
S锁(读锁,共享锁,S可X不可,可读不可修改)
活锁:并发操作时出现。解决:采用先来先服务的策略。
死锁:多个事务因竞争资源而出现的互相等待现象。解决:预防(一次封锁法、顺序封锁法),诊断与解除(超时法、等待图法),两阶段封锁法
并发操作带来的数据不一致性:丢失修改、不可重复读、读“脏”数据
封锁带来死锁
只要遵守三级封锁协议就一定能保证事务的调度结果是正确的吗:可串行化问题
数据共享与数据一致性是一对矛盾,数据库的价值在很大程度上取决于它所能提供的数据共享度,数据共享在很大程度上取决于系统允许对数据并发操作的程度,数据并发程度又取决于数据库中的并发控制机制,数据的一致性也取决于并发控制的程度。施加的并发控制愈多,数据的一致性往往愈好。
数据库的并发控制以事务为单位,数据库的并发控制通常使用封锁机制。
并发控制机制调度并发事务操作是否正确的判别准则是可串行性,并发操作的正确性则通常由两段锁协议来保证。两段锁协议是可串行化调度的充分条件,但不是必要条件。
可串行化调度:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行这些事务时的结果相同
可串行性:是并发事务正确调度的准则;一个给定的并发调度,当且仅当它是可串行化的,才认为是正确调度
两段锁协议:指所有事务必须分两个阶段对数据项加锁和解锁。在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁;在释放一个封锁之后,事务不再申请和获得任何其他封锁。
封锁粒度:封锁对象的大小。封锁的对象:逻辑单元,物理单元。封锁粒度与系统的并发度和并发控制的开销密切相关。封锁的粒度越大,数据库所能够封锁的数据单元就越少,并发度就越小,系统开销也越小;封锁的粒度越小,并发度较高,但系统开销也就越大
意向锁-锁的强度:指它对其他锁的排斥程度。一个事务在申请封锁时以强锁代替弱锁是安全的,反之则不然
数据库设计:是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括“信息管理要求”和“数据操作要求”。
目标:为用户和各种应用系统提供一个信息基础设施和高效率的运行环境
数据库设计的6个阶段:需求分析(了解分析用户应用需求。数据字典、数据流程图)、概念结构设计(对用户需求综合归纳抽象形成独立于具体DBMS的概念模型。用E-R图来描述)、逻辑结构设计(将概念模型/E-R图转换为某个DBMS所支持的数据模型如关系模型并优化。设计E-R图、创建表、创建视图。将E-R图转换成具体的数据库产品支持的数据模型如关系模型,形成数据库逻辑模式。然后根据用户处理的要求,安全性的考虑,在基本表的基础上再建立必要的视图形成数据的外模式)、物理结构设计(为数据模型选取最适合应用环境的物理结构-存储结构、存取方式)、数据库实现(运用DBMS提供的数据语言建立DB,调试,组织数据入库,运行)、数据库运行管理与维护(运行评价调整修改)
E-R图:实体(矩形)、属性(椭圆)、属性(菱形)。属性、命名、结构冲突
数据字典的内容:数据项、数据结构、数据流、数据存储、处理过程。
用途:进行详细的数据收集和数据分析所获得的主要结果
三种常用抽象:分类、聚集、概括