问题标签 [tuple-relational-calculus]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
102 浏览

view - 关系演算中的观点

我想知道我们是否可以以某种方式在关系演算中定义一个视图来将复杂的查询拆分为几个较小的查询?还是我们必须将大查询编写为组合?

0 投票
1 回答
199 浏览

database - 元组关系计算

考虑以下关系模式。

对于以下查询:

会检索整个令人满意的元组还是只检索它们的T.sname?(如果是这样,它会不同吗?)

0 投票
1 回答
582 浏览

sql - 查询元组关系演算重新员工部门和最低和最高工资?

我必须使用元组关系演算来解决查询,我只想知道我是否正确地完成了它们。我正在使用这个数据库:

问题 1:检索比公司中薪酬最低的员工至少多 10,000 美元的员工姓名。

Q2:检索所有员工中工资最高的部门中所有员工的姓名。

任何帮助都感激不尽。

编辑:假设只有一名员工可以拥有最高/最低薪水。

0 投票
1 回答
2183 浏览

sql - 不安全的元组演算表达式

考虑一个关系 R1 (roll no,marks)。假设 R1 中的条目是 (1,20) 和 (2,25),并且让 roll no 和 tags 的域都是正整数。

现在是一个元组微积分表达式,如 { t | ~ (t 属于 R1) } 是不安全的,因为我们可以拥有无​​限数量的元组。假设我限制了 roll no 的域并将标记为 1 到 50 之间的正整数。现在上面的表达式仍然不安全吗?我认为它不应该是不安全的,因为我们有一个有限的域。

0 投票
1 回答
2330 浏览

database - 元组关系演算中的重复元组

假设我们有一个关系 Student(Name,Marks) 与 2 个元组 (a,100) 和 (a,100)。现在,如果我有这样的表达式:- { t.Name, t.Marks | Student(t) 和 t.Marks=100) 。那么我会得到两个元组还是只有一个元组?

我知道在关系代数中,我们使用删除重复项的项目运算符。

我找不到说明在元组关系演算中我们不考虑重复的参考。

0 投票
1 回答
115 浏览

relational-database - 试图理解元组关系演算中的“唯一”和“全部”约束

假设我们有三个模式:

Instructor(id:integer, name:string, age:integer, salary:real)
Works(eid:integer, did:integer, pct-time:integer)
Dept(did:integer, budget:real, managerid:integer)

让我从展示两个类似的问题开始:

a) 查找管理预算超过 100 万美元的所有部门的教师的经理 ID。

溶液1

b) 查找仅管理预算超过 100 万美元的部门的教师的经理 ID。

溶液2

我的问题是我无法弄清楚为什么u=[managerid] = s[managerid]u[budget] > 1000000约束被切换。有人可以用文字解释为什么顺序会影响结果吗?

0 投票
2 回答
6166 浏览

relational-algebra - 程序和非程序查询语言的区别

通过关系代数,我遇到了“过程查询语言”这个术语。那么程序查询语言和非程序查询语言有什么区别呢?

0 投票
2 回答
47 浏览

database - 由两个主键标识的值的数据库设计

我有一个 event_id、role_id 和 rank 表。下表应该有助于可视化我们期望的关于约束的各种结果:

Event_Id 是 Event 表的主键。
Role_Id 是 Role 表的主键。
使用事件和角色,我们可以找到与该给定事件的该角色相关联的等级。

一个角色可以用于具有不同等级的多个事件(场景 1 和 3)
但是,对于同一事件,两个角色不应具有相同的等级。(场景 1 和 2)

我们如何建立这些约束,以便我们可以在给定事件中识别给定角色的等级,但角色的等级仅在该事件中是唯一的?

0 投票
1 回答
345 浏览

relational-database - 是否可以使用关系演算来表达非空约束?

我知道关系演算基于一阶逻辑,因此没有空值的概念,但是可以使用反连接在关系代数的查询中表达非空约束。是否存在仅使用关系演算来表达此类查询的等效机制?

例如,可以使用关系演算来表达形式为 SELECT * from x WHERE y IS NOT NULL 的基本 SQL 查询吗?

