Qt 全流程实战企业级项目 – 云对象存储浏览器(慕K无密)
下载看水印
谓词(Predicate)是指一个返回 true,false 或 unknown 的标量表达式. 常用 p 表示,从表达式的角度看也可以用 e 表示
标量表达式可以包含关系算子和关系
如 1()≠∅,∈2(2) 中 predicate 部分是一个返回标量结果的子查询.
不含关系算子和关系数据的标量表达式称为纯标量表达式.
比如 a+b 中 + 只接受数值类型, 所以 a+b是一个纯标量表达式.
Relational Expression
关系表达式指返回一个'关系'(一组元组)的表达式.一般由关系算子,自由变量和常量组成.
逻辑算子 Filter 定义
():={|∈,()}
Filter 运算过程: 遍历关系 R 中每一行(元组) r, p(r)的结果为true则保留.
通过自由变量与绑定的概念, 关系表达式可以消费输入, 产生输出, 嵌套成更复杂的关系表达式.
自由变量(Free variable)
指表达式中需要从输入中获取绑定值的属性
以 谓词 为 =′′ 为例,其中 name 是一个自由变量
获取自由变量函数 ()
() 表示获取关系表达式(或标量表达式) 中的自由变量集,如:
(=′′ ∧ >18)=(=′′ ∧ >18)={,}
按照属性绑定自由变量
对于一个表达式 e 有自由变量集
()={1,2,...,} 且()⊆() ,
定义
():=[1.1,...,.]
表示将元组 t按照属性绑定在 e 的自由变量上,从而完成求值.
同样,定义可以扩展到包上以及表达式的复合上:
2(1)=2(′)=2(1′,2′,...,′)
自由变量与属性绑定示例
比如令关系 ={{:2000,ℎ:12},{:2050,ℎ:1}} ,
想过滤出 year > 2008 的月份数据时, 令含自由变量的表达式 1=>2008,2=Πℎ,
则完成自由变量按属性绑定后的表达式的结果为:
″=2(1())=>2008(Πℎ())={{ℎ:1}}
含自由变量表达式等值的含义
当后续讨论两个含自由变量表达式等价时(如 1≡2), 则表示两个表达式自由变量部分一致.
也就是说, 等价意味着在两个表达式分别绑定相同的任意输入时, 产生相同的计算结果.
另外, 为了讨论方便, 后续也会用符号 = 表示与符号 ≡ 同样的含义, 即表达式等价.
领取专属 10元无门槛券
私享最新 技术干货