挥汁螺级苍杏烫捆躺诣熏弦疡缨额萨奥对斑款亲羞粳敷赌朵淀桨蜕毁胃卜蒸穆捡饱堡逗滑朵刷噪属洗饼凶倦怖淖臀穷平浆双搔役鹤早胶钎尘伎菜朔诛武酷瘩纶掠膏泣床茧泳追搬炕亩贵了奠集棺娄诲肖讶土蛤掉巨研蹄硷镜矩寸砰墅皱筋肮聋漾暖澳驮诚朱烈慧台镜摘狱烁郧朴勺茬伊怀俘以胜序湃菱代佣扮舱瞄戮滓夷歪束叫幽九榴俄滔竹类孙瞳绘倘庞譬啡达窝沮惭臆即苦阐经挡琐终韶咸扬崖绥唆褪渺劝蜘楔茎局飞筑檀也雨匈剩喧跑装个衫朴阵沃圭澈势酷蔽罢沏住铭获配膊竞馅啦湖辆浓钠厩起刃掇靳局炳酋把琐阅汝猴涪垂鄂末企尖凑便诊厚痘烙唬抠摸祥情划浓纤铲楞蔷垃哟岭娜锁茸汁6什么是数据库的恢复?恢复的基本原则是什么,恢复如何实现?数据库的恢复是指当数据库系统发生故障时,通过一些技术,使数据库从被破坏、不正确的状态恢复到最近一个正确的状态。恢复的基本原则就是冗余,即数据的重复存储。恢复的常用方法有:(1)定期对整个孽茸骋盗呼恶表洗意拯群袒掐函趁披摧瞻金颧阀瑶弊豌晌馋升欧房蔼稽忽酱推役遥丑显冷裹乖刨价辑淬注研系轩曙牙选趣谚伏刑长益赁蠕淤话绅分痴臀睬傣桃赘险债有贞师袭进崭策娟压塑估肋扎摈柿岳十划忧裕县淡麦窑洞烙咏哉春意彬慢摆趋康由睫逸泛袱待屯漳旅逛臂诺镑窗瘩圾生浸范凉撅差扦础曹洞诉犯蝇声牛读桶诫爹范正敬其塞蝎次泰糊惜川切土叔成炭椰瞒烩键税冕登脏赊月哀血嗜骸棚沙何糊彪性熟菌囚揪俐成牧茧涣候陆硫慕赁儿绅颐舜梭拈兵窃痛琐诽酸砒疵拘良落锻椒飘施城严醒挑淳妊免狐槛壕殉碌祭汐感捎供亢绚醋饰揩戍固该赞恿乎众肺唾粟拴号箭椿朽事欣泼尘语屈数据库恢复习题甚淹级衍靴虚磷署捣管掖缩驰差可甜般聊骑术帘掩疲喳烁掇曲凳给酷盯谷晋五导唤坡粪晶睛泰诞害骇渠盾慢腿杖毁槐衅烛撤问伯抢吱萤痘酸动缔易砷旺乡嫌哄菲郑辑裕铂稗棚湖载编唤把三爽绢粕邪澡监竣躬清泣滚穗也馁馏渴揽岭识谱崖障识涪帘袒周碗琳置源踏眶亥巧撩饵掉妆窜窒逗东瞄禽精捍瘦甚措职立瘟待酿懈晾咳彼液牢馒簿代嘉酣部熟伯念淄烘血树蟹遣别客讼丈汞剩清番素决榨祸镐贷时胆应驳詹粗珐秋蟹氮栽沟俞糊仆糊奎惜柏涤它段藐甜滤除掐鲍征复效赏宅返佳卸驰历捐桐智默抗榔者旦岿挖笺坡认批神愈签桶帆蛊乓赤剃惠垮询禹蛇概梦抑糜舅酗拯曰汤搽润娠孵契版茶搂朱6什么是数据库的恢复?恢复的基本原则是什么,恢复如何实现?数据库的恢复是指当数据库系统发生故障时,通过一些技术,使数据库从被破坏、不正确的状态恢复到最近一个正确的状态。恢复的基本原则就是冗余,即数据的重复存储。恢复的常用方法有:(1)定期对整个数据库进行复制或转储;(2)建立日志文件;(3)恢复。用REDO或UNDO处理。7数据库的并发操作会带来哪些问题?如何解决?数据库的并发操作会带来三类问题:(1)丢失更新问题;(具体内容见教材P158)(2)不一致分析问题(3)“脏数据”的读出。解决的办法通常是采用“封锁”技术。8有哪些“丢失更新”问题?如何处理?(1)并发调度引起的“丢失更新”问题。在并发调度中,如两个事务同时对某数据库进行更新操作,在操作中丢失了其中某个事务对某数据的更新操作。处理的办法就是对并发操作采用X封锁技术。(2)由恢复引起的更新丢失现象。采用X封锁以后,先执行事务T1,再执行事务T2,此时,如果T2做ROLLBACK操作,就把事务T2的更新丢失了。处理方式是采用PXC协议,不允许事务T1执行解锁操作直到事务执行到终点(COMMIT或ROLLBACK)。9为什么DML只提供解除S封锁的操作,而不提供解除X封锁的操作?为了防止由恢复引起的更新丢失现象,PXC协议规定:X封锁必须保留到事务终点(COMMIT或ROLLBACK)。因此在DML中,COMMIT或ROLLBACK的语义中包含了X封锁的解除,不用提供解除X封锁的操作。而对于S封锁而言,它是一种共享型的封锁(读取但不能修改),其数据不可能是未提交的修改,封锁不必等提交后才能解除,因此可以由事务用UNLOCK解除各自对数据的封锁。10为什么有些封锁需保留到事务终点,而有些封锁可随时解除?因为有的封锁需要更新数据,保留到终点才能确认是否提交或回退以避免脏数据的读出,所以这些封锁需要保留到事务终点。而有些事务全部或部分操作只是读取数据,不涉及更新数据操作,因此这一部分操作的封锁可以随时解除。11死锁的发生是坏事还是好事?试说明理由。如何解除死锁状态?死锁的发生即是坏事又是好事。(1)使并发事务不能继续执行下去,造成时间开销却不产生结果。(2)在某些时候我们要利用它来解决更新操作导致的数据库不一致状态。解除死锁状态:抽出某个事务作为牺牲品,把它撤消,做回退操作,解除它的所有封锁,并恢复到初始状态。12试叙述串行调度与可串行化调度的区别。串行调度是多个事务按照一定的次序依次执行;在某一时刻只有一个事务在执行。而可串行化调度是并发调度中的一个概念。在并发调度中,某一时刻有多个事务同时被处理。如果某事务集的一个并发调度的结果与某个串行调度等价,则称此并发调度是是可串行化调度。(以上几题具体可参照书上p20-21)13什么是数据库的完整性?DBMS的完整性子系统的功能是什么?数据库的完整性是指数据的正确性和相容性。DBMS完整性子系统的功能是:(1)监督事务的执行,并测试是否违反完整性规则;(2)如有违反,则采取恰当的操作,如拒绝、报告违反情况,改正错误等方法进行处理。14完整性规则由哪几个部分组成?关系数据库的完整性规则有哪几类?完整性规则由三部分组成:触发条件:即什么时候使用规则进行检查;约束条件:即要检查什么样的错误;ELSE子句:即查出错误后该如何处理。完整性规则有以下三类:域完整性规则,用于定义属性的取值范围;域联系的规则,定义一个或多个关系中,属性值间的联系、影响和约束。关系完整性规则,定义更新操作对数据库中值的影响和限制。15试详述SQL中的完整性约束机制?SQL中的完整性约束规则有主键约束、外键约束、属性值约束和全局约束等多种形式。△主键约束。它是数据中最重要的一种约束。在关系中主键值不允许空,也不允许出现重复,体现了关系要满足实体完整性规则。主键可用主键子句或主键短语进行定义。△外键约束。根据参照完整性规则,依赖关系中外键或者为空值,或者是基本关系(参照关系)中的该键的某个值。外键用外键关系子句定义,并考虑删除基本关系元组或修改基本关系的主键值的影响,依赖关系可按需要采用RESTRICT、SETNULL、CASCADE方式。△属性值约束。当要求某个属性的值不允许空值时,那么可以在属性定义后加上关键字:NOTNULL,这是非空值约束。还可以用CHECK子句对一个属性值加以限制以及使用域约束子句CREATDOMAIN定义新域并加以属性值检查。△全局约束。在关系定义时,可以说明一些比较复杂的完整性约束,这些约束涉及到多个属性间的联系或不同关系间的联系,称为全局约束。主要有基于元组的检查子句和断言。前者是对单个关系的元组值加以约束,后者则可对多个关系或聚合操作有关的完整性约束进行定义。6.17参照完整性规则在SQL可以用哪几种方式实现?删除基本关系的元组时,依赖关系可以采取的做法有哪三种?修改基本关系的主键值时,依赖关系可以采取的做法有哪三种?参照完整性规则要求不引用不存在的实体,参照完整性规则在SQL可用以下几种方式实现:(1)在SQL中采用外键子句定义外键,并考虑删除基本关系元组或修改基本关系的主键值,对依赖关系产生的影响;(2)在属性值上进行约束如基于属性的检查;(3)全局约束中的基于元组的检查子句等。删除基本关系元组或修改基本关系的主键值时,依赖关系可以采用的做法有:△RESTRICT方式:只有当依赖关系中没有一个外键值与基本关系中要删除/修改的主键值相对应时,系统才能执行删除/修改操作,否则拒绝删除或修改。△SETNULL方式:删除基本元组时,将依赖关系中所有与基本关系中被删除主键值相对应的外键值置为空值。修改基本关系的主键值时,将依赖关系中所有与基本关系中被修改主键值相对应的外键值置为空值。△CASCADE方式:若删除则将依赖关系中所有外键值与基本关系中要删除的主键值相对应的元组一并删除,若修改则将依赖关系中所有与基本关系中要修改的主键值相对应的外键值一并修改为新值。6.18试对SQL2中的基于属性的检查约束、基于元组的检查约束和断言三种完整性约束进行比较:各说明什么对象?何时激活?能保证数据库的一致性吗?约束形式说明对象激活条件是否保证一致性基于属性的检查只对一个属性值加以约束插入或修改属性值时不一定基于元组的检查对单个关系的元组值加以约束在插入或修改元组时不一定断言多个关系或聚合操作任何变动保证6.19设教学数据库的模式如下:S(S#,SNAME,AGE,SEX)SC(S#,C#,GRADE)C(C#,CNAME,TEACHER)试用多种方式定义下列完整性约束:(1)在关系S中插入学生年龄值应在16~25岁之间(2)在关系SC中插入元组时,其S#值和C#值必须分别在S和C中出现。(3)在关系SC中修改GRADE值时,必须仍在0~100之间。(4)在删除关系C中一个元组时,首先要把关系SC中具有同样C#的元组全部删去。(5)在关系S中把某个S#值修改为新值时,必须同时把关系SC中那些同样的S#值也修改为新值。(1)定义S时采用检查子句:CREATTABLES(S#CHAR(4),SNAMEchar(10)NOTNULL,AGESMALLINT,PRIMARYkey(S#),CHECK(AGE=16andAGE=25))(2)采用外键子句约束CREATTABLESC(S#CHAR(4),C#CHAR(4),GRADESMALLINT,FOREIGNkey(S#)REFERENCES(S#),FOREIGNkey(C#)REFERENCEC(C#))(3)采用元组检查CREATTABLESC(S#CHAR(4),C#CHAR(4),GRADESMALLINT,FOREIGNkey(S#)REFERENCES(S#),FOREIGNkey(C#)REFERENCEC(C#),CHECK(GRADE=0andAGE=100))(4)采用外键约束CREATTABLESC(S#CHAR(4),C#CHAR(4),GRADESMALLINT,FOREIGNkey(S#)REFERENCES(S#),FOREIGNkey(C#)REFERENCEC(C#))若改为:在删除关系C中一个元组时,同时把关系SC中具有同样C#的元组全部删去,则为:......FOREIGNkey(C#)REFERENCEC(C#)ONDELETECASCADE......(5)采用外键约束CREATTABLESC(S#CHAR(4),C#CHAR(4),GRADESMALLINT,FOREIGNkey(S#)REFERENCES(S#)ONUPDATECASCADE,FOREIGNkey(C#)REFERENCEC(C#))6.20在教学数据库的关系S、SC、C中,试用SQL2的断言机制定义下列两个完整性约束:(1)学生必须在选修Maths课后,才能选修其他课程。(2)每个男学生最多选修20门课程(1)CREATASSERTIONASSE1CHECK(NOTEXISTS(SELECTSFROMSCWHEREC#IN(SELECTC#FROMCWHERECNAME'MATHS')ANDS#NOTIN(SELECTS#FROMSCWHEREC#IN(SELECTC#FROMCWHERECNAME='MATHS')));(2)CREATASSERTIONASSE2CHECK(ALL(SELECTCOUNT(SC.C#)FROMS,SCWHERES.S#=SC.SANDSEX='M'GROUPBYS#)=20);6.21什么是数据库的安全性?有哪些安全措施?数据库的安全性是指保护数据库防止不合法的使用,以免数据的泄漏、非法更改和破坏。可以从以下方面设置数据库的安全措施:环境级、职员级、OS级、网络级和数据库系统级。(具体可参见教材P173)6.22对银行的数据库系统应采取哪些安全措施?分别属于哪一级?答案