关系代数运算
基本关系运算是指对单个或多个关系进行操作的运算,有以下五种:
- 并(Union):用符号∪表示,表示两个具有相同结构的关系的并集,即把两个关系中的元组合并起来,去除重复的元组。
- 差(Difference):用符号-表示,表示两个具有相同结构的关系的差集,即把第一个关系中存在而第二个关系中不存在的元组选出来。
- 投影(Projection):用符号π表示,表示从一个关系中选择某些属性列构成新的关系,即把一个关系中不需要的属性列去掉。
- 笛卡尔积(Cartesian Product):用符号×表示,表示两个任意结构的关系的笛卡尔积,即把第一个关系中每个元组与第二个关系中每个元组配对形成新的元组。
- 选择(Selection):用符号σ表示,表示从一个关系中选择满足某些条件的元组构成新的关系,即把一个关系中不满足条件的元组去掉。
除了基本关系运算,还有一些补充的关系运算,如下:
- 交(Intersection):用符号∩表示,表示两个具有相同结构的关系的交集,即把两个关系中都存在的元组选出来。
- 连接(Join):用符号⋈表示,表示两个任意结构的关系的连接,即把第一个关系中每个元组与第二个关系中满足某些条件的元组配对形成新的元组。
- 除(Division):用符号÷表示,表示两个任意结构的关系的除法,即把第一个关系中能够和第二个关系中所有元组配对的元组选出来。
- 广义投影(Generalized Projection):用符号Π表示,表示从一个关系中选择某些属性列并进行某些算术运算或聚合函数构成新的关系。
- 外连接(Outer Join):用符号⟕、⟖、⟗分别表示左外连接、右外连接和全外连接,表示两个任意结构的关系的外连接,即在连接操作基础上保留没有匹配到另一个关系中元组的元组,并用空值填充。
元组关系演算
元组关系演算是一种基于关系模型的数据库查询语言,它使用元组变量和谓词公式来表示查询条件¹。元组关系演算的表达式可以写成{t|Φ(t)},表示所有使Φ(t)为真的元组t的集合。元组关系演算和域关系演算是等价的,但前者以元组为单位,后者以域为单位。
特别需要注意的是元组关系演算中的\(\exist,\forall\)符号,对于只要求关系中部分属性的查询,需要通过\(\exist,\forall\)来创建新的关系元组,然后进行运算
域关系演算
域关系演算的详细介绍如下:
-
域关系演算是一种声明性的数据库查询语言,它使用从属性域中取值的域变量,而不是对于整个元组的值²⁴。
-
域关系演算公式的基本形式是:{<x1,x2,...,xn>|P(x1,x2,...,xn)},其中xi代表域变量或常量,P为以xi为变量的谓词公式¹⁴。
-
公式P可以递归地进行构造,有三种形式的原子公式:
- <x1,x2,...,xn>∈R,表示由域变量或常量构成的元组属于关系R。
- xi=xj或xi=c,表示两个域变量相等或一个域变量等于一个常量。
- xiθxj或xiθc,表示两个域变量或一个域变量和一个常量之间满足某种比较运算符θ(如<、>、≤、≥)。
-
公式P还可以使用逻辑运算符(与、或、非、蕴含)和量词(存在∃和任意∀)进行组合。
-
域关系演算与元组关系演算是等价的,也就是说它们都可以表达非递归的Datalog程序和关系代数