收藏 分销(赏)

数据库原理总结.doc

上传人:精*** 文档编号:2228365 上传时间:2024-05-23 格式:DOC 页数:5 大小:51.01KB
下载 相关 举报
数据库原理总结.doc_第1页
第1页 / 共5页
数据库原理总结.doc_第2页
第2页 / 共5页
数据库原理总结.doc_第3页
第3页 / 共5页
数据库原理总结.doc_第4页
第4页 / 共5页
数据库原理总结.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、1关系的范式及规范化范式是衡量关系模式优劣的标准。范式级别越高,其数据冗余和操作异常现象就越少。第一范式:如果一个关系模式R的所有属性都是不可分的基本数据项,则这个关系属于第一范式。第二范式:若关系模式R属于第一范式,且每个非主属性都完全函数依赖于主键,则R属于第二范式。第三范式:若关系模式R属于第一范式,且每个非主属性都不传递依赖于主关键字,则R属于第三范式。BC范式:若关系模式R属于第一范式,且每个属性都不传递依赖于主关键字,则R属于BC范式。2对模式的分解显然不是随意的,主要涉及以下两个原则:无损联结:当对关系模式R进行分解时,R的元组将分别在相应属性集进行投影而产生新的关系。如果对新的

2、关系进行自然联接得到的元组的集合与原关系完全一致,则称为无损联结。保持依赖:当对关系模式R进行分解时,R的函数依赖集也将按相应的模式进行分解。如果分解后总的函数依赖集与原函数依赖集保持一致,则称为保持依赖。3事务的定义:事务是数据库的逻辑工作单位,由用户定义的一组操作序列组成,序列中的操作要么全做要么全不做。4简述事务所具有的ACID(原子性,一致性,隔离性,持续性)特性:事务的ACID特性是: 原子性:事务是一个不可分割的单位。一致性:事务对数据库操作的结果是将数据库从一个一致性状态变为另一个一致性状态。隔离性:多个事务的并发执行不互相干扰。持续性:事务一旦提交,它对数据库中数据的改变就是永

3、久性的。5事务的调度:事务的执行次序称为调度。若多个事务是按照某一次序串行地执行,则称事务的调度是串行调度。若多个事务同时交叉地并行执行,则称事务的调度为并发调度。6事务并发执行产生的不一致情况及避免:并发操作可能会产生丢失修改,不能重复读和读”脏”数据这三种不一致情况,采用封锁机制来进行并发控制,可避各种不一致情况。一级封锁协议可以避免丢失修改,二级封锁协议可以避免丢失修改和读”脏”数据,三级封锁协议可以避免丢失修改、不能重复读和读”脏”数据。7事务的COMMIT语句和ROLLBACK语句的功能是什么?答:COMMIT语句表示事务执行成功地接结束(提交),此时告诉系统,DB要进入一个新的正确

4、状态,该事务对DB的所有更新都已交付实施(写入磁盘)。ROLLBACK语句表示事务执行不成功地结束(应该“回退”)此时告诉系统,已发生错误,DB可能处在不正确的状态,该事务对DB的所有更新必须被撤消,DB应恢复该事务到初始状态。8活锁和死锁:活锁:在多个事务并发执行的过程中,可能会存在某个总有机会获得锁的事务却永远也没得到锁的现象,可以通过“先来先服务”的策略预防活锁的发生。死锁:在多个事务并发执行过程中,多个并发事务处于相互等待的状态的现象。9死锁的预防:数据库当中预防死锁的方法有两种。第一种方法是要求每个事务必须一次性地将所有要使用的数据加锁或必须按照一个预定的加锁顺序对使用到的数据加锁。

5、第二种方法是每当处于等待状态的事务由可能导致死锁时,就不再等待下去,强行回滚该事务。10完整性约束的定义:关系数据库提供的三类完整性约束:实体完整性、参照完整性和用户自定义完整性。实体完整性:实体完整性约束是指任何基本表(关系)的主键(主关键字)中的每一个属性列都不能取空值,即基本表中的每一个元组在主键上的分量都有值。参照完整性:根据参照完整性原则,用户只要定义了某一个关系(基本表)的外键(外部关键字),系统就会控制外键的值要么为空,要么等于被参照关系中某一个主键的值,这就是系统对外键的一种约束。用户定义完整性:用户定义完整性约束条件的作用对象可以是属性列、元组或关系(基本表),其中对属性列的

6、约束可以规定属性列的数据类型、取值范围等;对元组的约束可以规定元组中各属性间的相互关系;而对关系的约束则可以规定各元组间或关系间的相互联系。11故障恢复的原则:对数据库的影响有两种可能性:一是数据库本身被破坏;二是数据库没有被破坏,但数据可能不正确,这是因为事务的运行被非正常终止造成的。12恢复算法一般由两部分组成:在正常事务处理时采取措施,保证有足够的冗余信息可用于故障恢复。故障发生后采取措施,将数据库内容恢复到某个保证数据库一致性、事务原子性及持久性的状态。13数据库在运行过程中可能产生的故障有哪几类?答:1)事务故障:事务在运行过程中由于种种原因,如输入数据的错误,运算溢出,违反了某些完

7、整性限制,某些应用程序的错误,以及并行事务发生死锁等,使事务未能运行到正常中指点之前就被撤消了,这种情况称为“事务故障”。2)系统故障:系统故障是指系统在运行过程中,由于某些原因,如OS和DBMS代码错误,操作员操作事物。特定类型的硬件错误(CPU故障),突然停电等造成系统停止运行,致使事物在执行过程中以非控方式中指。这时。内存中的信息丢失,而存储在外存储上的数据未受影响,这种情况称为“系统故障”。3)介质故障:系统在运行过程中,由于某种硬件故障,如磁盘损坏,磁头碰撞,或由于OS的某种潜在的错误。瞬间强磁场干扰,使存储在外存的数据部分损失或全部损失,称之为“介质故障”。14故障恢复技术:数据转

8、储、日志文件、检查点方法、数据库镜像15关系的完整性约束:域完整性约束:关系中属性的值应是域中的值,并由语义决定其能否为空值。实体完整性约束:关系中的主键不能为空值。参照完整性约束:关系的外键必须是另一个关系主键的有效值或者是空值。用户自定义完整性约束:正对某一具体数据的约束条件,由应用环境决定。16故障恢复原理是冗余可分为副本和日志。恢复算法:在正常事物处理时采取措施,保证有足够的冗余信息可用于故障恢复、故障发生后采取措施,将数据库内容恢复到某个保证数据库一致性、事物原子性及持久性的状态。17事务故障的恢复:事务故障是指事务在运行至正常终止点前被中止,这时恢复子系统应利用日志文件撤消(UND

9、O)此事务已对数据库进行的修改。事务故障的恢复是由系统自动完成的,对用户是透明的,系统的恢复步骤是: 反向扫描文件日志(即从最后向前扫描日志文件),查找该事务的更新操作。 对该事务的更新操作执行逆操作。即将日志记录中“更新前的值”写入数据库。这样,如果记录中是插入操作,则相当于做删除操作(因此时“更新前的值”为空)。若记录中是删除操作,则做插入操作,若是修改操作,则相当于用修改前值代替修改后值。 继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。 如此处理下去,直至读到此事务的开始标记,事务故障恢复就完成了。18系统故障的恢复:系统故障造成数据库不一致状态的原因有两个,一是未完成事

10、务对数据库的更新可能已写入数据库,二是已提交事务对数据库的更新可能还留在缓冲区没来得及写入数据库。因此,恢复操作就是要撤销故障发生时未完成的事务,重做已完成的事务。系统恢复步骤如下:正向扫描日志文件,即从头扫描日志文件,找出在故障发证前已经提交的事务,将其事务标示记入重做队列,同时找出故障发证时尚未完成的事务,将其事务标识计入撤销队列、对撤销队列中的各个事务进行撤销处理、对重做队列中的各个事务进行重做扫描19日志文件作用及建立原因:答:日志文件是用来记录事务对数据库的更新操作的文件。目的是进行事物故障恢复;进行系统故障恢复;协助后备副本进行介质故障恢复。20三级模式:三级模式结构:数据库的三级

11、模式由外模式、概念模式和内模式三级模式构成。概念模式:简称模式,又称数据库模式、逻辑模式。一个数据库只有一个概念模式,它是数据库系统三级模式结构的中间层,概念模式是数据库中全体数据的逻辑描述,而不是数据库本身,它是装配数据的一个结构框架。外模式:外模式简称子模式,又称用户模式,是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是用户与数据库系统之间的接口。一个数据库可以有多个外模式,设置外模式的优点如下:方便用户使用,简化用户接口、保证数据的独立性、有利于数据共享、有利于数据安全和保密。内模式:内模式也称存储模式。是对数据库中数据物理结构和存储方式的描述,是数

12、据在数据库内部的表示形式。一个数据库只能有一个内模式。21两级映像:外模式/概念模式映像:外模式/概念模式映像定义了各个外模式与概念模式间的映像关系。概念模式/内模式映像:概念模式/内模式映像定义了数据库全局逻辑结构与存储结构之间的对应关系。22两极结构的独立性:物理数据独立性:如果数据库内模式要修改,即数据库的物理结构有所变化,那么只要对概念模式/内模式做相应的修改即可。概念模式/内模式提供了数据的物理数据独立性。逻辑数据独立性:如果概念模式要修改,例如增加记录类型或增加数据项,那么只要对外模式/概念模式映像做相应的修改,就可以使外模式和应用程序尽可能保持不变。这样,就称数据库打到了逻辑数据

13、独立性。外模式/概念模式映像提供了数据的逻辑独立性。23数据库技术的发展阶段:工管理阶段(数据部保存、没有对数据进行管理的软件系统、没有文件的概念、一组数据对应于一个程序,数据时面向应用的)、文件系统阶段(数据需要长期保存在外存上供反复使用、程序和数据之间有了一定得独立性、文件的形式已经多样化、数据的存取基本以记录为单位)、数据库系统阶段(数据结构化、数据共享、减少数据冗余、具有较高的数据独立性、方便用户接口、统一的数据管理与控制功能)某校与教学管理相关的3个关系模式的结构如下:学生(学号、姓名、年龄、性别、所在系)课程(课程号、课程名、开课系、任课教师)学习(学号、课程号、成绩)试进行如下操

14、作:1.创建“教学”数据库,在“教学”数据库中创建“学生”、“课程”、“学习”这3个基本表,并说明主键和外键。2.使用SQL的查询语句表达下列查询(1)查询刘老师所授课程的课程号和课程名(2)查询年龄大于23岁的男学生的学号和姓名(3)查询至少修读刘老师所授课程中一门课程的女学生和姓名(4)查询王乐同学不学的课程的课程号(5)查询至少修读两门课程的学生学号(6)查询全部学生都修读的课程的课程号与课程名(7)查询修读课程中包含刘老师所授课程的学生学号3)SELECT 姓名 FROM 学生 WHERE 性别=女 AND EXISTS (SELECT * FROM 学习 WHERE 学习.学号=学生

15、.学号 AND 课程号 IN (SELECT 课程号 FROM 课程 WHERE 任课教师 LIKE 刘%)4) SELECT 课程号 FROM 课程 WHERE NOT EXISTS (SELECT * FROM 学习 WHERE 学习.课程号=课程.课程号 AND 学号 IN (SELECT 学号 FROM 学生 WHERE 姓名=王乐 )5)SELECT 学号 FROM 学生 GROUP BY 学号 HAVING COUNT(*)=2 6)SELECT 课程号,课程名 FROM 课程 WHERE NOT EXISTS (SELECT * FROM 学生 WHERE NOT EXISTS

16、(SELECT * 学号 FROM 学习 WHERE 学习.课程号=课程.课程号 AND 学习.学号=学生.学号 )7)SELECT 学号 FROM 学习 WHERE EXISTS (SELECT * FROM 学习 WHERE 课程号 IN (SELECT * FROM 课程号 FROM 课程 WHERE 任课教师 LIKE 刘%))试用SQL查询语句表达下列对教学数据库中3个基本表“学生”、“课程”、“学习”的查询(1)统计有学生修读的课程门数(2)求修读C4课程的学生的平均年龄(3)求刘老师所授课程的每门课程的学生平均成绩(4)统计每门课程学生的修读人数(超过10人的课程才统计),要求输

