实践习题

2.1 考虑图2-14所示关系数据库。这些关系上适当的主码是什么?

Ans: 如图2.1中带下划线的码。(emmmm,发现答案不是很靠谱。比如员工的名字有重名的现象,显然name不能作为主码。但其实name+street+city也可能会有碰巧一样的情况。所以严格来说,这几张表的结构不是很好,项目中最好还是用id作为主键会比较好。)

2.2 考虑从instructor的dept_name属性到department关系的外码约束,给出对这些关系的插入和删除示例,使得他们破坏外码约束。

Ans: a. 往instuctor表中插入一个元组:(10111, Ostrom, Economucs, 110,000),而department表中没有Economics这个院系。这会破坏外码约束。

b. 从depaerment表中删除一个元组:(Bioology, Watson, 90000), 而至少有一个学生或者教员元组的depart_name是Biology。这会破坏外码约束。

2.3 考虑time_slot关系。假设一个特定的时间段可以在一周之内出现多次,解释为什么day和start_time是该关系主码的一部分,而end_time却不是。

Ans: day和start_time属性是主码的一部分是因为很有可能在不同的日期甚至是同一天内多次遇到一个特定的类,而end_time不是是因为在特定时间开始的类不可能多次结束。(啥意思呢?表在P24下面,我们来推测一波。当这个时间段出现在多天的时候,显然day是可以区分不同的元组的;而在一天中的多个元组,我们既可以通过start_time其实也可以通过end_time来区分(这里不考虑同时发生同时结束的情况)。那么题目的意思很可能是问为什么day+其中一个time就可以作为主码,但一个time是不能作为主码的原因吧)

2.4 在图2-1所示的instructor的势力中,没有两位教师同名。我们是否可以据此断定name可用来作为instructor的超码(或主码)?

Ans: 不行。因为这个教员表的例子比较特殊,普遍情况下不这样(除非这个学校规定两个教员不能用一样的名字,不过这不太可能)。

2.5 先执行student和advisor的笛卡儿积,然后再结果上执行基于谓词s_id=ID的选择运算,最后的结果是什么?(采用关系代数的符号表示,此查询可写作σs_id=ID(student x advisor)。)

Ans: 结果属性包含了所有student的属性,后面跟着所有advisor的所有属性(如图)。结果中的元组如下, 对于拥有advisor的每个student,结果都有一行包含学生属性,后跟一个与学生ID属性相同的s_id属性,后跟包含学生顾问ID的i_id属性。没有advisor的studnet将不会出现在结果中。 拥有多个顾问的学生将在结果中显示相应的次数。

2.6 考虑下面的表达式,哪些使用了关系代数运算的结果来作为另一个运算的输入?对于每个表达式,说明表达式的含义。

a. (σyear>=2009(takes) ⋈ advisor)

b. (σyear>=2009(takes)⋈ student)

c. ∏ID,name,course_id(student⋈takes)

Ans: a. 对于那些在2009年至少选了一门课的学生,把学生信息和所选课程信息一同展示,结果属性如下:

ID, Name, dept_name, tot_cred, course_id, section_id, semester, year, grade

b. 和a一样;选择可在join操作之前完成

c. 只要选了课的学生都会出现在有ID, name, course_id属性的表中。

2.7 考虑图2-14所示关系数据库。给出关系代数表达式来表示下列每一个查询:

a. 找出居住在"Miami"城市的所有员工信息。

b. 找出工资在100000美元以上的所有员工姓名。

c. 找出居住在"Miami"并且工资在100000美元以上的所有员工姓名。

Ans:

2.8 考虑图2-15所示银行数据库。对于下列每个查询,给出一个关系代数表达式:

a. 找出位于"Chicago"的所有支行名字。

b. 找出在支行"Downtown"有贷款的所有贷款人姓名.

Ans:

习题

2.9 考虑图2-15所示银行数据库。

a. 适当的主码是什么?

b. 给出你选择的主码,确定适当的外码。

Ans:a. emmm...这样吧,字体加粗的作为主码,加下划线的作为外码吧(当然了,本题也不考虑几个键都相同的情况好吧,考虑最理想化的情况。当然每个人的思量都不一样,考虑不一样结果也不一样)

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)

