关系运算关系演算

合集下载

数据库系统基础讲义第03讲关系模型之基本概念

数据库系统基础讲义第03讲关系模型之基本概念

战德臣 教授
首先定义“列”的取值范围“域(Domain)”
域(Domain)
一组值的集合,这组值具有相同的数据类型 如整数的集合、字符串的集合、全体学生的集合 再如, 由8位数字组成的数字串的集合,由0到100组成的整数集合
集合中元素的个数称为域的基数(Cardinality)
D3=儿童集合(CHILD)={李健,张睿,张峰} D2=女人集合(WOMAN)={王芳,刘玉} D1=男人集合(MAN)={李基,张鹏}
列值:来自域
什么是关系? (2)“表”的严格定义--关系?
战德臣 教授
关系可用R(A1:D1 , A2:D2 , … , An:Dn )表示,可简记为R(A1 , A2 , … ,
关系模式 An ),这种描述又被称为
(Schema)或表标题(head)
度 目 R是关系的名字, Ai 是属性, Di 是属性所对应的域, n是关系的 或
战德臣 教授
由于笛卡尔积中的所有元组并不都是有意义的,因此…
关系(Relation)
一组域D1 , D2 ,…, Dn的笛卡尔积的子集 笛卡尔积中具有某一方面意义的那些元组被称作一个关系(Relation)
由于关系的不同列可能来自同一个域,为区分,需要为每一列起一个名
字,该名字即为属性名。
列名(属性名)
什么是关系? (1)什么是“表”?
战德臣 教授
为什么把“表”称为关系? 怎样严格定义一个“表”? “表”和“关系”有什么异同?
什么是关系? (2)“表”的基本构成要素
如何严格地定义Table呢?
表/关系
列/字段/属 性/数据项 列名
列值பைடு நூலகம்
战德臣 教授
标题/模式 行/元组/记录

数据库关系运算

