您的位置:首页 > 其它

06形式化关系查询语言

2017-02-28 01:08 507 查看

关系代数

关系代数中基本的表达式是如下二者之一:数据库中的一个关系,一个常数关系。关系代数中一般的表达式是由更小的子表达式构成,设E1和E2是关系代数表达式,则E1∪E2,E1−E2,E1×E2,σp(E1), Πs(E1) , ρx(E1)都是关系代数表达式

过程化查询语言

基本运算

选择:σp(r)={t|t∈r and p(t)}

选择谓词p中可以使用=, ≠, >, ≥, <, ≤, and(∧), or(∨), not(¬) 将多个谓词合并成一个较大的谓词

投影:ΠA1,A2,…,An(r)

由于关系是一个集合,所以所有重复的行均被去除

并:r∪s={t|t∈r or t∈s}

要使r∪s有意义(即r和s是相容的),需要下面两个条件同时成立

关系r和关系s必须是同元的,即属性的数目必须相同

对所有的i, r的第i个属性的域必须和s的第i个属性的域相同

集合差:r–s={t|t∈r and t∉s}

要使r−s有意义(即r和s是相容的),需要下面两个条件同时成立

关系r和关系s必须是同元的,即属性的数目必须相同

对所有的i, r的第i个属性的域必须和s的第i个属性的域相同

笛卡尔积:r×s={tq|t∈r and q∈s}

假设r(R)和s(S)的属性是不相交的(即R∩S=ϕ)

如果r(R)和s(S)的属性相交,则必须使用重命名

更名运算:ρx(A1,A2,...,An)(E)

返回表达式E的结果,并赋给名字x,同时将属性更名为 A1,A2,…,An

附加的运算——可以用基本运算表达

集合交:r∩s={t|t∈r and t∈s}=r–(r–s)

自然连接:r⋈s=ΠR∪S(σr.A1=s.A1∧r.A2=s.A2∧…,∧r.An=s.An(r×s)),,其中R∩S={A1,A2,…,An}

交换律

结合律

theta连接:r⋈θs=σθ(r×s)

外连接

左外连接:r ⟕ s=r⋈s∪(r−ΠR(r⋈s))×{null,null…,null}

右外连接:r⟖s=r⋈s∪({null,null…,null}×(s−ΠR(r⋈s))

全外连接:r⟗s=r⋈s∪()(r−ΠR(r⋈s))×{null,null…,null})∪({null,null…,null}×(s−ΠR(r⋈s)))

赋值运算:temp←E1

只能对临时关系变量赋值

扩展的运算——扩展了关系代数的表达能力

广义投影:ΠF1,F2,…,Fn(r)

Fi可以包含+,−, ∗, / 代数运算和字符串串接

聚集:G1,G2,…,Gn
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: