Copyright © by ECNU CS DBLAB All rights reserved.
数据库系统概念
3
第二章 关系模型
2.1 考虑图 2-35 所示关系数据库,主码加了下划线。
给出关系代数表达式来表示下列的每一个查询:
a. 找出与其经理居住在同一城市同一街道的所有员工的姓名。
b. 找出此数据库中不在 First Bank Corporation 工作的所有员工的
姓名。
c. 找出比 Small Bank Corporation 的所有员工收入都高的所有员工
的姓名。
employee(person_name , street , city)
works(person_name , company_name , salary)
company(company_name , city)
manages(person_name , manager_name)
Copyright © by ECNU CS DBLAB All rights reserved.
数据库系统概念
4
第二章 关系模型
2.1.a. 找出与其经理居住在同一城市同一街道的所有员工的姓名。
参考解答:
a. ∏
person-name
((employee ∞ manages)
(manager-name=employee2.person-name∧employee.street=employee2.street
∧employee.city=employee2.city)(ρ
employee2
(employee)))
employee(person_name , street , city)
works(person_name , company_name , salary)
company(company_name , city)
manages(person_name , manager_name)
注:∞为自然连接符号
Copyright © by ECNU CS DBLAB All rights reserved.
数据库系统概念
5
第二章 关系模型
2.1.b. 找出此数据库中不在 First Bank Corporation 工作的所有
员工的姓名。
参考解答:
b.1) 如果每个员工都有一个确定的公司:
∏
person-name
(σ
company-name≠“First Bank Corporation”
(works))
2) 如果存在有些员工不属于任何公司或者属于多个公司的情况:
∏
person-name
(employee) — ∏
person-name
(σ
company-name=“First Bank Corporation”
(works))
employee(person_name , street , city)
works(person_name , company_name , salary)
company(company_name , city)
manages(person_name , manager_name)