域关系演算

来源:互联网 发布:淘宝潮男衣服店铺推荐 编辑:程序博客网 时间:2024/04/25 19:35

域关系演算

原子公式有两种形式:

 ⑴ R(x1…xk),R是一个k元关系,每个xi是常量或域变量;

 ⑵ xθy,其中x,y是常量或域变量,但至少有一个是域变量,θ是算术比较符。                                                            

公式中可使用∧、∨、┐和=>等逻辑运算符,也可用(∃x)和(∀x)形成公式,但变量x是域变量,不是元组变量。

自由域变量、约束域变量等概念和元组演算中一样。

域演算表达式是形为{t1…tk∣P(t1,…,tk)}的表达式,其中P(t1,…,tk)是关于自由域变量t1,…,tk 的公式。

例 图2.21的(a)、(b)、(c)是三个关系R、S、W,(d)、(e)、(f)分别表示下面三个域表达式的值。

 

R1={xyz|R(xyz)∧x<5∧y>3 }

R2={xyz|R(xyz)∨(S(xyz)∧y=4)}

R3={xyz|(∃u)(∃v)(R(zxu)∧W(yv)∧u>v)} 

元组表达式到域表达式的转换

我们可以很容易地把元组表达式转换成域表达式,转换规则如下:

 ⑴ 对于k元的元组变量t,可引入k个域变量t1…tk,在公式中t用t1…tk替换,元组分量t[i]用ti替换。

 ⑵ 对于每个量词(∃u)或("u),若u是m元的元组变量,则引入m个新的域变量u1…um。在量词的辖域内,u用u1…um替换,u[i]用ui替换,(∃u)用(∃u1)…(∃um)替换,(∀u)用(∀u1)…(∀um)替换。

例 设教学数据库中有三个关系:

学生关系   S(S#,SNAME,AGE,SEX)

选课关系 SC(S#,C#,GRADE)

课程关系   C(C#,CNAME,TEACHER)

(1) 检索学习课程号为C2的学生学号与成绩。

{t|(∃u)(SC(u)∧u[2]='C2'∧t[l]=u[1]∧t[2]=u[3])}

{t1t2|(∃u1)(∃u2)(∃u3)(SC(u1u2u3)∧u2='C2'∧t1=u1∧t2=u3)}

  可以化简为:

          {t1t2| (SC(t1'C2' t2))}

 

(2) 检索学习课程号为C2的学生学号与姓名。

{t|(∃u)(∃v)(S(u)∧SC(v)∧v[2]='C2'∧u[l]=v[1]∧t[l]=u[1]∧t[2]=u[2])}

{t1t2|(∃u1)(∃u2)(∃u3)(∃u4)(∃v1)(∃v2)(∃v3)(S(u1u2u3u4)∧SC(v1v2v3)∧v2='C2'∧u1=v1∧t1=u1∧t2=u2)}

可以化简为:

   {t1t2|(∃u3)(∃u4)(∃v3)(S(t1t2u3u4)∧SC(t1'C2' v3)}

0 0
原创粉丝点击