收藏 分销(赏)

数据库作业答案-整理.ppt

上传人:w****g 文档编号:1361040 上传时间:2024-04-24 格式:PPT 页数:24 大小:753.23KB
下载 相关 举报
数据库作业答案-整理.ppt_第1页
第1页 / 共24页
数据库作业答案-整理.ppt_第2页
第2页 / 共24页
数据库作业答案-整理.ppt_第3页
第3页 / 共24页
数据库作业答案-整理.ppt_第4页
第4页 / 共24页
数据库作业答案-整理.ppt_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、这里是幅里是幅标题这里是副里是副标题 数据库作业答案 助教助教助教助教2015-012015-012015-012015-01推荐阅读书目vOraclePL/SQL最佳实践,机械工业出版社v数据挖掘概念与技数据挖掘概念与技术韩家炜,机械工业出版社vBuildingtheDataWarehouseW.H.Inmon第一章v1.8 列出文件列出文件处理系理系统和和DBMS的四个主要区的四个主要区别 第一章v1.9解解释物理数据独立性的概念,以及它在数据物理数据独立性的概念,以及它在数据库系系统中的重要性。中的重要性。v物理数据独立性:物理独立性是指用户的应用程序与存储在磁盘上的数据库中数据是相互独

2、立的。即,数据在磁盘上怎样存储由DBMS管理,用户程序不需要了解,应用程序要处理的只是数据的逻辑结构,这样当数据的物理存储改变了,应用程序不用改变。v重要性:实现应用程序与存储在磁盘上的数据相分离,应用程序不依赖与物理模式,不随物理模式的改变而改变。第二章v2.9考考虑图2-15所示所示银行数据行数据库系系统:v(a)适当的主码是什么?vbranch(branch_name,branch_city,assets)vcustomer(customer_name,customer_street,customer_city)vloan(loan_number,branch_name,amount)v

3、borrower(customer_name,loan_number)vaccount(account_number,branch_name,balance)vdepositor(customer_name,account_number)v(b)给出你选择的主码,确定适当的外码。vloan:branch_namereferencesbranchvaccount:branch_namereferencesbranchvborrower:customer_namereferencescustomervloan_numberreferencesloanvdepositor:customer_name

4、referencescustomervaccount_numberreferencesaccount第二章v2.10 考考虑图2-8所示所示advisor关系,关系,advisor的主的主码是是s_id。假。假设一一个学生可以有多位指个学生可以有多位指导老老师。那么。那么s_id还是是advisor关系的主关系的主码吗?如果如果不是,不是,advisor的主的主码会是什么呢?会是什么呢?v答案答案:不能,s_id不再是advisor的主码。因为可能存在多个元组有着相同的s_id,此时s_id不能用来区别不同的元组。advisor的主码应该是s_id,i_id。v2.11 解解释术语关系和关系模

5、型在意关系和关系模型在意义上的区上的区别v答案答案:关系模式(relationschema)是一种定义类型,关系(relation)是这种类型的一个实例v2.12考考虑图2-14所示关系数据所示关系数据库。给出关系代数表达式来表示下列每一出关系代数表达式来表示下列每一个个查询:va.找出找出为“First Bank Corporation”工作的所有工作的所有员工姓名。工姓名。vb.找出找出为“First Bank Corporation”工作的所有工作的所有员工的姓名和居住城工的姓名和居住城市市vc.找出找出为“First Bank Corporation”工作且工作且挣钱超超过10 000

6、美元的美元的所有所有员工的姓名、街道地址和居住城市。工的姓名、街道地址和居住城市。第二章v答案:v2.13 考考虑2-15所示所示银行数据行数据库。对于下列每个于下列每个查询,给出一个关系代出一个关系代数表达式:数表达式:va.找出找出贷款款额度超度超过10 000美元的所有美元的所有贷款号款号vb.找出所有找出所有这样的存款人姓名,他的存款人姓名,他拥有一个存款有一个存款额大于大于6000美元的美元的账户vc.找出所有找出所有这样的存款人的姓名,他在的存款人的姓名,他在“Uptown”支行支行拥有一个存款有一个存款额大大于于6000美元的美元的账户第二章v答案:答案:va.loan_numb

