# 一些前置知识

  • 与:\wedge
  • 或:\vee
  • 非:\urcorner

# 传统的集合运算

#

关系 rr 和关系 ss 的并记作

#

关系 rr 和关系 ss 的差记作:

#

关系 rr 和关系 ss 的交记作:

# 笛卡尔积

两个分别为 nn 目和 mm 目的关系 rrss 的笛卡尔积是一个 n+mn+m 目元组的集合。若关系 rrkrk_r 个元组,关系 ssksk_s 个元组,则关系 rr 和关系 ss 的笛卡尔积有 krksk_r * k_s 个元组,记作:

# 专门的关系运算

# 选择

选择操作是在关系 rr 中查找满足给定谓词(选择条件)的所有元组,记作:

# 投影

关系是一张二维表,对它的操作可以从水平(行)的角度进行,即选择操作;也可以从纵向(列)的角度进行,即投影操作
关系 rr 上的投影是从 rr 中选择出若干属性列组成新的关系,记作:

# 连接

连接也称 θ\theta 连接,假设连接条件为谓词 θ\theta,记为 AopBA~op~B,其中 A,BA,B 分别表示关系 rr 和关系 ss 中的属性个数相等且可比的连接属性集,opop 为比较运算符,则 θ\theta 连接是从两个关系的笛卡尔积中,选取连接属性间满足谓词 θ\theta 的所有元
组,记作:rθs={trtstrrtss(r.Aops.B)}r \prod_\theta s = \{ t_r · t_s ~ | ~ t_r \in r \wedge t_s \in s \wedge (r.A ~ op ~ s.B) \}
θ\theta 连接运算就是从关系 rr 到关系 ss 的笛卡尔积 r×sr \times s 中,选取 rr 关系在 AA 属性集上的值与 ss 关系在 BB 属性集上的值满足连接谓词 θ\theta 的所有元组,即:rθs=σθ(r×s)r \bowtie_\theta s = \sigma_\theta(r \times s)

# 自然连接

自然连接是一种特殊的等值连接,它要求两个参与连接的关系 r(U)r(U)s(V)s(V) 具有公共的属性集,即 UVU \cap V \neq \emptyset,并在这个公共属性集上进行等值连接;同时,还要求将连接结果中的重复属性列去掉,即在公共属性集中的列只保留一次。
UV={A1,...,Ak}U \cap V = \{A_1,...,A_k\},则自然连接可记作:rs={(trts)[UV]trrtss(r.A1=s.A1...r.Ak=s.Ak)=UV(σr.A1=s.A1...r.Ak=s.Ak(r×s))r \Join s = \{ (t_r · t_s)[U \cup V] ~ | ~ t_r \in r \wedge t_s \in s \wedge (r.A_1 = s.A_1 \wedge ... \wedge r.A_k = s.A_k)=\prod_{U \cup V}(\sigma_{r.A_1 = s.A_1 \wedge ... \wedge r.A_k = s.A_k}(r \times s))
自然连接满足结合律。如果公共属性集为空,则自然连接的结果就是笛卡尔积

# 除运算

为了叙述方便,先给出象集的概念

# 象集

给定一个关系 r(A,B)r(A,B)A,BA,B 为属性集。tr\forall t \in r,记 t[A]=xt[A]=x,则在关系 rr 中属性集 AA 的某个取值 xx 的象集定义为:Bx={t[B]tr,t[A]=x}B_x = \{ t[B] ~ | ~ t \in r, t[A]=x \},表示关系 rr 中属性集 AA 上取值为 xx 的所有元组在属性集 BB 上的投影

# 除运算的定义

设关系 r(A,B)r(A,B)S(B)S(B)A,BA,B 是属性集,将关系 rr 和关系 ss 之间的除运算记作 r÷sr \div s,除运算的结果还是一个关系,它是关系 rr 中满足下列条件的元组 trt_r 在属性集 AA 上的投影:trr\forall t_r \in r,记 x=tr[A]x = t_r[A],要求关系 rr 中属性集 AA 上取值 xx 的象集 BxB_x 包含关系 ss,记作: