【问题标题】:Why are Relational Algebra, Tuple Relational Calculus, and Domain Relational Calculus used in DBMS?为什么在 DBMS 中使用关系代数、元组关系演算和域关系演算?
【发布时间】:2015-03-25 11:08:20
【问题描述】:

我们可以使用 SQL 查询来执行操作, 那么使用这三个的目的是什么:关系代数,元组关系演算,域关系演算。 即使为不懂 SQL 查询的外行设计查询,也可以使用关系代数; 另外两个有什么用?

【问题讨论】:

  • 即使为不懂 SQL Query 的外行设计查询,也可以使用关系演算;另外两个有什么用? PS 3 早于 SQL; SQL有什么用? PS SQL 是元组微积分和代数的(变态)组合。

标签: database relational-algebra


【解决方案1】:

它们在 DBMS 中没有使用,而是在其之上构建数据库系统的理论基础。所以从某种意义上说,“为什么我们有 SQL 时我们需要关系代数”这个问题就像“为什么我们有计算器时我们需要算术”。建立关系模型的数学理论称为First Order Logic。拥有这个数学基础很重要,因为这样我们就可以证明关系模型可以正常工作,并且可以做它声称的事情。域关系演算几乎是一阶逻辑的一对一表示法。元组关系演算等价于 DRC,但有时更容易推理。特别是,Codd's Theorem 证明了与域无关的 TRC 与关系代数的等价性。关系代数是 SQL(松散地)基于的东西。所以这说明了为什么我们需要所有这些理论来确保 SQL 正常工作(尽管 SQL 确实违反了关系模型的几个属性,因此它有几个关系模型中不可能出现的异常)。

【讨论】:

  • SQL 是元组微积分和代数的(变态)组合。因此,当一个人使用 SQL 时,一个人同时使用了两者的概念。
【解决方案2】:

SQL 查询直接对应于关系演算的查询。但是,大多数 DBMS 在内部将这些查询转换为关系代数,这样可以更有效地优化这些查询。

因此,要让关系数据库发挥作用,同时拥有关系演算和关系代数是非常重要的。特别是,Codd 定理是在 DBMS 中完成两者之间转换的基础。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多