7、er(amount10000(loan)vb.customer_name(balance6000(depositoraccount)vc.customer_name(branch_name=”Uptown”balance6000)(depositoraccount)第三章v3.11 使用大学模式使用大学模式,用用SQL写出如下写出如下查询.va.找出所有至少找出所有至少选修了一修了一门 Comp.Sci.课程的学生姓名,保程的学生姓名,保证结果中没有重复的姓名果中没有重复的姓名vb.找出所有没有找出所有没有选修在修在 2009 年春季之前开年春季之前开设的任何的任何课程的学生的程的学生的ID和

8、姓名和姓名vc.找出每个系老找出每个系老师的最高工的最高工资值。可以假。可以假设每个系至少有一位老每个系至少有一位老师vd.从前述从前述查询所所计算出的每个系最高工算出的每个系最高工资中中选出最低出最低值v答案:va.selectnamevfromstudentnaturaljointakesnaturaljoincoursevwherecourse.dept=Comp.Sci.;vb.selectid,namefromstudentvexceptvselectid,namefromstudentnaturaljointakesvwhereyearsomev(selectassetsvfrom

9、branchvwherebranch_city=Brooklyn)第四章v4.12 对于于图4-11中的数据中的数据库,写出一个写出一个查询来找到那些没有来找到那些没有经理的雇理的雇员。注意一个雇。注意一个雇员可可能只是没有列出其能只是没有列出其经理,或者可能有理,或者可能有null经理。使用外理。使用外连接接书写写查询,然后不用外,然后不用外连接再重接再重写写查询。v答案:答案:v使用外连接:vselectemployee_namevfromemployeenatural left outer joinmanagesvwheremanager_nameisnull;vv不使用外连接:vsel

10、ectemplyee_namevfromemployeevwherenotexistsv(selectemployee_namevfrommanagesvwheremanages.employee_name=emplyee.employee_namevandmanages.manager_nameisnotnull);第四章v4.12 对于于图4-11中的数据中的数据库,写出一个写出一个查询来找到那些没有来找到那些没有经理的雇理的雇员。注意一个雇。注意一个雇员可可能只是没有列出其能只是没有列出其经理,或者可能有理,或者可能有null经理。使用外理。使用外连接接书写写查询,然后不用外,然后不用外

11、连接再重接再重写写查询。v答案:答案:v使用外连接:vselectemployee_namevfromemployeenatural left outer joinmanagesvwheremanager_nameisnull;vv不使用外连接:vselectemplyee_namevfromemployeevwherenotexistsv(selectemployee_namevfrommanagesvwheremanages.employee_name=emplyee.employee_namevandmanages.manager_nameisnotnull);第四章v4.13 在什么情

12、况下,在什么情况下,查询vselect*vfrom student natural full outer join takes natural full outer join coursev将包含在属性将包含在属性titles上取空上取空值的元的元组?v答案:答案:v情况一:course元组中存在title属性为null的元组v情况二:存在一个学生,没有上任何课(即takes里面没有此学生的ID)v4.14 给定学生每年修到的学分定学生每年修到的学分总数,如何定数,如何定义视图tot_credits(year,num_credits)v答案:答案:vcreate view tot_credit

13、s(year,num_credits)vasv(selectyear,sum(credits)vfromtakesnaturaljoincoursevgroupbyyear)第六章v6.10va.name(studenttakescourse_id(dept_name=Comp.Sci.(course)vb.ID,name(student)ID,name(year10000)(worksemployee)vd.person_name(employeeworkscompany)pany_name(company(city(company_name=“SmallBankCorporation”(c

14、ompany)v6.12va.instrcnt1(course_id,section_id,year,semestercount(*)asinstrcnt(teaches)vb.course_id,section_id,year,semester(IDother_ID(takestakes1(ID2,course_id,section_id,year,semester)(takes)第七章v7.20(a)vauthor(name,address,URL)vbook(ISBN,title,year,price)vcustomer(email,name,address,phone)vpublish

15、er(name,address,phone,URL)vshopping_basket(basket_id)vwarehouse(code,address,phone)v7.20(b)(c)第八章v8.6v因为A-BC,所以有A-B和A-C;v因为A-B和B-D,所以A-D;v因为A-CD和CD-E,所以A-E;v又因为A-A,所以综上有A-ABCDE;v因为E-A,所以由传递性E-ABCDE;v因为CD-E,同理有CD-ABCDE;v因为B-D和BC-CD,所以BC-ABCDEv还有C-C,D-D,BD-D。v所以F的闭包有BD-B,BD-D,C-C,D-D,BD-BD,B-D,B-B,B-B

16、DvR的候选码为A,BC,CD,E。v8.27v由result=B,以及F中的类似形式的FDs,发现满足result的是BB和BD。所以result=B,D。所以B+=B,D。v8.30v(1)无损连接分解,维持数据库的正确性。v(2)保持依赖分解,快速检查更新的正确性v(3)最小化重复信息,尽可能地使用最小的空v8.31v因为BCNF并不总是保持依赖的,有些情况下BCNF的分解会妨碍对某些函数依赖的高效检查,BCNF也可能会保留一些冗余,所以有时候也会选择其它范式,比如3NF。v第十四章v14.12v原子性:原子性的用途在于保证程序执行的步骤集合作为一个单一的、不可分割的单元出现,使事务不可

17、分割,要么执行其全部内容,要么不执行。v隔离性:该特性确保事务正常执行而不被来自并发执行的数据库语句所干扰。v持久性:持久性使得事务的操作在系统崩溃后也是持久的。v一致性:一致性要求一个事物作为原子从一个一致的数据库状态开始独立地运行,且事务结束时数据库也必须再次是一致的。v14.13v(1)活动状态-部分提交状态-提交状态v事务开始执行,执行完最后一条语句,并成功完成输出。v(2)活动状态-部分提交状态-失败状态-中止状态v事务开始执行,执行完最后一条语句,发生硬件或逻辑故障使其无法输出,正常执行不能继续,事务回滚到初始状态。v(3)活动状态-失败状态-中止状态v事务开始执行,在执行语句操作

18、中发生硬件或逻辑错误,正常的执行不能继续,事务回滚到初始状态。v第十四章v14.14v串行调度是指一次执行一个事务,每个事务仅当前一个事务执行完成后才开始。同一时刻内只有一件事务处于执行中。v可串行化调度是指,在并发执行中,通过保证所执行的任何调度的效果都与没有并发执行的调度效果一样,使得调度在结果上等价于串行调度。其本质仍然是并行的。v14.15va.无论T13或T14哪个事务先执行,所有可能令A或B不为0的操作的执行条件,都是A或B其中一个的值为0。因此两个事务的每一个串行执行都满足一致性需求,因此保持数据库的一致性。vbvvc.不存在。从a题我们知道一个可串行化调度产生A=0VB=0.假

19、设我们从T13的read(A)指令开始,当调度完成后,无论什么时候执行T14,B都为1.再假设我们先执行T14。那么T14的Read(B)将读取一个0.所以当T14结束时,A=1。于是A=0VB=0FVFF。从T14开始同理。第十五章15.215.3v强封锁协议带来一定的好处,两阶段封锁协议实现了事务集的串行化调度,但同时,一个事务的失败可能会引起一连串事务的回滚。为避免这种情况的发生,强封锁协议可以进一步加强对两阶段封锁协议的控制。v强两阶段封锁协议,要求事务提交之前不得释放任何锁。使用锁机制的数据库系统,要么使用严格两阶段封锁协议,要么使用强两阶段封锁协议。而严格两阶段封锁协议除了要求封锁

20、是两阶段之外,还要求事务持有的所有排它锁必须在事务提交之后方可释放。这个要求保证未提交事务所写的任何数据,在该事务提交之前均以排它锁封锁,防止其他事务读取这些数据。15.20:v严格两阶段封锁协议的好处是保证未提交事务所写的任何数据,在该事务提交之前均以排它锁封锁,防止其他事务读取这些数据。弊端是并行度不高。15.23:v当我们可能会进入不一致的状态时,避免死锁比允许死锁发生然后检测的方式代价更小。因为死锁可以通过回滚事务加以解决,而不一致状态可能引起现实中的问题,这是数据库系统不能处理的。15.25v当事务给一个节点加显示锁,其所有后代节点都被加上隐式锁,两种锁的加锁方式不同,检测锁是否存在的方式不同,锁本身的效果和功用没有区别。ThanksforYourAttention!

展开阅读全文
相似文档                                   自信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-2024(办理中)  

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

客服