数据库关系运算
同的属性名, 但必须出自相同的域集。 R÷S定义形式为: R÷S=πX(R)-πX((πX(R)×S)-R)
第3章 关系运算及关系系统
除法的性质:
(1) R÷S的结果属性是由属于R但不属于S的所有属性
构成的。
(2) R÷S的任一元组都是R中某元组的一部分。 (3) R(X,Y)÷S(Y,Z)≡R(X,Y)÷πY(S)
或构造临时关系T={P2,P4}, 再求
πE#, P#(EP)÷T
第3章 关系运算及关系系统
⑧ 检索参与全部项目职工姓名。
πEN(((πE#, P#(EP))÷πP#(P)) πE#, P#(EP)÷πP#(σE#=′E3′(EP)) E)
⑨ 检索参与项目包含职工E3参与项目的职工号,
或参与项目不包含职工E3所参与项目的职工号及姓名。
第3章 关系运算及关系系统
R÷S=πX(R)-πX((πX(R)×S)-R)
(4) R÷S的计算过程如下:
① T=πX(R);
② W=(T×S)-R;
③ V=πX(W);
④ R÷S=T-V。
【例3.3】 给定关系R和S, 求R÷S。
第3章 关系运算及关系系统
图3.5 除法操作举例
第3章 关系运算及关系系统
然连接。 为了保留更多信息, 还有外连接、 半连接、 外部并-----扩充的关系代数运算。
第3章 关系运算及关系系统
1. 外连接(Outer join) 两个关系 R和 S 作自然连接时, 两个关系
公共属性上值不相等的元组无法进入连接后的
新关系, 造成R和S中部分元组值被舍弃。 有时希望这些该舍弃的元组继续保留在新关系 中-----外连接。
图3.7
S
SC运算结果

元组演算

元组演算

(3) t[i] θ c 或 c θ t[i]
这里 c 是常量,该公式表示 “t 的第 i 个分量与常量 C 满足比较关系 θ” 。例如: t[4]=3 表示元组 t 的第 4 个分量等于 3 。
在关系演算中定义了 “ 自由元组变量 ” 和 “ 约束元组变量 ” 的概念。这些概念和谓词演算中的概念完全一样。若公式中的一个元组变量前有 “ 全称量词 ” 或 “ 存在量词 ” ,则称该变量为约束元组变量,否则称自由元组变量。
其中 R(A,B,C,D) S(C,D,E)
关 系代 数 表 达 式 为 : π B ( σ A>E (RCROSS.gifS))
4 、把下列 关 系代 数 表 达 式 转换为 元 组 表 达 式
π 1,4 (RCROSS.gifS)
其中 R(A,B,C) S(B,D)
注: F 是公式。 F 用 t[i] 代替 运 算 对 象 i 得到的等价公式。
例 1 查询信息系 (IS 系 ) 全体学生:
S IS ={Student(t) ∧ t[5]='IS'}
例 2 查询年龄小于 20 岁的学生。
公式可以递归定义如下:
(l) 每个原子公式是公式。
(2) 如果 Φ 1 和 Φ 2 是公式,则 Φ 1 ∧ Φ 2 、 Φ 1 ∨ Φ 2 、 ﹁ Φ1 也是公式。分别表示:
① 如果 Φ 1 和 Φ 2 同时为真。则 Φ 1 ∧ Φ 2 才为真,否则为假;
② E2= π A,D ( σ R.C=S.C ( σ B<'2007' (R) ×σ E='80' (S)))
③ E3= π A,D ( σ B<'2007' (R) CROSS.gifσ E='80' (S))

第三章-关系代数与关系运算

第三章-关系代数与关系运算

第三章关系代数与关系运算关系数据语言有三类:1.关系代数语言2.关系演算语言(元组关系演算语言、域关系演算语言)3.具有关系代数和关系演算双重特点的语言如SQL一.关系代数关系代数:一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式。

用对关系的运算来表达查询。

运算:将一定的运算符作用于一定的运算对象上,得到预期的运算结果运算三要素:运算符、运算对象、运算结果关系代数的运算对象和结果都是:关系关系代数运算符(四类):集合运算符、专门的关系运算符、算术比较符和逻辑运算符集合运算符:并(U)、差(—)、交(∩)传统的集合运算符——从关系的“水平“方向即行的角度来进行专门的关系运算符:广义笛卡尔积(ⅹ)、选择(σ)、投影(π)、连接、除专门关系运算符不仅涉及行而且涉及列比较运算符:>、<、=、≥、≤、≠逻辑运算符:¬∧∨用来辅助专门的关系运算符二.传统的集合运算符传统集合运算符是二目运算符设关系R和S具有相同的目n(即n个属性),且相应的属性取自同一个域1.并(Union)记作:RUS={t|t∈R∨t∈S}结果仍是n目关系,由属于R或S的元组组成。

例:(a)(b)2.差关系R与S的差记作:R-S={t|t∈R∧t∈S} 结果仍是n目,由属于R而不属于S的所有元组组成。

如图E3.交关系R与S的交记作:R∩S = { t | t∈R∧t∈S }结果仍是n目,由即属于R又属于S的所有元组组成。

如图D 可以用差来表示R∩S=R-(R-S)4.广义笛卡尔积两个分别为n目和m目的关系R和S的广义笛卡尔积是一个(m+n)列的元组的集合。

元组的前n列是关系R的一个元组,后m列是关系S的一个元组。

若R有k1个元组,S有k2个元组,那么关系R与S的广义笛卡尔积有k1 x k2个元组,记作R×S = { t r t s | t r∈R∧t s∈S } 结果是m+n目如图例总结:集合运算符主要研究的是元组,即对表中的行进行研究、操作。

第3章 关系代数

第3章 关系代数
第2章
关系代数
第3章 关系代数 章
2.1 关系代数概述 2.2 传统的集合运算 2.3 专门的关系运算
第2章
关系代数
2.1 关系代数概述
关系操作采用集合操作方式,即操作的对象和结果都是集合。 这种操作方式也称为一次一集合的方式 。 关系模型中常用的关系操作 关系操作包括: 关系操作 选择、投影、连接、 增加、 选择、投影、连接、除、并、交、差等查询操作和增加、删除、 增加 删除、 修改等。 修改 关系数据语言可以分为三类: 关系数据语言可以分为三类:
第2章
关系代数
三、连接(Join) 连接( ) 连接也称为θ连接。 连接也称为 连接。它是从两个关系的笛卡尔积中 连接 选取属性间满足一定条件的元组。记作: 选取属性间满足一定条件的元组。记作:
其中A和 分别为 分别为R和 上度数相等且可比的属性组 上度数相等且可比的属性组。 其中 和B分别为 和S上度数相等且可比的属性组。 θ是比较运算符。连接运算从 和S的笛卡尔积 ×S中选 是比较运算符。 的笛卡尔积R× 中选 是比较运算符 连接运算从R和 的笛卡尔积 关系) 属性组上的值与( 关系 关系) 取(R关系)在A属性组上的值与(S关系)在B属性组 关系 属性组上的值与 属性组 上值满足比较关系θ的元组 的元组。 上值满足比较关系 的元组。 连接运算中有两种最为重要也最为常用的连接,一 种是等值连接(equi-join), 等值连接( ),另一种是自然连接 自然连接 等值连接 ), (Natural join)。 )。
tr ts表示由两元组tr和ts前后有序连接而成的一个元 组。 任取元组tr和ts,当且仅当tr属于R且ts属于S时,tr和ts的 有序连接即为R×S的一个元组。
第2章
关系代数