2.10 考虑图2-8所示advisor关系,advisor的主码是s_id。假设一个学生可以有多位指导老师。那么,s_id还是advisor关系的主码吗?如果不是,advisor的主码会是什么呢?

Ans: emmmm? s_id是student_id的意思?如果是这样那不行!如果是老师的id,那肯定是可以的。题目没说清楚,所以无从知道。

2.11 解释术语关系和关系模式在意义上的区别。

Ans: 关系的概念对应于程序设计语言中变量的概念,而关系模式的概念对应于程序设计语言中类型定义的概念(书上原话)。

2.12 考虑图2-14所示关系数据库。给出关系代数表达式来表示下列每一个查询:

a. 找出为"First Bank Corporation"工作的所有员工姓名。

b. 找出为"First Bank Corporation"工作的所有员工的姓名和居住城市。

c. 找出为"First Bank Corporation"工作且挣钱超过10000美元的所有员工的姓名、街道地址和居住城市。

Ans: a. ∏person_name(σcompany_name=First Bank Corporation(employee⋈works))

b. ∏person_name,city(σcompany_name=First Bank Corporation(employee⋈works))

c. ∏person_name,street,city(σcompany_name="First Bank Corporation"(employee⋈works) ∪σsalary>=10000(employee⋈works))

2.13 考虑图2-15所示银行数据库。对于下列每个查询,给出一个关系代数表达式:

a. 找出贷款额度超过10000美元的所有贷款号。

b. 找出所有这样的存款人姓名,它拥有一个存款额大于6000美元的账户。

c. 找出所有这样的存款人姓名,他在"Uptown"支行拥有一个存款额大于6000美元的账户。

Ans: a. ∏loan_number(σamount>10000(loan))

b. ∏customer_name(σbalance>6000(account⋈depositor))

c. ∏customer_name(σbalance>6000(account⋈depositor)∪σbranch_name="Uptown"(account⋈depositor))(这个可能可以化简?)

2.14 列出在数据库中引入空值的两个原因。

Ans: a. 数据库中某个属性不存在(比如说存在学生没有手机号码的情况);

b. 数据库中某个属性未提供或未知(比如说有些人填写了性别而有些人出于隐私考虑不填);

2.15 讨论过程话和非过程化语言的相对优点

Ans: 在过程化语言中,用户指导系统对数据库进行一系列操作以计算出所需结果。在非过程化语言中,用户只需描述所需信息,而不用给出获取该信息的具体过程。因此我们可以看出,过程化语言的运行速度肯定比非过程化语言要来得快,但是过程化语言太过繁琐,用户体验不行;非过程化语言简单方便,但是牺牲了运行速度。各有优缺吧~

数据库系统概念第六版课后习题答案-第二章相关推荐

  1. 微型计算机原理与接口技术(周荷琴 冯焕清)第六版 课后习题答案 第二章(部分答案)

    第二章 2.8086CPU内部由哪两部分组成?它们的大致是如何工作的? 8086CPU由指令执行部件EU和总线接口部件BIU两部分组成 ①BIU先执行读存储器操作,从给定地址单元中取出指令,送到先进先 ...

  2. 算法竞赛入门经典第二版课后习题答案第二章

    算法竞赛入门经典第二版课后习题答案 第二章 习题2-1水仙花数 输出100-999中的所有水仙花数.若三位数ABC满足ABC=A^3+B^3+C^3,则称其为水仙花数.例如153=1^3+5^3+3^ ...

  3. 现代操作系统英文第四版课后习题答案——第二章

    @T现代操作系统第四版参考答案 现代操作系统英文第四版第二章参考答案--进程 先更新第二章的答案,习惯中文的童鞋请左转百度翻译 Solution for chapter 2 The transitio ...

  4. 微型计算机原理与接口技术(周荷琴 冯焕清)第六版 课后习题答案 第一章(部分答案)

    第一章 1. 将下列二进制数转换成十进制数 (1)11001010B=202 (2)00111101B=61 (3)01001101B=77 (4)10100100B=164 2.将下列十六进制数转换 ...

  5. 【考研复习】《操作系统原理》孟庆昌等编著课后习题+答案——第二章

    前言 此书在最后的附录B中,有给出部分重难点部分的参考答案.会在最后放上图片.如果想要此书习题答案,可点以下链接:为一个压缩包,以图片形式,习题图片按章节排序,答案图片按书页排序. <操作系统原 ...

  6. Java语言程序设计基础篇(第十版 梁勇著)课后习题答案 - 第二章

    第二章:基本程序设计 复习题 2.1 指出并修改以下代码中的错误: public class Test {public void main(String[] args) {double i = 50. ...

  7. 微型计算机原理与接口技术 (周荷琴 冯焕清)第六版 课后习题答案 第六章(部分答案)

    第六章 2. 什么叫 I/O 端口?一般的接口电路中可以设置哪些端口?计算机对 I/O 端口寻址时可采 用哪两种方法?在8086/8088CPU 中一般采用哪种编制方法? (1)端口:在接口电路中,存 ...

  8. 微型计算机原理与接口技术(周荷琴 冯焕清)第六版 课后习题答案 第三章(部分答案)

    第三章 1.分别说明下列指令的源操作数和目的操作数各采用什么寻址方式. 源操作数  目的操作数            源操作数                    目的操作数 (1)MOV AX, ...

  9. 微型计算机原理与接口技术 (周荷琴 冯焕清) 第六版 课后习题答案 第八章(部分答案)

    第八章 6. 如果中断类型号 n=4,它的中断服务子程序的入口地址为 CS:IP=0485:0016H,它在中断向量表中如何存放? 中断类型号 n=4,中断向量指针=中断类型号×4=n×4=10H 从 ...

  10. 微型计算机原理与接口技术 (周荷琴 冯焕清)第六版 课后习题答案 第五章(部分答案)

    第五章 3. 试从功耗.容量.价格优势.使用是否方便等几个方面,比较静态 RAM 和 动态 RAM 的优缺点,并说明这两类存储器芯片的典型应用 SRAM.DRAM 均为易失性存储器. 优点:SRAM  ...

最新文章

  1. Linux 端口占用解决
  2. SAP UI5 System Test 的工具之一:uiveri5
  3. tar命令核心应用案列及多重参数和find组合应用
  4. Python的第三方库fileType
  5. macos 字体_巧用 iTerm2 zsh oh-my-zsh 打造炫酷的 MacOS 终端环境
  6. APP开发接口分类介绍
  7. 被称为“Google 最大黑科技”,开发谷歌大脑,这位 AI 掌门人到底有多牛?
  8. 《认知盈余:自由时间的力量》读书笔记
  9. 汉王手写板linux驱动下载,汉王科教手写板易教2.0驱动
  10. 基于mindwave脑电波进行疲劳检测算法的设计(5)
  11. fifa15服务器位置,FIFA15球队战术位置技巧
  12. 漏洞复现----11、GlassFish任意文件读取
  13. java base64转字图片、图片转base64字符串
  14. 网卡构造:MAC与PHY的关系,GMAC介绍
  15. 计算机网络mooc单元测试答案
  16. 云计算学习7——云计算OpenStack运维基础
  17. 自考计算机专业的草根,一个外行草根自学中医的历程和经验分享!人人皆可学,求人不如求己!...
  18. JavaScript基础知识点
  19. 抖音 App 登录账号、密码、验证码 XOR 加密算法
  20. 常用的Dos界面指令及快捷键

热门文章

  1. VS2013+简单稀疏光束调整库SSBA配置(64位编译)
  2. android 毕业设计论文总结报告,android课程设计报告.doc
  3. 服务器安全基础知识系列(三)关于网页木马
  4. 科技巨头扎堆打造的“AI搭配师”,能否拯救疫情下的服装业?
  5. 国家出手,终于不用再担心网上「​裸奔」​了!
  6. HandlerSocket的安装实例及性能测试
  7. smart原则_目标管理:OKR与SMART原则的异同
  8. jdk中运行java程序的工具,采用JDK工具编译运行java程序
  9. 用c语言写易语言Linux库,c语言实现简单的易语言
  10. office2010 启动man_发现office2010启动挺慢的,各位一样吗