学习关系代数背后的实际原因是什么?

Gor*_*yle 8 learning relational-theory

学习如何在关系代数中制定类似查询的表达式是许多(也许是大多数)“数据库简介”课程的传统部分。

这通常是由关系代数是一般关系数据库的数学基础,特别是 SQL 的数学基础的断言来证明的,这意味着了解它很重要。

然而,在我看来,在关系代数中制定表达式与在 SQL 中制定查询基本相同,而且这两个任务的思想过程基本相同。特别是,我真的看不出知道关系代数会使编写 SQL 查询变得更容易,反之亦然。这让我怀疑关系代数的教学是否只是某种历史遗留问题,或者了解它是否真的有特定的好处。

所以我的问题是“了解关系代数是否有特定的实际好处,是否足够重要以使其值得教授?”

作为数据库管理员,您是否认为关系代数对您的职业轨迹很重要?

一个子问题是学习关系代数的时间是否可以通过学习更多的 SQL 来更有效地利用?

Tod*_*ett 10

当 Codd 定义关系模型时,他定义了一组可以应用于关系的运算符。在指定关系代数时,就像指定整数代数一样,我们可以使用符号代替关系来解决查询。这些运算符与整数代数运算符(+、-、*、/)具有相同的代数属性。因此,我们可以假设某些定律总是适用于一个关系,任何关系,经历那个操作。例如,在整数代数中,我们知道加法和乘法是结合的,因为我们可以改变操作数的分组而不改变结果:

a + ( b + c ) = ( a + b ) + c

类似地,在关系代数中,我们知道自然连接是关联的,因此知道 A 连接 B 连接 C 可以以任何顺序执行。这些属性和规律创造了重写查询公式的能力,并保证获得相同的结果。《数据库专业人员应用数学》一书提供了有关可用于以不同方式精确制定相同查询的各种重写规则的重要细节。在一个完美的世界中,任何产生相同结果的配方都将具有相同的性能。现代优化器虽然是一款了不起的软件,但并不完美。因此,如果您以一种方式制定了查询并且性能不佳,那么您就有技能以不同的方式制定并知道它具有相同的语义。另一个实际优点是数据库约束的规范。首先,了解关系代数使您能够确定制定约束的最简单方法。其次,通过在形式逻辑中制定约束,您可以立即澄清业务主题专家用宽松的英语制定业务规则并避免错误的意图中的任何歧义。

列奥纳多·达·芬奇曾说过:

爱实践而没有理论的人,就像没有舵和指南针登上船的水手,永远不知道他可以投向何处。

用同样的方法,数据从业人员谁不明白关系理论的基本原则不能在随着技术的完整的命令,因为他们可以这种理解。关于关系代数的一些重要参考资料是 SIRA_PRISE 的关系代数介绍页面,以及 CJ Date 的SQL 和关系理论。Date 的书展示了理解关系代数的实用性,以便您可以编写更准确的 SQL 查询。SQL 有许多怪癖和陷阱,并且对它的工作原理与原始关系代数运算符有一个很好的了解,这确实有助于了解陷阱所在并避免它们。