数据库系统概念(第六版)习题答案——第二章关系模型介绍

第二章 关系模型介绍

Employee(person-name,  street,  city)

Works(person-name,  company-name,  salary)

Company(company-name,  city)

图2-14    习题2.1,  2.7,  2.12的关联数据库

 

实践习题

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

答:

       上图中的所有关系模型,需要所有属性组合成主码,因为任何单个属性均不是单独构成主码的好选择。

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

答:

       在department中,如果同一个系有两个以上的楼,那么就破坏了外码约束条件。

       在instructor中,如果增加了一个department中没有的系的信息,也同样破坏了外码约束。

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

答:

       因为时间段的时间是确定的,确定了start_time就可以推算出end_time,所以end_time不用放在主码的必要条件选项里。

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

答:

       不可以,暂时的名字没有相同的不代表永远都所有名字不相同,名字这个东西能容易就会变成相同的。

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

答:

       首先笛卡尔积描述了每个学生和所有老师的关系,

       然后ID应该是表示学生的ID,s_id代表什么,现在为止,所以不好作答。

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

A 。 在takes关系中找出它里面的year属性大于等于2009的,然后在于student关系自然连接。

B 。将takes关系与student关系自然连接,然后筛选出新表格中的year属性中year大于等于2009的。

C 。先将takes关系与student关系自然连接,然后输出一个在新关系的基础上只包含ID,name,course.id属性的一个新关系。

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

A. 找出居住在“Miami”城市的所有员工姓名。

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

C. 找出居住在“Miami”并且工资在100 000美元以上的所有员工姓名。

答:答案见笔记本

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

A. 找出位于“Chicago”的所有支行名字。

B. 找出在支行“Downtown”有贷款的所有贷款人姓名。

答:答案见笔记本

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-15 习题2.8, 2.9, 2.13的银行数据库

习题

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

A. 适当的主码是什么?

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

答:

红色主码,黄色外码

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的主码会是什么呢?

答:

       S_id是什么,如果是老师编号,那么当然可以做主码啦。

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

答:

       关系的概念对应于程序设计语言中变量的概念,而关系模式的概念对应于程序设计语言中类型定义的概念。

       我们总会在一种关系模式下创建一个特定的关系用于使用。

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

A. 找出为“FirstBank Corporation”工作的所有员工姓名。

B. 找出为“FirstBank Corporation”工作的所有员工的姓名和居住城市。

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

答:答案见笔记本

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

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

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

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

答:答案见笔记本

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

答:

A.    某个元组的某个属性未知

B.    某个元组的某个属性不存在

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

答:

       非过程化语言比较用户使用友好方便。

       过程化语言运行速度肯定是要比非过程化语言快的。

你可能感兴趣的:(基础知识学习)