【数据库理论】关系数据库

本系列为《数据库系统原理与应用(刘先锋等著)》的读书笔记。

一,关系模型的基本概念

  1. 关系及基本术语

    • 在关系模型中,表格的第一行称为关系框架,是属性$A_1$,$A_2$,$A_3$,$\dots$,$A_k$的有限集合
    • 表中的每行称为关系的一个元组;每列称为属性,它在某个值域上的取值,不同的属性可以在相同的值域上取值。
    • 关系中的属性个数称为元数Arity),元组个数称为基数
  2. 关键字

    • 超关键字(Super Key):在关系中能够唯一标识元组的属性集合。
    • 候选关键字(Candidate Key):如果某一属性集合是超关键字,但去掉其中任意属性后就不再是超关键字,这样的属性称为候选关键字
      • 候选关键字的诸属性称为主属性,不包含在任何候选关键字中的属性称为非主属性非码属性)。
    • 主关键字(Primary Key):如果关系中存在多个候选关键字,用户可选作元组标识的一个候选关键字主关键字
    • 合成关键字(Composite Key):当某个候选关键字包含多个属性时,该候选关键字称为合成关键字
    • 外部关键字(Foreign Key):如果关系R的某个(些)属性K不是R中的候选关键字,而是另一个关系S的候选关键字,则K称为R的外部关键字

二,关系模式

  1. 在关系数据库中,关系模式是,关系是

  2. 定义3-1】关系的描述称为关系模式,形式化表示为
    $R(U, D, DOM, I, F)$
    其中,$R$为关系名,$U$为组成该关系的属性名集合,$D$是$U$中属性的,$DOM$为属性到域的映像集合,$I$为完整性约束集合,$F$为属性间数据的依赖关系集合

⚠️关系模式中带有下画线的属性集为主关键字

三,关系模型的完整性

  1. 域完整性约束:主要规定属性值必须取自值域,一个属性能否为空值由其语义决定。

  2. 实体完整性约束:规定基本关系的所有主属性都不能取空值,而不仅是主属性整体不能取空值。

  3. 参照完整性约束:要求“不引用不存在的实体”,考虑的是不同关系之间的或同一关系的不同元组之间的制约。形式定义:

    如果属性集K是关系R的主关键字,K也是关系S的外关键字,那么在关系S中,K的取值只允许两种可能,要么为空值,要么等于关系R中某个主关键字的值。关系R称为“参照关系”模式,关系S称为“依赖关系”模式

  4. 用户自定义完整性约束:针对某个具体关系数据库的约束条件。

四,关系代数

  1. 关系查询语言分类

    • 关系代数语言:查询操作是以集合操作为基础运算的DML语言。
    • 关系演算语言:查询操作是以谓词演算为基础运算的DML语言。
  2. 关系代数的五种基本操作

    相等定义:设有同类关系$r_1$和$r_2$,若$r_1$的任何一个元组都是$r_2$的一个元组,则称关系$r_2$包含关系$r1$,记作$r_1$ $\subseteq$ $r_2$或 $r_2$ $\supseteq$ $r_1$,如果$r_1$ $\subseteq$ $r_2$且$r_1$ $\supseteq$ $r_2$,则称关系$r_1$等于关系$r_2$,记作$r_1$=$r_2$。

定义3-2(Union):设有同类关系$r_1$[R]和$r_2$[R],两者的(Union)运算定义 $r_1$ $\bigcup$ $r_2$ = { $t$ $\mid$ $t$ $\in$ $r_1$ $\vee$ $t$ $\in$ $r_2$ }
式中,$\bigcup$为并运算符。$r_1$ $\bigcup$ $r_2$的结果关系是$r_1$的所有元组与$r_2$的所有元组的并集(去掉重复元组)。

定义3-3(Difference):设有同类关系$r_1$[R]和$r_2$[R],两者的(Difference)运算定义为 $r_1$ - $r_2$ = { $t$ $\mid$ $t$ $\in$ $r_1$ $\wedge$ $t$ $\notin$ $r_2$ }
式中,- 为相减运算符。$r_1$ - $r_2$的结果关系是$r_1$的所有元组减去$r_1$与$r_2$相同的元组所剩下的元组的集合。

定义3-4笛卡儿积(Difference):设$r$[R]为$k_1$元关系,$s$[S]为$k_2$元关系,两者的笛卡儿积(Difference)运算定义为 $r$ $\times$ $s$ = { $t$ $\mid$ $t$ = <$u,v$> $\wedge$ $u$ $\in$ $r$ $\wedge$ $v$ $\in$ $s$ }。

定义3-5投影(Projection):是对一个关系进行垂直分割,消去某些列,并重新安排列的顺序的操作。
设有$r$[R]为$k$元关系,其关系框架R={$A_1$,$A_2$,$\dots$,$A_k$},$A_{j_1}$,$A_{j_2}$,$\dots$,$A_{j_n}$ 为R中互不相同的属性,那么关系$r$在属性(分量)$A_{j_1}$,$A_{j_2}$,$\dots$,$A_{j_n}$ 上的投影运算定义为 $\Pi$ $A_{j_1}$,$A_{j_2}$,$\dots$,$A_{j_n}$ $($ $r$ $)$ = { $u$ $\mid$ $u$ = < $t$ [$A_{j_1}$],$t$[$A_{j_2}$],$\dots$,$t$[$A_{j_n}$] > $\wedge$ $t$ $\in$ $r$ }
式中,$\Pi$为投影运算符。

