数据库--交大第二套
关系模型的三个成分
数据结构,数据操作,完整性约束。
关系数据语言有,关系代数语言ISBL,关系演算语言(元组关系演算语言,域关系演算语言),关系代数关系演算两重特点语言SQL。
主码,候选码,外部码?
候选码,关系中某一属性组的值能唯一标识一个元组,该属性组为候选码。
主码,一个关系有多个候选码,选定一个作为主码。
外部码,f是关系R的一个或一组属性,但不是R的码,f与关系S的码ks相对应,则称f为关系R的外部码,简称外码。
关系,关系模式,关系数据库?
关系的描述称为关系模式,关系是关系模式在某一时刻的状态或内容,关系模式是静态的,稳定的。关系是动态的,随时间不短变化。
关系数据库有型和值之分。关系数据库的型称为关系数据库模式,是对关系数据库的描述,定义一些域以及在域上的某些关系模式。关系数据库的值即为这些关系模式在某时刻所对应的关系的集合,称为关系数据库。
关系模型的完整性规则?参照完整性外码为空条件?
关系模型的完整性是对关系的某种约束条件。
实体完整性,属性A是关系R的一个主属性,则属性A的值不能为空。
参照完整性,属性F是关系R的外码,它与关系S的某个主码ks相对应,则R中每个元组在F上必须取空或等于关系S中某个元组主码值。
用户定义完整性,针对某一具体关系数据库的约束条件。反映某一应用所涉及数据必须满足的语义要求。
参照完整性中,F是关系R的外码,但不是关系R的主码,则F可以为空。如果F是外码,但又是主码,则F不能为空。
自然连接,等值连接?
等值连接,从关系R,S的笛卡尔积中选取A,B属性值相同的元组。
自然连接,特殊的等值连接,两个关系中要比较的分量必须是相同的属性组,并在结果中把相同的属性组去掉。若关系R,S有相同的属性组,就可以自然连接。
关系模型,范式?
关系模型必须要求关系规范化,规范化的关系称为范式。
第一范式,列不可再分。
第二范式,非主属性间全部依赖于主属性。消除了非主属性对码的部分函数依赖。
第三范式,非主属性间无依赖关系。消除了非主属性对码的传递函数依赖。
第四范式,主属性间无依赖关系。
关系范式中,关系的分解原则?多值依赖?多值依赖实例?
无损连接,保持原有的依赖关系。
关系模式中,函数依赖无法表示一对多的联系,这些属性之间没有直接联系,但有间接联系。把这种没有直接联系,但有间接联系的数据依赖称为多值依赖。
多值依赖对称性,若X->->Y,则X->->Z。Z=U-X-Y。
多值依赖传递性,若X->->Y,Y->->Z,则X->->Z-Y。
函数依赖为多值依赖的特殊情况,若X->Y,则X->->Y。
关系R(I,S,A)I为兴趣小组,S为学生,A为兴趣小组内活动。每个学生要求参加兴趣小组内的所有活动,每个活动都要求所有学生参加。I->->S,I->->A。
BCNF的判断准则?
关系R属于3NF,不存在主属性对非主属性的函数依赖,则称R为BCNF。
如果一个关系的每个函数依赖左部都是候选码,则称该关系为BCNF。
如果一个关系每个决定因素都是候选码,则称为BCNF。
关系R为1NF,且能决定其他属性取值的属性必定包含码,则称为BCNF。
数据库设计各个阶段及其主要任务?
需求分析,准确了解与分析用户需求。
概念结构设计,对用户需求总结,归纳,抽象,形成一个独立于DBMS的概念模型。
逻辑结构设计,将概念模型转为某个DBMS所支持的逻辑模型,并进行优化。
物理结构设计,为逻辑模型选择一个合适的物理结构,包括存储结构和存取方法。
数据库实施,设计人员根据DBMS所提供的数据语言,工具,宿主语言,根据逻辑设计和物理设计的结果建立数据库,调试运行,组织数据进入数据库。
数据库运行,维护,数据库运行阶段对其评价,调整,修改。
需求分析阶段设计目标,调查内容?
需求分析是调查现实世界中要处理的对象,了解原系统的工作状况,明确用户的需求,进而设计出新系统的功能。
信息要求,数据库要存储哪些数据,用户能从数据库中获得信息的内容和性质。
处理要求,用户要完成什么处理,对处理的响应有什么要求,处理方式的选择之类。
安全性和完整性。
数据字典内容,作用?
数据字典是数据库系统中各种数据描述的集合。包括数据项,数据结构,数据流,数据存储,数据处理。
数据字典是关于数据库中数据的描述,在需求分析阶段建立,是概念设计阶段的基础。
数据库的概念结构,特点?数据抽象?概念结构的重要性?
概念结构是信息世界的结构,是概念模型。特点有,
真实而充分的反映现实世界,是对现实世界的一个概念模型。
易于理解,用概念结构和不理解计算机的用户交换意见。
易于修改,当应用环境和应用要求改变时,容易对概念模型进行扩充和修改。
易于向关系,层次,网状模型转变。
数据抽象是对,人,物,事,概念进行人为处理,抽取共性,忽略细节,并把这种特性用概念精准描述,这些概念就组成了某种模型。
概念结构是数据库设计的关键阶段,是对需求分析阶段所得到的需求进行抽象,以此作为各种数据模型的基础。更精确的使用DBMS实现这些要求。
常使用E-R图来描述概念模型。
逻辑结构设计,步骤?
逻辑结构设计是将概念结构设计阶段设计好的E-R图转为选用的DBMS产品所支持的数据模型相符合的逻辑结构。
逻辑结构设计阶段的步骤
首先将E-R图转为关系,层次,网状等数据模型。
再将关系,层次,网状数据模型转为DBMS所支持的数据模型。
对数据模型进行优化。
E-R图向关系模型的转化规则?
- 一个1:1的联系可以转为一个独立的关系模式,也可和其它关系模式合并。如果转为一个独立的关系模式,则与该联系相连的个实体的码和该联系的属性就转为关系的属性。关系的码就是各实体的码。如果合并其它关系模式,则该关系模式的属性加入另一个关系模式的码和联系的属性。
- 一个1:n的联系可以转为一个独立的关系模式,也可以与n端关系模式合并。转为一个独立的关系模式,则与该联系相连的各实体的码和联系的属性转为关系的属性。关系的码就是n端实体的码。
- 一个n:m的联系可以转为一个独立的关系模式。该联系相连的实体的码和联系的属性转为关系的属性。实体码的组合构成关系的码,或码的一部分。
- 三个或三个以上的实体间的多元联系转为一个关系模式。该联系相连的各实体的码和联系的属性组成该关系的属性。关系的码为各实体码的组合。
事务概念,事务特性?
事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做。是一个不可分割的工作单位。
事务特性
- 原子性,事务是数据库操作的逻辑单位,要么全做,要么全不做。
- 一致性,事务对数据库的执行结果必须由一个一致性转为另一个一致性。
- 隔离性,一个事务对数据库的操作不能受其它事务的影响。
- 持久性,一个事务一旦提交,它对数据库的改变是永久的。
事务非正常结束影响数据库数据正确性?为什么要有数据库恢复子系统?
事务执行的结果必须是从一个一致性转为另一个一致性。如果数据库系统运行发生故障,导致事务被迫中断,事务的另一部分已经完成,对数据库的修改已经写入物理数据库。这时数据库就出于一种不正确的状态。
在计算机系统中的硬件故障,软件错误,操作人员的失误,恶意破坏,不可避免。这些故障使事务被迫中断,影响数据库的正确性,破坏数据库,使得数据库中部分数据丢失。必须要有数据库恢复子系统。
数据库产生的故障,数据库恢复技术?
数据库产生事务内部故障,系统故障,介质故障,计算机病毒。
事务内部故障,系统故障,介质故障影响事务的正常运行。介质故障,计算机病毒破会数据库中数据。
数据库恢复有数据转储,登录日志文件两种技术。当数据库系统发生故障,利用转储后的数据库后备副本和日志文件就能恢复数据库之前的某种状态。
数据转储,转储方法?
数据转储是数据库恢复所使用的技术,数据库管理员定期将数据库复制到磁带或磁盘上,当数据库系统遭遇破坏,可将后备副本装入数据库,恢复到转储前的状态。
转储有静态转储,动态转储方法。
- 静态转储,当系统中无用户事务时,才进行转储操作。静态转储操作简单,但必须无用户事务运行,同样,用户事务也必须等待转储操作结束,才能运行。
- 动态转储,允许在转储过程中对数据库操作和修改,但是转储过程中,用户事务可能对数据库的数据进行修改,使得后援副本后数据库存在不一致的状况。所以,需要日志文件,记录用户事务对数据库的修改活动。这样,后援副本和日志文件两者共同作用即可得到某时刻数据库的准确状态。
转储还分为海量转储,增量转储。 - 海量转储,每次转储全部数据库。
- 增量转储,只转储上次转储之后所更新的数据。
事务日志,作用?登记日志文件为什么先写日志文件,再修改数据库?数据库恢复转储冗余数据?
日志文件记录事务对数据库的更新操作文件。
日志文件用于事务故障恢复,系统故障恢复,和后援数据库文件协同完成介质故障恢复。
修改的数据写入数据库,修改的日志记录写入日志文件这两个是不同的写操作。
如果先修改数据,而运行记录中没有这个修改,则无对数据进行恢复。如果先写入日志记录,再修改数据库,在恢复数据库时,只是进行了一次undo操作。所以,一定要先写入日志记录,再修改数据库。
根据不同的故障,给出不同的恢复策略和方法?
事务故障由DBMS完成,对用户完全透明。事务故障恢复方法如下。
- 反向扫描日志文件,查找事务的更新操作。
- 对事务更新操作进行逆操作,即将日志记录中“更新前的数据”写入数据库。
- 继续反向扫描日志文件,做同样处理。
- 如此处理下去,直到读到此事务的开始标记,则事务故障恢复完成。
系统故障有两种形式。
- 未完成的事务对数据库更新可能已写入数据库。
- 已完成的事务对数据库的更新还停留在缓冲区,未写入数据库。
对未完成的事务要执行撤销undo操作,对已完成的事务要进行redo操作。
- 对日志文件进行正向扫描,找出故障发生时,已提交的事务队列和未完成的事务队列。
- 对未完成的事务队列执行undo操作。
undo操作,反向扫描日志文件,对每个undo事务的更新操作执行逆操作,将日志记录中“更新前的值”写入数据库。 - 对已提交的事务队列执行redo操作。
redo操作,正向扫描日志文件,对每个redo事务重新执行日志记录的登记操作,将日志记录中“更新后的值”写入数据库。
介质故障恢复操作
- DBA装入最新的数据库后备副本,使数据库恢复到转储时的一致性状态。
- DBA装入转储结束时刻的日志文件副本。
- DBA启动恢复指令,由DBMS完成恢复功能。
检查点恢复,优势?
利用日志技术恢复数据库,恢复子系统必须搜索日志文件,确定哪些是undo事务,哪些是redo事务。需要检查所有的日志文件。有两个缺点。
- 需要搜索全部日志文件。浪费时间。
- 许多redo事务已经将它们的更新结果写入数据库,恢复子系统又重新执行这些操作浪费时间
检查点方法恢复步骤。
- 从重新开始文件找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查点记录。
- 由该检查点记录得到检查点建立时刻所有正在执行的事务清单。
- 从检查点开始正向扫描日志文件。
- 对redo事务执行redo操作,对undo事务执行undo操作。
数据镜像,作用?
数据镜像根据数据库管理员的要求,自动把整个数据库或其中的关键部分复制到磁盘上,每当数据库更新时,DBMS自动把更新后的数据复制过去。DBMS自动包装数据镜像和主数据库的一致性。
数据镜像用于介质故障时的数据恢复操作,还能提高数据库的可用性,没有发生故障时,其它用户对数据库中数据加排它锁进行修改,其它用户可以读数据库镜像中数据,而不必等待用户释放锁。
事务日志用于保存事务的更新操作,转储冗余数据包括日志文件,数据库后备副本。