数据库作业答案-整理.

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

这里是幅标题这里是副标题数据库作业答案助教2015-01推荐阅读书目《OraclePL/SQL最佳实践》,机械工业出版社《数据挖掘概念与技术》韩家炜,机械工业出版社《BuildingtheDataWarehouse》W.H.Inmon第一章1.8列出文件处理系统和DBMS的四个主要区别第一章1.9解释物理数据独立性的概念,以及它在数据库系统中的重要性。物理数据独立性:物理独立性是指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。即,数据在磁盘上怎样存储由DBMS管理,用户程序不需要了解,应用程序要处理的只是数据的逻辑结构,这样当数据的物理存储改变了,应用程序不用改变。重要性:实现应用程序与存储在磁盘上的数据相分离,应用程序不依赖与物理模式,不随物理模式的改变而改变。第二章2.9考虑图2-15所示银行数据库系统:(a)适当的主码是什么?branch(branch_name,branch_city,assets)customer(customer_name,customer_street,customer_city)loan(loan_number,branch_name,amount)borrower(customer_name,loan_number)account(account_number,branch_name,balance)depositor(customer_name,account_number)(b)给出你选择的主码,确定适当的外码。loan:branch_namereferencesbranchaccount:branch_namereferencesbranchborrower:customer_namereferencescustomerloan_numberreferencesloandepositor:customer_namereferencescustomeraccount_numberreferencesaccount第二章2.10考虑图2-8所示advisor关系,advisor的主码是s_id。假设一个学生可以有多位指导老师。那么s_id还是advisor关系的主码吗?如果不是,advisor的主码会是什么呢?答案:不能,s_id不再是advisor的主码。因为可能存在多个元组有着相同的s_id,此时s_id不能用来区别不同的元组。advisor的主码应该是s_id,i_id。2.11解释术语关系和关系模型在意义上的区别答案:关系模式(relationschema)是一种定义类型,关系(relation)是这种类型的一个实例2.12考虑图2-14所示关系数据库。给出关系代数表达式来表示下列每一个查询:a.找出为“FirstBankCorporation”工作的所有员工姓名。b.找出为“FirstBankCorporation”工作的所有员工的姓名和居住城市c.找出为“FirstBankCorporation”工作且挣钱超过10000美元的所有员工的姓名、街道地址和居住城市。第二章答案:2.13考虑2-15所示银行数据库。对于下列每个查询,给出一个关系代数表达式:a.找出贷款额度超过10000美元的所有贷款号b.找出所有这样的存款人姓名,他拥有一个存款额大于6000美元的账户c.找出所有这样的存款人的姓名,他在“Uptown”支行拥有一个存款额大于6000美元的账户第二章答案:a.Πloan_number(σamount10000(loan))b.Πcustomer_name(σbalance6000(depositor⋈account))c.Πcustomer_name(σ(branch_name=”Uptown”∧balance6000)(depositor⋈account))第三章3.11使用大学模式,用SQL写出如下查询.a.找出所有至少选修了一门Comp.Sci.课程的学生姓名,保证结果中没有重复的姓名b.找出所有没有选修在2009年春季之前开设的任何课程的学生的ID和姓名c.找出每个系老师的最高工资值。可以假设每个系至少有一位老师d.从前述查询所计算出的每个系最高工资中选出最低值答案:a.selectnamefromstudentnaturaljointakesnaturaljoincoursewherecourse.dept=’Comp.Sci.’;b.selectid,namefromstudentexceptselectid,namefromstudentnaturaljointakeswhereyear2009;C.selectdept,max(salary)frominstructorgroupbydept;d.selectmin(maxsalary)from(selectdept,max(salary)asmaxsalaryfrominstructorgroupbydept);第三章3.12使用大学模式,用SQL写出如下查询。a.创建一门课程“CS-001”,其名称为“WeeklySeminar”,学分为0b.创建该课程在2009年秋季的一个课程段,sec_id为1c.让Comp.Sci.系的每个学生选修上述课程段d.删除名为Chavez的学生选修上述课程段的信息e.删除课程CS-001。如果在运行此删除语句之前,没有先删除这门课的授课信息(课程段),会发生什么事?f.删除课程名称中包含“database”的任意课程的任意课程段所对应的所有takes元组,在课程名的匹配中忽略大小写答案:a.insertintocoursevalues(’CS-001’,’WeeklySeminar’,’Comp.Sci.’,0);b.insertintosectionvalues(’CS-001’,1,’Autumn’,2009,null,null,null);C.insertintotakesselectid,’CS-001’,1,’Autumn’,2009,nullfromstudentwheredeptname=’Comp.Sci.’;第三章d.deletefromtakeswherecourseid=’CS-001’andsectionid=1andyear=2009andsemester=’Autumn’andidin(selectidfromstudentwherename=’Chavez’);e.deletefromcoursewherecourse_id=‘CS-001’;(会出现违反外键规则。因为section有外键指向course,如果直接从course删除CS-001的信息,此时section中关于CS-001的字段在course中找不到关联)f.deletefromtakeswherecourseidin(selectcourseidfromcoursewherelower(title)like’%database%’);3.13写出对应于图3-18中模式的SQLDDL.在数据类型上做合理的假设,确保声明主码和外码.第三章3.13写出对应于图3-18中模式的SQLDDL.在数据类型上做合理的假设,确保声明主码和外码.答案:createtableperson(driver_idvarchar(50),namevarchar(50),addressvarchar(50),primarykey(driver_id));createtablecar(licensevarchar(50),modelvarchar(50),yearinteger,primarykey(license));createtableaccident(report_numberinteger,datedate,locationvarchar(50),primarykey(report_number));createtableowns(driver_idvarchar(50),licensevarchar(50),primarykey(driver_id,license)foriegnkey(driver_id)referencespersonforiegnkey(license)referencescar);createtableparticipated(report_numberinteger,licensevarchar(50),driver_idvarchar(50),damage_amountinteger,primarykey(report_number,license)foriegnkey(license)referencescarforiegnkey(report_number)referencesaccident));第三章3.14考虑图3-18中的保险公司数据库,其中加下划线的是主码。对这个关系数据库构造如下的SQL查询:a.找出在“JohnSmith”的车有关的交通事故的数量b.对事故报告编号为“AR2197”中的车牌是“AABB2000”的车辆损坏保险费用更新到3000美元答案:a.selectcount(*)fromaccidentwhereexits(select*fromparticipated,owns,personwhereowns.driver_id=person.driver_idandperson.name=‘JohnSmith’andowns.license=participated.licenseandaccident.report_number=participated.report_number)b.updateparticipatedsetdamage_amount=3000wherereport_number=”AR2197”andlicense=”AABB2000”第三章3.15考虑图3-19中的银行数据库,其中加下划线的是主码。对这个关系数据库构造如下的SQL查询:a.找出在“Brooklyn”的所有支行都有账户的所有客户b.找出银行的所有贷款额的总和c.找出总资产至少比位于Brooklyn的某一家支行要多的所有支行名字答案:a.withbranchcountas(selectcount(*)fromBranchWherebranch_city=’Brooklyn’)selectcustomer_namefromcustomercwherebranchcount=(selectcount(distinctbranch_name)from(customernaturaljoindepositornaturaljoinaccountnaturaljoinbranch)asdwhered.customer_name=c.customre_name)b.selectsum(amount)fromloanc.selectbranch_namefrombranchwhereassetssome(selectassetsfrombranchwherebranch_city=’Brooklyn’)第四章4.12对于图4-11中的数据库,写出一个查询来找到那些没有经理的雇员。注意一个雇员可能只是没有列出其经理,或者可能有null经理。使用外连接书写查询,然后不用外连接再重写查询。答案:使用外连接:selectemployee_namefromemployeenaturalleftouterjoinmanageswheremanager_nameisnull;不使用外连接:selectemplyee_namefromemployeewhere

1 / 24
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功