定义3-6选择(Selection):根据某些条件对关系进行水平分割,即选取符合条件的元组的操作。条件可用命题公式F表示,由运算对象运算符组成:

  • 运算对象:常数(用引号括起来)、元组分量(属性名或列的序号)
  • 运算符:算术比较运算符($\lt$,$\le$,$\gt$,$\ge$,=,$\ne$,也称$\theta$符),逻辑运算符($\vee$,$\wedge$,$\neg$)

关系R关于公式F的选择操作用$\sigma$F$($R$)$表示,其定义为:
$\sigma$F $($ R $)$ $\equiv$ { $t$ $\mid$ $t$ $\in$ R $\wedge$ F($t$)=true}
式中,$\sigma$为选择运算符。$\sigma$F$($R$)$表示从R中挑选满足公式F为真的元组所构成的关系。

  1. 关系代数的其他操作

定义3-7(Intersection):设有同类关系$r_1$[R]和$r_2$[R],两者的(Intersection)运算定义 $r_1$ $\bigcap$ $r_2$ = { $t$ $\mid$ $t$ $\in$ $r_1$ $\wedge$ $t$ $\in$ $r_2$}
式中,$\bigcap$为交运算符。$r_1r_2$的结果关系是$r_1$与$r_2$的所有相同元组构成的集合,显然,$r_1r_2$ 等于$r_1$ - ($r_1$ - $r_2$ )或者$r_2$ - ($r_2$ - $r_1$ )。

定义3-8】$\theta$-连接:设$r$[R]、$s$[S]关系框架分别为R = {$A_1$,$A_2$,$\dots$,$A_n$} 和 {$B_1$,$B_2$,$\dots$,$B_m$},那么关系$r$和$s$的$\theta$-连接($\theta$-Join)运算定义为:
$r$ $\Join$ $s$ = { $t$ $\mid$ $t$ = < $u, v$ >$\wedge$ $u$ $\in$ $r$ $\wedge$ $v$ $\in$ $u$[$A_i$]$\theta$ $v$[$B_j$]}

定义3-9F-连接 :设$r$[R]、$s$[S]关系框架分别为R = { $A_1$,$A_2$,$\dots$,$A_n$ },{ $B_1$,$B_2$,$\dots$,$B_m$ },F($A_1$,$A_2$,$\dots$,$A_n$,$B_1$,$B_2$,$\dots$,$B_m$)为一公式,那么关系$r$和$s$的F-连接F-Join)运算定义为:
$r$ $\Join$ $s$ = { $t$ $\mid$ $t$ = < $u, v$>$\wedge$ $u$ $\in$ $r$ $\wedge$ $v$ $\in$ $s$ $\wedge$F($u$[$A_1$],$\dots$,$u$[$A_n$]),$u$[$B_1$],$\dots$,$u$[$B_m$]) }
即:$r$ $\Join$ $s$ = $\sigma$F $(r$ $\times$ $s)$

定义3-10自然连接Natural Jion是一种特殊的等值连接,它要求关系R和关系S具有相同的属性组B($b_1$,$b_2$,$b_3$,$\dots$ $\dots$),这些属性组的取值是相等的,在最后生成的关系中去掉属性重复的列。其计算过程如下:

(1)计算$r$ $\times$ $s$;
(2)设$r$和$s$的公共属性是$A_1$,$A_2$,$\dots$,$A_m$,选出$r$ $\times$ $s$中满足$r.A_1$=$s.A_1$,$r.A_2$=$s.A_2$, $\dots$, $r.A_m$=$s.A_m$的那些元组;
(3)去掉$s.A_1$,$s.A_2$,$\dots$,$s.A_m$这些列。

定义3-11(Division):给定关系$r$(X,Y)和$s$(Y,Z),其中,X,Y,Z为属性组,$r$中的Y与$s$中的Y可以有不同的属性名,但必须出自相同的域集。R与S的(Division)运算得到一个新的关系$p$(X),$p$是r中满足下列条件的元组在X属性列上的投影,即元组在X上的分量值$x$的像集$Y_x$包含s在Y上投影的集合,记为
$r$ $\div$ $s$ = { $t_r$[X]$\mid$ $t_r$ $\in$ $r$ $\wedge$ $\pi_y$($s$) $\subseteq$ $Y_x$ }
式中,$Y_x$为$x$在$r$中的像集,$x$=$t_r$[X]。

五,关系演算

关系演算是以数理逻辑中的谓词为基础的,按谓词变元的不同,关系演算可以分为元组关系演算域关系演算

  1. 元组关系演算:以元组为变量。
    1) 在元组关系演算中,元组关系演算表达式的一般形式为:
    $\{t|P(t)\}$
    式中,t是元组变量,表示一个元数确定的元组,P是满足一定逻辑条件的公式,公式可以分解为一些原子公式,$\{t|P(t)\}$表示满足公式P的所有元组$t$的集合。
    2)在一个演算公式中,未用存在量词$\exists$或全称量词$\forall$符号定义的元组变量,称为自由元组变量,否则称为约束元组变量

  2. 域关系演算:以属性(域)为变量,简称域演算

坚持原创技术分享,您的支持将鼓励我继续创作!