标签:作用 除法 ref art exp javascrip amp 命名 量化
关系代数是SQL之外还有一种描写叙述数据库操作的形式化语言,关系变量(表)是关系代数中的基本表达式
关系代数三个重要的形式化定义例如以下:
F断言中能够有逻辑运算符(与或非:
有集合运算符(并、交、差、笛卡尔乘积):
左箭头
定义关系模式R(A,B,C,D)和S(E,B,D)的实例r、s的自然连接为:
定义关系模式
用全然的关系代数表示为:
聚合函数定义如SQL。包含了avg、min、max、sum、count等,形式化的关系代数聚合操作为:
当中group by
。
删除操作的形式化定义为
插入操作的形式化定义为
更新用Projection操作赋值给关系变量就可以
关系演算是SQL、关系代数之外的又一种描写叙述数据库操作的形式化语言,关系演算基本操作对象是范围变量(Range Variable,是关系变量/表的逻辑表达的别称)
关系演算基本的语法为:
1.范围变量定义
<Range var definition>::=
RANGEVAR <range var name> RANGES OVER <relational exp commlist>
2.范围属性定义
<range attr reference>::=
<range var name>.<attr reference> [ AS <atrr name> ]
3.布尔表达式
<boolean exp>::= ... all the usual possibilities, together with: | <quantified boolean exp>
4.量化布尔表达式(存在和全部)
<quantified boolean exp>::=
EXISTS <range var name>(<boolean exp>)|
FORALL <range var name>(boolean exp>)
5.关系操作
<relational operation>::= <proto tuple>[WHERE <boolean exp>]
6.元组表达式
<proto tuple> ::= <tuple exp>
须要特别注意的是量化布尔表达式:
EXISTS v(P(v))
仅仅要有一个P(v)
为真,即为真FORALL v(P(v))
须要全部P(v)
为真,才为真FORALL v(P(v))
等价于NOT EXISTS v(NOT P(v))
关系演算中元组演算就是对元组的操作。简单的元组演算和SQL十分类似:
// Find supplier numbers and status for suppliers in Paris with status >20
// Define a range variable
RANGEVAR sx RANGES OVER S;
// Where clause implement Restriction&Projection
(sx.s#, sx.status) WHERE sx.city=‘paris‘ AND sx.status>20
较为复杂的元组演算引入量化布尔表达式:
// Find supplier names for suppliers who supply all parts.
sx.sname WHERE FORALL px(EXISTS spx(spx.s# = sx.s# AND spx.p# = px.p#))
关系演算其它操作,如聚合函数、集合操作等都和SQL较为类似,略
标签:作用 除法 ref art exp javascrip amp 命名 量化
原文地址:http://www.cnblogs.com/claireyuancy/p/7217371.html