分享

元组关系演算语言ALPHA

 kaichun 2007-02-25

 

                  

一、

元组关系演算

 1。 元组关系演算概念

在元组关系演算系统中,称

      {t(t)}

元组演算表达式。其中t元组变量Φ(t)为元组关系演算公式,简称公式。它由原子公式和运算符组成。

   

 2。 原子公式

1)  R(t)

R是关系名,t是元组变量。R(t)表示tR中的元组。于是,关系R可表为:

{t|R(t)}

        

(2)  T[i]θu[j]

tu是元组变量,θ是算术比较运算符。T[i]θu[j]表示“元组t的第i个分量与元组u的第j个分量满足比较关系θ。例如,t[2]<u[3]表示元组t的第2个分量小于元组u的第3个分量。

      

(3) t[i]θccθt[i]

这里c是常量,该公式表示“t的第i个分量与常量c满足比较关系θ。例如,t[4]=3表示元组t的第4个分量等于3

      

 3。 若公式中的一个元组变量前有“全称量词 P (universal quantifier)或“存在量词 v(existential quantifier)”,则称该变量为约束元组变量,否则称自由元组变量

      

 4。 公式递归定义

定义:

(l) 每个原子公式是公式。

(2) 如果Φ1Φ2是公式,Φ1Φ2, Φ1∨Φ2,┓Φ1也是公式。表示:

·如果Φ1Φ2同时为真,则Φ1Φ2才为真,否则为假

·如果Φ1Φ2中一个或同时为真,Φ1∨Φ2为真,仅当Φ1Φ2同时为假

  , Φ1∨Φ2才为假

·若Φ1为真,Φ1为假。

(3)Φ是公式,则 vt(Φ)也是公式。v t(Φ)表示若有一个t使Φ为真

  则 vt(Φ)为真,否则 vt(Φ)为假。

(4)Φ是公式,则 Pt(Φ)也是公式。P t(Φ)表示如果对所有t,都使Φ

  为真 Pt(Φ)为真,否则 Pt(Φ)为假。

(5) 在元组演算公式中,各种运算符的优先次序为:

   ( )—> 算术比较运算符—> v—> P> —> —>

(6)有限次地使用上述五条规则得到的公式是元组关系演算公式,其他公式不是元组关系演算公式。

    

 5。 元组关系演算表达式表示关系代数的基本运算

一个元组演算表达式{t|Φ(t)}表示了使Φ(t)为真的元组集合。关系代数的运算均可以用关系演算表达式来表示(反之亦然)。下面用关系演算表达式来表示五种基本运算

(1)   

RS={tR(t) ∨s(t)}

(2)    :

RS={tR(t) S(t)}

(3)    笛卡儿积

   R×S={t(n+m)(vu(n))( vv(m))(R(u) S(v) t[1]=u[1] ……t[n]=u[n] t[n+1]=v[1] ……t[n+m]=v[m])}

这里t(n+m) 表示t有数目(n+m)

(4)    投影

πi1,i2,…….,ik®={t(k)(vu)(R(u) t[1]=u[i1] ……t[k]=u[ik])}

(5)    选择:

σF(R)={tR(t) F’}

F‘是公式Ft[i]代替运算对象i得到的等价公式。

1查询信息系(IS)全体学生。

    SIS={tStudent(t) t[5]=’ IS’}

2查询年龄小于20岁的学生。

    S20={tStudent(t) t[4]<20}

3查询学生的姓名和所在系。

    S1={t(2)(vu)(Student(u) t[1]=u[2] t[2]=u[5])}

       

6。 关系演算的安全限制

上面定义的关系演算允许出现无限关系。例如,{t|R(t)}表示所有不属于R的元组(元组的目数等于R的目数)。要求出这些可能的元组是做不到的,所以必须排除这类无意义的表达式。把不产生无限关系的表达式称为安全表达式,所采取的措施称为安全限制

安全限制通常是定义一个有限的符号集dom(Φ)dom(Φ)一定包括出现在Φ以及中间结果和最后结果的关系中的所有符号(实际上是各列中值的汇集)dom(Φ)不必是最小集。

当满足下列条件时,元组演算表达式{t|Φ(t)}是安全的:

(1)    如果t使Φ(t)为真,t的每个分量是dom(Φ)中的元素。

(2)    对于Φ中每一个形如(vu)(W(u))的子表达式,u使W(u)为真,u的每个分量是dom(Φ)中的元素。

(3)    对于Φ中每一个形如(Pu)(W(u))的子表达式,u使W(u)为假,u的每个分量必属于dom(Φ)。换言之,u某一分量不属于dom(Φ),W(u)为真。

4  设有关系R如图2.8(a),S={t|R(t)},若不进行安全限制,则可能是一个无限关系。所以定义

     dom(Φ)= πA(R) πBπC(R)

         ={{a1,a2},{b1,b2},{c1,c2}}

S是dom(Φ)中各域值中元素的笛卡儿积与R的差集。结果如图2.8(b)。注意,在做笛卡儿积是各个域中的元素不能搞混。

 

二、 元组关系演算语言ALPHA

元组关系演算以元组变量作为谓词变元的基本对象。一种典型的元组关系演算语言是E.F.Codd提出ALPHA语言,这一语言虽然没有实际实现,但关系数据库管理系统INGRES所用的QUEL语言是参照ALPHA语言研制的,与ALPHA十分类似。

ALPHA语言主要有GET、PUT、HOLD、UPDATE、DELETE、DROP六条语句,语句的基本格式是:
操作语句  工作空间名(表达式): 操作条件

其中表达式用于指定语句的操作对象,它可以是关系名或属性名,一条语句可以同时操作多个关系或多个属性。操作条件是一个逻辑表达式,用于将操作对象限定在满足条件的元组中,操作条件可以为空。除此之外,还可以在基本格式的基础上加上排序要求,定额要求等。

以下仍以P58的实例讨论ALPHA语言:

 1、

检索操作

检索操作用GET语句实现。

(1)简单检索(即不带条件的检索)

举例


(2)限定的检索(即带条件的检索)

举例


(3)带排序的检索

举例


(4)带定额的检索

举例


(5)用元组变量的检索

详细信息…


(6)用存在量词的检索

举例


(7)带有多个关系的表达式的检索

举例


(8)用全称量词的检索

举例


(9)用两种量词的检索

举例


(10)用蕴函(Implication)的检索

举例


(11)集函数

举例

 2、

更新操作

(1) 修改操作
修改操作用UPDATE语句实现。其步骤是:
·首先用HOLD语句将要修改的元组从数据库中读到工作空间中
·然后用宿主语言修改工作空间中元组的属性
·最后用UPDATE语句将修改后的元组送回数据库中

详细信息…


   

(2) 插入操作   


插入操作用PUT语句实现。其步骤是:   
·首先用宿主语言在工作空间中建立新元组
·然后用PUT语句把该元组存入指定的关系中

举例


   

(3) 删除


删除操作用DELETE语句实现。其步骤为:   
·用HOLD语句把要删除的元组从数据库中读到工作空间中
·用DELETE语句删除该元组

举例

Copyright 1998, All rights reserved.

  厦门大学计算机科学系   薛永生

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多