当前位置: 首页 > 面试题库 >

是否可以在关系代数,域和元组关系演算中表示所有SQL查询

蒋乐意
2023-03-14
问题内容

我的查询包括一个拥有和计数或全部。这些如何在RA / DRC / TRC中表示?我是否需要进一步简化SQL查询?这是一个简化的示例:

empl(employee (primary key), city)
managers(employee (primary key), manager (foreign key of employee))

如果要查找X城市中所有雇员的所有经理(来自任何城市)的所有雇员,则需要使用had / count。不确定如何在RA / DRC / TRC中完成此操作。

我知道需要这样的查询可能没有道理,但认为就此问题而言,这样做是明智的。

谢谢


问题答案:

您的查询有点模棱两可。确实是要找到所有X城中每个人的经理以及每个员工的经理?

正如dportas指出的那样,这在RA中是完全可行的。

这是如何做 :

获取X城市中所有雇员的集合。将其称为EMPX。

获取所有经理的集合。叫那个MGRS。

使两者的笛卡尔积。称之为MGRS_EMPX。

减去表的实际值(适当地向下投影到所需的属性),该值表示哪些管理者管理哪个员工。这种差异保留了实际存在的经理的所有组合以及位于X中的雇员,但该经理不管理该雇员的情况。

将该差异投影到manager属性上。这关系告诉你哪个经理存在,从而存在在X市一些员工是 不是 由管理员负责管理。

从MGRS中减去此关系。显然,此关系告诉您存在哪些经理,从而使X城中不存在不受该经理管理的员工。

将对否定性量词的否定重写为通用量将显示这正是您想要的结果:NOT EXISTS(EMP:EMP在X中,而EMP由MGR管理)=== FORALL
EMP:NOT(EMP在X中。由MGR管理的AND EMP)=== FORALL EMP:(EMP不在X中,或者EMP由MGR管理)=== FORALL
EMP :(如果EMP在X中,则EMP由MGR管理)。

所有这些都是完美的代数运算。

(练习:看看如果X城根本没有员工,会发生什么情况。)



 类似资料:
  • 主要内容:1. 元组关系演算(TRC),2. 域关系演算(DRC)关系演算是一种非过程查询语言。 在非过程查询语言中,用户关心如何获得最终结果的细节。 关系演算告诉我们要做什么但从未解释过如何做。 关系演算的类型: 1. 元组关系演算(TRC) 指定元组关系演算以选择关系中的元组。 在TRC中,过滤变量使用关系的元组。 关系的结果可以有一个或多个元组。 符号 其中, 是由此产生的元组 是用于获取的条件。 示例: 输出 :此查询从关系中选择元组。 它返回一个带有的

  • 根据充要条件的定义,是必要的,等价于是充分的,我们可以将其理解为的超集或的子集。 基于接受的答案,我们可以将此关系建模为或定义属性: 和assert 所以答案是肯定的,我们可以通过反转必要条件的顺序(定义RDFS的一个逆属性:subclassof)来表示充分条件。

  • 我正在使用Laravel5.7和MySQL。我有一个表和一个表,其中包含每个城市中可用的服务。可以在1个或多个城市提供1项服务。每个城市属于一个州,每个州属于一个国家。我想返回服务、城市、州和国家,但我不确定如何在每个模型中建立关系。我可以检索城市、州和国家吗? 城市 国家 国家 服务 允许的位置 国家id,名称1,美国 国家 城市 服务 允许的位置 services.php模型 cities.p

  • 问题内容: 我有一个二进制文件,其中ldd显示了意外的依赖项和libicuuc(来自“ icu”)。 由于在该系统上libxml动态依赖于libicuuc,因此ldd最终会找到它是有意义的,但是是否期望libicuuc也出现在A的ldd输出中?是否有一些命令仅检索链接为依赖项依赖关系的库? 问题答案: 显示启动应用程序或加载共享库时需要加载的所有库。 仅显示二进制文件的直接依赖项。 是否有一些命令

  • 问题内容: 在关系数据库中,我们可以有一个与其他表没有任何关系的表吗? 问题答案: 是的。关系的表示方式是使用外键。如果您生成的表没有外键,并且其他表中也没有外键指向该表,那么它就没有关系。 以后仍然可以建立关系,因此不必担心用脚射击。