提供比实际需要的长关系代数表达式

Arg*_*gon 3 relational-algebra

架构图: 在此处输入图片说明 为涉及姓氏为“史密斯”的员工(作为工人或作为控制项目的部门的经理)的项目列出项目编号。

给定的解决方案是:

在此处输入图片说明

但是,我认为仅使用以下表达式就足够了:

在此处输入图片说明

现在,我之所以相信这一点,主要是因为该EMPLOYEE关系包含对应于工人和经理的元组。现在,员工既可以是工人,也可以是经理。所以,按照这个逻辑,上面的表达式应该就足够了。我完全同意这样一个事实,即可以通过多个关系代数表达式表示给定的查询,但是按照给定的解决方案(较大的解决方案)执行上述建议是非常多余的。

综上所述,我的思路正确吗?

来源:Ramez Elmasri 和 Shamkant B. Navathe 的《数据库系统基础》,第 6 版,第 172 页查询 4。

Dou*_*den 5

试图找到一个更简单的解决方案是令人钦佩的,但你的表达方式有点错误。

问题的重要部分是:

...或作为部门经理...

请注意,这与“......或作为员工的经理......”不同。

让我们在那里抛出一些名字。

  • Ed White 为 Brian Green 工作。Ed 正在从事 Project 123。
  • 123项目由财务部控制。Kathy Smith 是财务部的经理。

因此,请求的结果应在输出中包含 Project 123,因为 Project 123 由一个部门控制,该部门的经理姓氏为 Smith。

您提议的解决方案将包括 Project 123,因为 Ed 和他的经理都没有姓氏 Smith。