0 投票
0 回答
155 浏览

quantifiers - 受量词约束的元组变量能否出现在“|”的左侧 在元组关系演算中?

引用元组关系演算的一般表达式(数据库系统基础 - Elmasri,Navathe;第 6 版)

元组关系演算的一般表达式是

{t1.Aj, t2.Ak, ..., tn.Am | COND(t1, t2, ..., tn, tn+1, tn+2, ..., tn+m)}

其中 t1, t2, ..., tn, tn+1, ..., tn+ m是元组变量,每个Ai是ti范围的关系的属性,COND是元组关系演算的条件或公式。公式由谓词演算原子组成,可以是以下之一:

1. R(ti) 形式的原子,其中 R 是关系名称,ti 是元组变量。该原子将元组变量 ti 的范围标识为名称为 R 的关系。如果 ti 是关系 R 中的元组,则计算结果为 TRUE,否则计算结果为 FALSE。

2. ti.A op tj.B 形式的原子,其中 op 是集合 {=, <, ≤, >, ≥, ≠} 中的比较运算符之一,ti 和 tj 是元组变量,A 是ti 范围的关系的属性,B 是 t 范围的关系的属性。ti.A op c 或 c op tj.B 形式的原子,其中 op 是集合 {=, <, ≤, >, ≥, ≠} 中的比较运算符之一,ti 和 tj 是元组变量,A是ti 范围的关系的属性,B 是tj 范围的关系的属性,c 是常数值。

*编辑(感谢philipxy):TRC中关于上述一般表达式的查询的含义是,

对于 {t|p}--“这种查询的结果是所有将 COND(t) 评估为 TRUE 的元组 t 的集合”。对于 {t.a1,t.a2,...|p}--“我们首先为每个选定的元组 t 指定请求的属性 […]。然后我们指定选择条形后面的元组的条件”。

也有提到,

元组关系演算表达式中唯一的自由元组变量应该是出现在条形 (|) 左侧的那些。


例如,考虑一个关系 Students(id, Grade),我们想找到“所有获得最高成绩的学生的 id”。元组关系演算中指定的查询可以是

Q1 = {s1. 编号 | 学生(s1) ^ ¬(∃ s2, 学生(s2) ^ ( s2.grade > s1.grade) )}

这里,s1 是自由变量。

Q1 可以解释为元组变量 s1 的所有 id 值,其中 s1 范围在关系 student 内(即 s1 属于学生)并且不存在变量 s2 使得 s2 属于学生并且 s2.grade > s1.grade。

考虑查询,

Q2 = {s1。编号 | ∃ s1, 学生(s1) ^ ¬(∃ s2, 学生(s2) ^ ( s2.grade > s1.grade) )}

Q3 = {s1。编号 | ∀ s1, 学生(s1) ^ ¬(∃ s2, 学生(s2) ^ ( s2.grade > s1.grade) )}

正如我们所见,Q2 和 Q3 中的 s1(条形左侧的变量)也分别以 ∃ 和 ∀ 为界。

假设 Q2 和 Q3 甚至是可能的,那么 Q2 和 Q3 的解释与 Q1 有何不同?


笔记:

  • 查询 Q2 和 Q3 由 Q1 组成,目的是试图了解如果“|”左侧的变量,查询将意味着什么 受存在量词或全称量词的约束。
  • (编辑,多想后)我对 Q2 和 Q3 的解释是 Q2 和 Q1 的结果将相同不会相同,因为 Q2 会产生所有s1 的 id 值,如果存在至少一个属于 student 的 s1 并且不存在 s2 使得 s2 属于 student 并且 s2.grade > s1.grade (意思是,Q2 的结果是“所有学生的集合id 如果至少有一个学生获得了最高分”)。Q3 将产生 s1 的所有 id 值,如果对于每个属于 student 且不存在 s2 的 s1 使得 s2 属于 student 并且 s2.grade > s1.grade (意思是,Q3 的结果是“集合如果每个学生都获得最高分,则所有学生 id”)。但是,我不确定查询 Q2 和 Q3 是否可能,或者即使一般情况下可能会出现条形左侧的变量也受量词限制的情况。