第三章 关系运算

第三章 关系运算

3、自然联接(natural join)---特殊的等值连接
将关系R和S中公共属性组满足对应分量相等的元组 联接起来, 并且要在结果中将重复的属性去掉。
R ⋈ S≡πi1,...im(σR.A1=S.A1∧... ∧R.AK=S.AK(R×S))
举例:
第17页,本讲稿共63页
4、 除(division)
A a
B b
abc bcd
a
b
bbf bce c a
cad adb
b
b
关系R
e f g null e
关系S
ABC D
AB
abc d
ab
abc e
ab
cad b
ca
b
b
f null
null e
CD cd ce db f null fg
CD cd ce db fg
第28页,本讲稿共63页
2. 外部并(outer union)
第26页,本讲稿共63页
i、如果R和S做自然联接时,把R中原该舍弃的元组放 到新关系中,那么这种操作称为“左外联接”操作, 用符号: R S表示。
ii、如果R和S做自然联接时,把S中原该舍弃的元组 放到新关系中,那么这种操作称为“右外联接”操作, 用符号: R S表示。
第27页,本讲稿共63页
ABC BCD
举例:
第10页,本讲稿共63页
2. 差(differedce):设关系R和关系S具有相同的元数,
且相应的属性列具有相同的特征:
R―S≡{t︱t∈R∧tS}
其中:t是元组变量,R和S的元数相同。
举例:
第11页,本讲稿共63页
3. 笛卡儿积(cartesian product)

第4章 关系运算

第4章 关系运算

自学考试《数据库原理》
连接(Join) 1)连接也称为θ连接 2)连接运算的含义 从两个关系的笛卡尔积中选取属性间满足一定条件的 元组 R S = { | tr R∧ts S∧tr[A]θts[B] } A和B:分别为R和S上度数相等且可比的属性组 θ:比较运算符 连接运算从R和S的广义笛卡尔积R×S中选取(R关 系)在A属性组上的值与(S关系)在B属性组上值满足比 较关系的元组。
自学考试《数据库原理》
3)两类常用连接运算 等值连接(equijoin) 什么是等值连接 θ为“=”的连接运算称为等值连接 等值连接的含义 从关系R与S的广义笛卡尔积中选取A、B属性值相等 的那些元组,即等值连接为: R S = { | tr R∧ts S∧tr[A] = ts[B] } 自然连接(Natural join)
自学考试《数据库原理》
自学考试《数据库原理》
外连接 为避免自然连接时因失配而发生的信息丢失,可以假 定往参与连接的一方表中附加一个取值全为空值的行,它 和参与连接的另一方表中的任何一个未匹配上的元组都能 匹配,称之为外连接 外连接 = 自然连接 + 失配的元组 外连接的形式:左外连接、右外连接、全外连接
自学考试《数据库原理》

专门的关系运算符 不仅涉及行而且涉及列 算术比较符 辅助专门的关系运算符进行操作 逻辑运算符 辅助专门的关系运算符进行操作 广义笛卡尔积(Extended Cartesian Product) R n目关系,k1个元组 S m目关系,k2个元组 R×S 列:(n+m)列的元组的集合
自学考试《数据库原理》
自学考试《数据库原理》
示例: 找出工资在800元以上的老师 {t | tPROF t[SAL] > 800} 找出工资在800元以上的老师的姓名 {t | sPROF ( t[PNAME] s[PNAME] s[SAL] > 800 )} 给出计算机系老师的姓名 {t | uDEPT ( u[DNAME] = “计算机系” sPROF ( s[DNO] = u[DNO] t[PNAME] s[PNAME] ))} 求选修了全部课程的学生号 {t | uC ( sSC ( s[CNO] = u[CNO] t[SNO] s[SNO] ))} 求选修了张军同学所选修的全部课程的学生姓名 课程,张军选之 所求同学选之 {t | uC ( sSC wS ( s[CNO] = u[CNO] w[SNO] s[SNO] w[SNAME] = “张军” )) 元组关系演算与关系代数的等价性

关系运算

关系运算
• 如TEACH(T, S, C)={(t1 , s1 , c1), (t1 , t2 , c1)}是错误的 – 不同的列可来自同一域,每列必须有不同的属性名。
• 如P={t1,t2 , s1,s2 ,s3},C= {c1,c2},则TEACH 不能写成TEACH (P, P, C),还应写成TEACH(T, S, C)
– dom一般直接说明为属性的类型、长度等
– 某一时刻对应某个关系模式的内容(元组的集 合)称作关系
– 关系模式是型,是稳定的
– 关系是某一时刻的值,是随时间不断变化的
关系代数
目录 上一页 下一页 退出
12
关系代数------一组建立在关系上的高级运算, 每个运算都以一个或多个关系作为它的运算 对象,并且生成一个关系作为运算结果
目录 上一页 下一页 退出
5
笛卡儿积举例
– 例:设
D1为教师集合(T)= {t1,t2} D2为学生集合(S)= {s1,s2 ,s3} D3为课程集合(C)= {c1,c2} 则D1×D2×D3是个三元组集合,元组个数为 2×3×2,是所有可能的(教师,学生,课程)元 组集合
– 笛卡尔积可表为二维表的形式
– 查询表:查询结果构成,只读的,不能修改
– 视图表:虚表,不存放实际数据,可通过返回 基本表修改数据
扩充定义
– 关系必须是有限集合;
– 为关系的每列附加一属性名以取消关系元组的 有序性
关系的性质
目录 上一页 下一页 退出
10
五条性质
– 列是同质的
• 即每一列中的分量来自同一域,是同一类型的数据。
M mi m1 m2 3 2 6 i 1
– D1×D2有6个元组,构成一张二维表
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2.4 关系运算(二)——关系演算关系代数是将整个关系看作变元,并以其作为基本运算单位,同时以集合方法为关系运算的理论基础。

如果将组成关系的基本成分例如元组或者属性域看作变量,以其作为基本运算单位,同时以数理逻辑中谓词演算为相应关系演算的理论基础,就得到了另外一种形式的关系数据语言——关系演算。

关系演算基于谓词演算。

在谓词演算中,如果谓词中的变元是关系中的元组,则得到所谓元组关系演算;如果谓词中的变元是关系中的属性域,则得到所谓域关系演算。

这样,关系演算就分为元组关系演算和域关系演算两类。

在 2.4节和2.5节,均以本章 2.3.4节中的关系数据库{S,C,SC}为背景举例。

这里S (S#,Sn,Sex,Sa,Sd);C (C#,Cn,P#,Tn);SC (S#,C#,G),其中各个属性的含义见2.3.4节。

2.4.1 元组关系演算如果在一阶谓词演算表达式中,变量是以元组为演算单位,就称其为元组关系演算(Tuple Relation Calculus),其中元组变量表示关系中的元组,变量取值范围是整个关系。

1. 关系的元组演算表示(1) 关系与谓词的对应为了得到关系操作的元组关系演算表达式,需要考虑关系与谓词的联系。

z由关系R确定的谓词P在数理逻辑中我们知道,关系可用谓词表示,n元关系可以由n元谓词表示。

设有关系R,它有元组(r1,r2,…,r m),定义关系R对应如下一个谓词P (x1,x2, …,x n)。

当t =(r1,r2, …,r m)属于R时,t为P的成真的真值指派,而其他不在R中的任意元组t则是P 的成假指派。

即是说,由关系R定义一个谓词P具有如下性质:P(t) = T (当t在R中);P(t) = F (当t不在R中)。

z由谓词P表示关系R由于关系代数中R是元组集合,一般而言,集合是可以用满足它的某种特殊性质来刻画与表示。

如果谓词P表述了关系R中元组的本质特性,就可以将关系R写为:R={t | P(t)}这个公式就建立了关系(元组集合)的谓词表示,称之为关系演算表达式。

(2) 元组关系演算表达式元组关系演算表达式的严格数学描述是由“归纳定义”方式完成的。

按照通常的思路,元组演算表达式是由“关系演算公式”组成;“关系演算公式”是由“原子公式”组成。

①原子公式下述三类称为元组演算原子公式,简称原子公式:z谓词R(t)是原子公式。

z u(i)θv(j)是原子公式。

z u(i)θa是原子公式。

其中,t =(r1,r2,…,r m)是P的成真指派;u(i)表示元组u的第i个分量,v(j)表示元组v的第j 个分量;a是常量,u(i)θa表示u的第i个分量与常量a有关系θ。

② 关系演算公式利用原子公式可以递归定义关系演算公式:z 原子公式是公式。

z 如果φ1,φ2是公式,则φ1∧φ2,φ1∨φ2,φ1→φ2和¬φ1均是公式。

z如果φ是公式,r 是φ中自由变元,则∃r(φ),∀r(φ)是公式。

z 所有公式由且仅由上述三种方式经过有限次操作生成。

在公式中,各种运算的优先次序规定如下:z 比较运算符:<、>、≤、≥、=、≠。

z量词:、∀。

∃z 否定词:¬。

z 合取、析取、蕴含运算符:∧、∨、→。

③ 关系演算表达式有了公式φ的概念,以公式φ作为特性就构成一个有若干元组组成的集合,即关系R ,这种形式的元组集合就称其为关系演算表达式。

关系演算表达式的一般形式为: {t | φ(t)}其中,φ(t)为公式,t 为φ中出现的自由变元。

关系演算表达式也简称为关系表达式或者表达式。

2. 关系操作的元组演算表示关系操作由5种基本操作,它们在关系代数中分别对应5种基本运算,这5种基本运算可以用一阶谓词演算中的公式表示。

设有关系R 、S ,其谓词表示为R(t)和S(t),此时有z R S={t | R(t)S(t)};∪∨zR – S = (t | R(t)¬S(t)); ∧zσF (R)= {t | R(t)F} ,其中F 是一个谓词公式; ∧z(k)ui1,ui2,uik (R)={t |(u)R(u)∏∃…t(1)=u(i1)t(2)=u(i2)t(k)=u(ik)}∧∧∧∧其中t (k)所表示的元组有k 个分量,而t(i)表示t 的第i 个分量,u(j)表示u 的第j 个分量。

(r+s)R S={t |u v(R(u)S(v)t(1)=u(i1)t(2)=u(i2)t(r)=u(ir)t(r+1)=v(j1)t(r+2)=v(j2) t(r+s)=v(js))}×∃∃∧∧∧∧∧∧∧∧∧例2-20 查询计算机科学系(CS)全体学生S cs ={t | S(t)∧t[5]= 'CS' }例2-21 查询年龄大于20岁的学生姓名:S 20={t | S(t)∧t[4]<20 }例2-22 查询学生姓名和所在系:S 1={t (2)| (∃u)(S(u)∧t[1]=u[2]∧t[1]=u[5] )2.4.2 域关系演算1. 关系的域演算表示域关系演算(Domain Relation Calculus)简称为域演算,它是关系演算的另外一种形式。

域关系和元组关系演算十分类似,这是因为它们都建立在谓词演算之上;两者又有区别,这是因为有两点不同:其一是谓词变元的不同,元组演算以元组为变元,域演算以元组的分量即属性域为变元,而在实际上,人们就将关系的属性名视为域变元;其二是元组变元的变化范围为整个关系,而域变元的变化范围是某个属性域。

域演算表达式的一般形式为:{t 1,t 2,…,t k | P(t 1,t 2,…,t k )}其中,t 1,t 2,…,t k 是域变量,P(t 1,t 2,…,t k )是域演算表达式。

为了揭示域演算表达式的语义,我们同样需要进行递归定义。

(1) 原子公式下述三类称为域演算原子公式,简称原子公式:z 如果R(t 1,t 2,…,t k )表示命题“以t 1,t 2,…,t k 为分量的元组在关系R 之中”,则R(t 1,t 2,…,t k )是原子公式,其中,R 是k 元关系,t i 是t 的第i 个分量;z t i θC 或者C θt i 是原子公式,其中t i 是元组变量的第i 个分量,C 是常量,θ是算数比较符;z t i θ u j 是原子公式,其中,t i 表示元组变量t 的第i 个分量,u j 表示元组变量u 的第j 个分量,它们之间满足运算θ。

例如 t 1=>u 4表示t 的第一个分量大于等于u 的第四个分量。

(2) 域演算公式域演算公式(简称为公式)可以递归定义如下:z 原子公式是公式。

z 如果φ1,φ2是公式,则φ1∧φ2,φ1∨φ2,φ1→φ2和¬φ1均是公式。

z如果φ1是公式,∃t i (φl ),∀t i (φl )是公式。

z 所有公式由且仅由上述三种方式经过有限次操作生成。

例如φ(x 1,x 2,x 3,x 4,x 5)=S(x 1,x 2,x 3,x 4,x 5)∧(x 5>21)∨¬x 4='M'是一个域演算公式。

域演算公式φ中变量的自由出现与约束出现、公式中自由变量x 的型T(x,φ)以及域演算合法公式、域常量带入公式的规则和公式的解释规则等均与元组演算类似。

下面举例说明。

例2-23 设φ=z[Sex](S(x ∃1 x 2 z x 4 22))∧¬z='M',则x 1,x 2,x 4在φ中为自由变量,x 3为约束变量。

例2-24 设φ=x ∃2[Sn ,Sex] y ∀1(C#)(S(x 1,x 2,x 3,x 4,x 5)∧x 5<y 2),这里x 1,x 3,x 4,x 5在φ中为自由出现,其他变量均为约束出现,并且有T(x1,φ)=d(S#),T(x3,φ)=d(Sex),T(x 5,φ)=d(Sa),T(y 2,φ)=d(G)。

注意只有当d(Sa)=d(G)时,公式φ才是合理的。

2. 域演算举例例2-25 查询所有女生的S#、Sn ,Sex 、Sa 和Sd 。

{x 1[S#]x 2[Sn]x 3[Sex]x 4[Sa]x 5[Sd] | XS(x 1,x 2,x 3,x 4,x 5) ∧x 3='F'}例2-26 查询所有男生的S#、Sa 。

{x 1[S#]x 2[Sa] | ∃y 1y 2y 3y 4y 5(XS(y 1,y 2,y 3,y 4,y 5))∧x 3='M' ∧y 1=x 1 y ∧4=x 2}例2-27 查询所有年龄小于20岁的男生的S#、C#和G 。

{x 1[S#]x 2[C#]x 3[G] |y ∃1y 2y 3y 4y 5(XS(y 1,y 2,y 3,y 4,y 5))∧x 3='M'∧y 4<20z ∧∃1z 2z 3 (XSC(z 1z 2z 3)z ∧1=y 1 z ∧2=x 2 z ∧3=x 3)y 2=x 1}2.4.3 关系运算的安全性1. 安全性问题的提出对于任何一个计算机系统来说,它都要受到两个“有限”的制约:z 系统的存储容量是有限的,它不可能存储无限关系。

这里所说的“无限关系”是指元组个数为无限的关系。

z系统的计算速度是有限的,在计算机上进行无限次运算是无法得到正确结果的,因为运算总是不会完结。

为了使关系运算能够在一个计算机系统中有效进行,应当避免上述两种情况的发生,需要对关系运算符加上必要的限制,采取一定措施。

在数据库技术中,称不出现无限关系和无限运算的关系运算过程是安全的,相应的关系运算表达式就称为是安全表达式,为了得到安全表达式所采取的措施称为安全性限制或安全性约束。

2. 关系运算中安全性分析关系代数基于集合理论,关系演算基于数理逻辑,两者之间有着密切关系,这就使得我们可以有统一的观点来分析关系运算中的安全性问题。

在实际运算当中,人们实际上是自觉或不自觉地假定所涉及的初始对象是“有限”的,但这并不能自动得到运算过程或者运算结果就一定“不涉及”到无限。

例如在集合运算中,即使初始集合是“有限”的,但如果对其进行“补”运算,有限集合的“补集”就有可能是无限集合。

在关系代数当中,任何一个关系代数表达式,只要是有限关系,由于其中只包含有限次代数运算,而这些运算只能是并运算、差运算、广义笛卡尔乘积运算、选择运算和投影运算5种基本运算,不存在集合的“补运算”,所以关系代数运算总是安全的。

在关系演算当中,尽管初始情形可以是有限的,也有可能出现无限关系的问题和无限运算的过程。

例如在元组关系演算表达式中,就有下述两种情况:z 对于表达式{t| R(t)},其语义是所有不在关系R 中的元组集合。

相关文档
最新文档