您的位置:首页 > 其它

域关系演算

2015-10-07 19:16 253 查看
域关系演算

原子公式有两种形式:

⑴ 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)}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: