jos*_*drs 7 database-theory relational-theory relational-calculus
在我的数据库设计课程中,我们学习了关系代数和关系微积分。我可以看到关系代数在哪里有用,因为它与 SQL 密切相关。
我们的教授说,在一些 RDMBS 中,关系微积分被用作 SQL 的替代品,其中大部分已不再存在。关系微积分还有实际用途,还是大部分是理论性的?
我同意 @Erik,这些工具本质上是等效的,但我将添加一些关于这个主题的更多想法。
为了提供更多的上下文,有必要对这两个术语都有一个权威的定义。所以,这里有一些相关论文的摘录,题为Relational Completeness of Data Base Sublanguages,该论文由关系模型的创始人EF Codd 博士撰写,并于 1972 年发表:
关系代数。该代数的主要目的是提供一组适用于从关系数据库中选择数据的所有度(不一定是二元)关系的操作集合。
关系演算。定义了关系代数之后,我们现在考虑应用谓词演算,该演算也可用于在由简单范式形式的有限关系集合组成的任何数据库上制定查询。
通过这种方式,人们可以看到它们服务于相同的目的,因为它们是两种不同的数学方法,用于表达在关系框架内被认为有效的一组操作。
在同一篇论文中,Codd 对比了这两种方法,以指出每种方法都突出的一些重要方面:
代数方法可能声称的一个优点是它没有量词。然而,微积分似乎在四个方面优于代数。
- 易于扩充
- 搜索优化的范围
- 授权能力
- 接近自然语言
因此,旨在构建自己的语言或数据库平台的组织应该考虑这些方面。
我不知道是否有当代成功的商业 RDBMS 提供纯粹基于关系演算的查询语言,但我认为它的实际价值在于它为计划设计和实现新的有效的供应商提供了一个理论上的替代方案。关系语言,或扩展现有的语言,而不背离经过验证和接受的实践。在这方面,将关系演算视为此类供应商可以遵循以生成关系语言的蓝图会很有用。
由于市场主要由 SQL 平台主导,全球数百万用户已经熟悉它的几种特定方言,并且在这些平台上投资了数十亿美元,因此确定创建新的关系语言是否会是非常有趣的有利可图,但如果是这样,关系演算总是可以发挥重要作用。
当然,这样的项目在学术领域可能更可行,所以这个工具有更多的实用价值。
https://en.wikipedia.org/wiki/Relational_calculus:
关系代数和关系微积分在逻辑上是等价的:对于任何代数表达式,在微积分中都有一个等价的表达式,反之亦然。
基本上,它们是两种有效产生相同输出的工具/方法。学习一个可能会洞察另一个,额外的洞察力是学习两者的真正价值。
归档时间: |
|
查看次数: |
740 次 |
最近记录: |