关系演算是一种非过程查询语言。 在非过程查询语言中,用户关心如何获得最终结果的细节。
关系演算告诉我们要做什么但从未解释过如何做。
关系演算的类型:
指定元组关系演算以选择关系中的元组。 在TRC中,过滤变量使用关系的元组。
关系的结果可以有一个或多个元组。
符号
{T | P (T)} 或 {T | Condition (T)}
其中,
T
是由此产生的元组P(T)
是用于获取T
的条件。
示例:
{ T.name | Author(T) AND T.article = 'database' }
输出 :此查询从AUTHOR
关系中选择元组。 它返回一个带有'name'
的元组,Author
写了一篇关于'database'
的文章。
TRC(元组关系演算)可以量化。 在TRC中,我们可以使用存在性(?)和通用量词(?)。
示例:
{ R| ?T ∈ Authors(T.article='database' AND R.name=T.name)}
输出: 此查询将产生与前一个查询相同的结果。
第二种关系形式称为域关系演算。 在域关系演算中,过滤变量使用属性域。
域关系演算使用与元组演算相同的运算符。 它使用逻辑连接词∧
(和),∨
(或)和┓
(非)。
它使用存在性(?)和通用量词(?)来绑定变量。
符号 -
{ a1, a2, a3, ..., an | P (a1, a2, a3, ... ,an)}
其中,
a1
,a2
是属性。P
代表由内部属性构建的公式。
示例:
{< article, page, subject > | ∈ zyiz ∧ subject = 'database'}
输出: 此查询将从关系zyiz
生成文章,页面和主题,其中主题是数据库。