关系运算关系演算
- 格式:pdf
- 大小:207.67 KB
- 文档页数:5
第三章关系代数与关系运算关系数据语言有三类: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目如图例总结:集合运算符主要研究的是元组,即对表中的行进行研究、操作。
关系模型与关系运算⽬录关系数据库数据模型是现实世界数据特征的模拟和抽象。
在数据库中⽤数据模型这个⼯具来抽象、表⽰和处理现实世界中的数据和信息。
数据模型通常由数据结构、数据操纵和完整性约束三部分组成,称为数据模型三要素。
数据结构:所研究对象类型的集合。
这些对象是数据库的组成部分,主要包括两类:⼀类是与数据类型、内容、性质有关的对象。
另⼀类是与数据之间联系有关的对象。
数据结构是对系统静态特性的描述,是刻画⼀个数据模型性质最重要的⽅⾯,因此在数据库系统中,⼈们通常按照其数据结构的类型来命名数据模型。
例如,层次结构、⽹状结构和关系结构的数据模型分别命名为层次模型、⽹状模型和关系模型。
数据操纵:对数据库中各种对象允许执⾏的操作集合及有关的操作规则。
常⽤的数据操纵有检索和更新(包括新增、删除、修改)。
数据模型必须定义这些操作的确切含义、操作符号、操作规则(如优先级)以及实现操作的语⾔。
数据操纵是对系统动态特性的描述。
数据的约束条件:是⼀组完整性规则的集合。
完整性规则是给定数据模型中数据及其联系所具有的制约和储存规则,⽤来限定符合数据模型的数据库状态以及状态变化,以保证数据的正确性、有效性和相容性。
关系模型关系模型的数据结构:数据结构⾮常单⼀,⽆论是实体还是实体间的联系,均由单⼀的结构来表⽰,该结构是⼀张规范化了的⼆维表,由⾏和列组成,称之为关系。
关系模型的数据操纵:包括查询、新增、删除、修改,其中查询的表达能⼒是最主要的部分。
关系模型数据操纵的特点是集合操作,即操作的对象和结果都是集合,这种操作⽅式也称为⼀次⼀集合⽅式。
关系模型的完整性约束:包括实体完整性、参照完整性和⽤户定义的完整性三⼤类。
其中实体完整性和参照完整性是关系模型必须满⾜的完整性约束条件,由关系DBMS⾃动⽀持,⽤户定义的完整性是由应⽤领域需要遵循的约束条件,是具体领域中的语义约束。
关系的数学定义域(Domain):⼀组具有相同数据类型的值的集合,如整数、实数等。
数据库原理选择填空题第⼀章习题⼀、选择题1.数据库(DB)、数据库系统(DBS)、数据库管理系统(DBMS)之间的关系是(C)。
A)DB包含DBS和DBMS B)DBMS包含DBS和DBC)DBS包含DB和DBMS D)没有任何关系2.数据库系统的核⼼是(B)。
A)数据模型B)数据库管理系统C)数据库D)数据库管理员3.数据独⽴性是数据库技术的重要特点之⼀,所谓数据独⽴性是指(D)。
A)数据与程序独⽴存放B)不同的数据被存放在不同的⽂件中C)不同的数据只能被队友的应⽤程序所使⽤D)以上三种说法都不对4.⽤树形结构表⽰实体之间联系的模型是(C)。
A)关系模型B)⽹状模型C)层次模型D)以上三个都是5.?商品与顾客?两个实体集之间的联系⼀般是(D)。
A)⼀对⼀B)⼀对多C)多对⼀D)多对多6.在E-R图中,⽤来表⽰实体的图形是(A)。
A)矩形B)椭圆形C)菱形D)三⾓形7.在数据库管理系统提供的数据语⾔中,负责数据的模式定义和数据的物理存取构建的是(A)。
A)数据定义语⾔B)数据转换语⾔C)数据操纵语⾔D)数据控制语⾔8.数据库系统的三级模式结构中,下列不属于三级模式的是(B)。
A)内模式B)抽象模式C)外模式D)概念模式9.在数据库管理系统提供的语⾔中,负责数据的完整性、安全性的定义与检查以及并发控制、故障恢复等功能的是(D)。
A)数据定义语⾔B)数据转换语⾔C)数据操纵语⾔D)数据控制语⾔10.下⾯关于数据库系统叙述正确的是(B)。
A)数据库系统避免了⼀切冗余B)数据库系统减少了数据冗余C)数据库系统⽐⽂件能管理更多的数据D)数据库系统中数据的⼀致性是指数据类型的⼀致11.下列叙述中,错误的是(C)。
A)数据库技术的根本⽬标是要解决数据共享的问题B)数据库设计是指设计⼀个能满⾜⽤户要求,性能良好的数据库C)数据库系统中,数据的物理结构必须与逻辑结构⼀致D)数据库系统是⼀个独⽴的系统,但是需要操作系统的⽀持12.在数据库管理系统提供的数据语⾔中,负责数据的查询及增、删、改等操作的是(D)。
填空题;1数据管理技术发展过程经过人工管理,文件系统和数据库系统三个阶段,其中数据独立性最高的阶段是数据库系统。
2在数据库理论中,数据物理结构的改变,如存储设备的更换,物理存储的更换,存取方式等都不影响数据库的逻辑结构,从而不引起应用程序的变化,称为物理独立性。
3,数据库系统中,实现数据管理功能的核心软件称为数据库管理系统(DBMS)。
4数据库三级模式结构的划分,有利于保持数据的独立性。
5在数据库理论中,数据库总体逻辑结构的改变,如修改数据模式,增加新的数据类型,改变数据间联系等,不需要修改相应的应用程序,称为逻辑独立性。
6对现实世界进行第一层抽象的模型,称为概念模型;对现实世界进行第二层抽象的模型,称为结构或逻辑模型。
7在数据库系统中,编写应用程序的语言一般是C,Basic,等高级语言,这些语言被称为宿主语言或主语言。
8从最终用户来看,数据库系统的外部体系结构可分为5种类型:单用户结构,主从式结构,分布式结构,客户/服务器结构,浏览器/服务器结构。
1在关系代数中,从俩个关系中找出相同元祖的运算称为交运算。
2在关系代数运算中,基本的运算是并,差,笛卡尔积,选择,投影。
3关系代数运算中,专门的关系运算有选择,投影,连接。
4关系运算分为关系代数和关系演算。
5在一个关系中列必须是同质的,即每一列中的分量是同类型的数据,来自同一区域。
6设有关系模式为:系(系编号,系名称,电话,办公地点),则该关系模型的主关系键是系编号,主属性是系名称、电话;非主属性是办公地点。
7实体完整性规则是对主键的约束,参照完整性规则是对外部关系键的约束。
1SQL的功能包括数据查询、数据定义、数据操控和数据控制四个部分。
2在SQL server2000中,数据库是由数据库文件和事务日志文件组成的。
3按照索引记录的存放位置,索引可分为聚集索引和非聚集索引。
4先关子查询的执行次数是由父查询表的行数决定的。
5在数据库中,权限可以分为系统权限和对象权限。
关系演算写法
关系演算是一种基于集合论的查询语言,用于查询关系数据库中的数据。
关系演算包括三种基本运算符:选择(σ)、投影(π)和连接(⨝)。
下面是这些运算符的写法示例:
1. 选择(σ):选择操作符用于从关系中选择满足指定条件的元组。
它的写法是在关系名称后面加上一个圆括号,括号内是选择条件,使用逗号分隔多个条件。
例如,从名为“Employees”的关系中选择年龄大于30的员工,可以写成:
```
σ(Employees)(age > 30)
```
2. 投影(π):投影操作符用于从关系中选择指定的属性。
它的写法是在关系名称后面加上一个圆括号,括号内是要选择的属性名称,使用逗号分隔多个属性。
例如,从名为“Employees”的关系中选择员工的姓名和年龄,可以写成:
```
π(name, age)(Employees)
```
3. 连接(⨝):连接操作符用于将两个关系根据指定的条件连接起来。
它的写法是在关系名称后面加上一个方括号,方括号内是连接条件,使用逗号分隔多个条件。
例如,将名为“Employees”和“Departments”的关系连接起来,根据员工所在部门进行连接,可以写成:
```
Employees ⨝ Department = (_id = _id)
```
以上是关系演算的基本运算符的写法示例。
在实际使用中,可以根据具体的需求和数据结构,组合使用这些运算符来构建复杂的查询语句。
第3章关系模型及关系代数关系数据库以关系模型为基础,是目前各类数据库中最重要、最流行的数据库,它应用数学方法来处理数据库数据,是目前使用最广泛的数据库系统。
1970年,IBM公司研究员E.F.Codd博士发表题为“大型共享数据库的关系模型”论文,文中首次提出关系模型,而后又发表了多篇文章提出关系代数和关系演算的概念,并于1972年提出第一范式、第二范式等关系模型的规范化理论,进一步对关系模型的概念进行完善。
【学习目标】●关系模型的三类完整性约束:实体完整性、参照完整性和用户自定义完整性●三种关系数据语言:关系代数、关系演算、基于映像的语义SQL●关系的运算:传统的集合运算和专门的关系运算●关系代数表达式3.1关系模型三要素关系模型相比非关系模型最大的优点就是其数据结构单一,实体集和实体集间联系的数据均用关系表示,数据操作方法统一,易于用户掌握和理解。
关系操作采用集合操作,即操作对象和结果都是集合。
关系模型中常用的关系操作包括:并、交、差、广义笛卡尔积、选择、投影、连接、除等查询操作和添加、删除、修改等更新操作两个部分,查询的表达能力是其最主要的部分。
关系模型提供了丰富的完整性控制机制,允许定义三类完整性约束:实体完整性、参照完整性和用户自定义完整性。
3.1.1关系数据结构1.关系的相关名词(1)关系(2)元组(3)属性(4)候选码和主码(5)主属性和非主属性2.关系的数学定义(1)域(Domain)(2)笛卡尔积(3)关系3.关系的限定关系数据库中关系要满足的基本特性如下:(1)关系中每个分量必须取原子值(2)关系中同一列的数据应具有相同的数据类型(3)关系中不能有相同的属性名(4)关系中不能有两个完全相同的元组(5)关系中的元组和列的位置具有顺序无关性4.关系模式和关系关系的结构用关系模式表示,是相对稳定,一个关系数据库的结构一旦定义好就不能随便修改;关系的数据是动态的,反映了关系在某一时刻的状态,随着数据库使用过程中对数据的更新操作,关系中的数据会实时发生变化。
.4 关系代数关系代数是一种抽象的查询语言,通过对关系的运算来表达查询。
关系代数的运算对象是关系,运算结果也是关系。
系代数运算可以分为四类:1.普通的集合运算:并、交、差2.删除一部分关系的运算选择运算“σ”会删除某些行投影运算“π”会删除某些列3.合并两个关系的运算“笛卡儿积”运算把两个关系的元组以所有可能的方式组合起来.“连接”运算有选择地从两个关系取出元组组合在一起4.改名运算不改变关系的元组,只改变关系的模式:改变属性的名字或者关系本身的名字一、关系的集合运算三种最普通的集合运算:并、交和差:∪S,R和S的并,它是R中的元素和S中的元素共同组成的集合。
∩S,R和S的交,它是既出现在R中又出现在S中的元素组成的集合。
―S,R和S的差,它是只在R中出现,不在S中出现的元素组成的集合。
要想对两个关系R和S进行上述运算,R和S必须满足如下条件:R和S的模式具有相同的属性集在对R和S进行集合运算之前,要对R和S的属性列进行排序,保证两个关系的属性顺序相同1. 并, R∪S ={ r | r∈R ∨ r∈S }R∪S:2. 交, R∩S ={ r | r∈R ∧ r∈S }R∩S:3. 差, R-S ={ r | r∈R ∧ rS }R-S:二、投影运算投影运算符是π,该运算作用于关系R将产生一个新关系S,S只具有R的某几个属性列。
投影运算的一般表达式如下:S = πA1, A2, … , An(R)S是投影运算产生的新关系,它只具有R的属性A1, A2, … , An所对应的列。
例:对于关系表:Student三、选择运算(σ)选择运算符是σ,该运算符作用于关系R也将产生一个新关系S,S的元组集合是R的一个满足某条件C的子集。
选择运算的一般表达式为:S = σC(R)S的模式与R的模式完全相同。
C是我们所熟悉的条件表达式。
可以由AND,OR,NOT等子条件连成的复杂条件。
例:仍然用上面的例子,那么作如下运算:σAge > 18(Student)结果应该是:例:查询计算机系年龄大于18的学生资料,可以用如下表达式:σAge > 18 AND Dept = “计算机系” (Student)结果是:四、笛卡尔积(×)两个关系R和S的笛卡尔积记作R×S,它的关系模式属性是R和S的模式的并集。
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 中的元组集合。