如何使用 RelaX 关系代数计算器
RelaX 关系代数计算器帮助您在浏览器中学习和练习数据库关系代数表达式。
- 准备数据 — 使用内置示例数据集(Students、Courses、Enrollments)或通过「导入」按钮导入自己的 CSV/TSV/JSON 数据。
- 编写表达式 — 使用符号按钮或直接在编辑器中输入。支持的运算符包括 σ、π、ρ、∪、∩、−、×、⨝、⟕、⟖、⟗、⋉、÷。
- 点击执行 — 计算器将表达式解析为 AST,逐步计算并显示结果。
- 查看结果 — 查看解析后的表达式、操作步骤和最终关系表,包含字段名、行数和去重元组数。
公式与原理 — RelaX 关系代数计算器
RelaX 关系代数计算器实现了标准的关系代数操作:
选择(σ)
σ[条件](R)
→ 返回 R 中满足条件的所有元组。
示例:σ[age>20](Students)
投影(π)
π[列1,列2,...](R)
→ 仅返回指定的列,去除重复。
示例:π[name,major](Students)
重命名(ρ)
ρ[新名](R) → 重命名关系
ρ[新列/旧列](R) → 重命名列
示例:ρ[Learners](Students)
并(∪)、交(∩)、差(−)
R ∪ S → R 或 S 中的所有元组(模式必须匹配)
R ∩ S → 同时在 R 和 S 中的元组
R − S → 在 R 中但不在 S 中的元组
笛卡尔积(×)
R × S
→ R 和 S 中元组的所有可能组合。
重复列名会加上表名限定。
自然连接(⨝)
R ⨝ S
→ 在所有同名列上连接 R 和 S。
示例:Students ⨝ Enrollments
Theta 连接
R ⨝[条件] S
→ 在条件满足时连接 R 和 S。
示例:Students ⨝[Students.sid=Enrollments.sid] Enrollments
外连接
R ⟕ S → 左外连接(保留 R 的所有元组)
R ⟖ S → 右外连接(保留 S 的所有元组)
R ⟗ S → 全外连接(保留两边所有元组)
半连接(⋉)和反连接(▷)
R ⋉ S → R 中有匹配 S 元组的元组
R ▷ S → R 中没有匹配 S 元组的元组
除法(÷)
R ÷ S
→ 找出 R 中与 S 所有元组都关联的元组。
经典的「找出满足所有条件的对象」查询模式。
谓词语法
比较运算:=、!=、<>、>、<、>=、<=
逻辑运算:AND、OR、NOT
字符串: '值' 或 "值"
列引用: 列名
| 运算符 | 符号 | 关键字替代 |
|---|---|---|
| 选择 | σ | SELECT |
| 投影 | π | PROJECT |
| 重命名 | ρ | RENAME |
| 并 | ∪ | UNION |
| 交 | ∩ | INTERSECT |
| 差 | − | EXCEPT / DIFFERENCE |
| 笛卡尔积 | × | CROSS |
| 自然连接 | ⨝ | JOIN |
| 左连接 | ⟕ | LEFT |
| 右连接 | ⟖ | RIGHT |
| 全连接 | ⟗ | FULL |
| 半连接 | ⋉ | SEMI |
| 反连接 | ▷ | ANTI |
| 除法 | ÷ | DIV |
使用场景 — RelaX 关系代数计算器
RelaX 关系代数计算器在多种数据库学习场景中非常实用:
- 数据库课程作业 — 练习大学数据库课程的关系代数表达式,即时验证答案。
- SQL 到关系代数的转换 — 通过编写等价表达式,理解 SQL 查询如何映射到关系代数。
- 查询优化学习 — 比较同一查询的不同关系代数表达式,理解优化策略。
- 考试准备 — 使用内置示例数据集(Students/Courses/Enrollments)练习常见的考试题型。
- 教学演示 — 教师可在课堂上使用此工具实时演示关系代数概念。
- 数据分析原型 — 在编写完整 SQL 之前,快速测试小型数据集上的关系操作。
- 学习连接类型 — 用相同数据集比较自然连接、Theta 连接、外连接、半连接和反连接的区别。