17、出课程号和修读人数,查询结果按人数降序排列,若人数相同,按课程号升序排列(5)查询学号比王乐同学大,而年龄比他小的学生姓名(6)查询姓名以王打头的所有学生的姓名和年龄(7)在“学习”表中检索成绩为空值的学生学号和课程号(8)求年龄大于女同学平均年龄的男学生姓名和年龄(9)求年龄大于所有女同学年龄的男学生姓名和年龄SELECT COUNT(DISTINCT 课程号) FROM 学习SELECT AVG(年龄) FROM 学生 WHERE EXISTS (SELECT * FROM 学习 WHERE学生.学号=学习.学号 AND 课程号=C4)SELECT AVG(成绩) FROM 学习 WHER

18、E GROUP BY 课程号 HAVING 课程号 IN (SELECT 课程号 FROM 课程 WHERE 任课教师 LIKE 刘%)SELECT 课程号,COUNT(*) AS C_COUNT FROM 学习 HAVING C_COUNT10 ORDER BY C_COUNT DESC,课程号SELECT 姓名 FROM 学生 WHERE 学号ALL(SELECT 学号FROM 学生WHERE 姓名=王乐) AND 年龄(SELECT AVG(年龄) FROM 学生 WHERE 性别=女)SELECT 姓名, 年龄 FROM 学生WHERE 性别=男 AND年龄(SELECT MAX(年龄

19、) FROM 学生 WHERE 性别=女)试用SQL更新语句表达对“教学”数据库中3个基本表“学生”、“课程”和“学习”的各个更新操作(1)向基本表“学生”中插入一个学生组(S009,吴,18)(2)在基本表“学生”中查询每一门课程成绩都大于等于80分的学生学号、姓名和性别,并把查询到的值送往另一个已存在的基本表“结果”(学号,姓名,性别)中(3)在基本表“学习”中删除尚无成绩的元组(4)把王乐同学在“学习”基本表中的课程和成绩全部删除(5)把修读Java课程不及格的成绩全改为空值(6)把低于总平均成绩的女同学成绩提高5%(7)在基本表“学习”中修改C4课程的成绩,若成绩小于等于75分时提高5

20、%,若成绩大于75分时提高4%(用两个UPDATE语句实现)INSERT INTO 学生 VALUES (S009,吴,18) INSERT INTO 结果(学号,姓名,性别) SELECT学号,姓名,性别 FROM 学生 WHERE NOT EXISTS (SELECT * FROM 学习 WHERE 学生.学号=学习.学号 AND 成绩80)DELETE FROM 学习 WHERE 成绩 IS NULLDELETE FROM 学习 WHERE 学号 IN (SELECT 学号 FROM 学生 WHERE 姓名=王乐)UPDATE 学习 SET成绩=NULL WHERE 成绩60 AND 课程号 IN (SELECT 课程号 FROM 课程 WHERE 课程名=JAVA)UPDATE 学习 SET 成绩=成绩*1.05 WHERE 成绩75 AND 课程号=C4UPDATE 学习 SET 成绩=成绩*1.05 WHERE 成绩=75 AND 课程号=C4

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 通信科技 > 数据库/数据算法

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服