我们可以使用SQL查询来执行操作, 那么使用所有这三个的目的是什么:关系代数,元组关系演算,域关系演算。 即使为不了解SQL查询的外行设计查询,也可以使用关系代数; 其他两个有什么用?
答案 0 :(得分:5)
它们不是在DBMS中使用,而是在构建数据库系统之上的理论基础。所以从某种意义上说,问题"为什么我们需要关系代数,当我们有SQL"就像"为什么我们需要算术时才有计算器"。构建关系模型的数学理论称为First Order Logic。拥有这个数学基础很重要,因为我们可以证明关系模型能够正常工作,并且能够做到它所宣称的。域关系微积分几乎是一阶逻辑的一对一表示法。元组关系微积分等同于DRC,但有时更容易推理。特别是,Codd's Theorem证明了域独立TRC与关系代数的等价性。关系代数是SQL(松散地)基于的。这就说明了为什么我们需要所有这些理论来确保SQL正常工作(尽管SQL确实违反了关系模型的几个属性,因此它在关系模型中有几个不可能的异常)。
答案 1 :(得分:0)
SQL查询直接对应于关系演算的查询。但是,大多数DBMS在内部将这些查询转换为关系代数,可以更有效地优化这些查询。
因此,关系数据库和关系代数都可以使关系数据库工作非常重要。特别是,Codd的定理是在DBMS中完成的两者之间的转换的基础。