本系列为《数据库系统原理与应用(刘先锋等著)》的读书笔记。
一,关系模型的基本概念
关系及基本术语
- 在关系模型中,表格的第一行称为
关系框架
,是属性$A_1$,$A_2$,$A_3$,$\dots$,$A_k$的有限集合
。 - 表中的每行称为关系的一个
元组
;每列称为属性
,它在某个值域上的取值,不同的属性可以在相同的值域上取值。 - 关系中的属性个数称为
元数
(Arity
),元组个数称为基数
。
- 在关系模型中,表格的第一行称为
关键字
超关键字
(Super Key
):在关系中能够唯一标识元组的属性集合。候选关键字
(Candidate Key
):如果某一属性集合是超关键字
,但去掉其中任意属性后就不再是超关键字,这样的属性称为候选关键字
。候选关键字
的诸属性称为主属性
,不包含在任何候选关键字中的属性称为非主属性
(非码属性
)。
主关键字
(Primary Key
):如果关系中存在多个候选关键字
,用户可选作元组标识的一个候选关键字
为主关键字
。合成关键字
(Composite Key
):当某个候选关键字包含多个属性时,该候选关键字称为合成关键字
。外部关键字
(Foreign Key
):如果关系R的某个(些)属性K不是R中的候选关键字,而是另一个关系S的候选关键字,则K称为R的外部关键字
。
二,关系模式
在关系数据库中,关系模式是
型
,关系是值
。【
定义3-1
】关系的描述称为关系模式,形式化表示为
$R(U, D, DOM, I, F)$
其中,$R$为关系名
,$U$为组成该关系的属性名集合
,$D$是$U$中属性的域
,$DOM$为属性到域的映像集合
,$I$为完整性约束集合
,$F$为属性间数据的依赖关系集合
。
⚠️关系模式中带有下画线的属性集为主关键字
。
三,关系模型的完整性
域完整性约束
:主要规定属性值必须取自值域,一个属性能否为空值由其语义决定。实体完整性约束
:规定基本关系的所有主属性都不能取空值,而不仅是主属性整体不能取空值。参照完整性约束
:要求“不引用不存在的实体”,考虑的是不同关系之间的或同一关系的不同元组之间的制约。形式定义:如果属性集K是关系R的
主关键字
,K也是关系S的外关键字
,那么在关系S中,K的取值只允许两种可能,要么为空值,要么等于关系R中某个主关键字的值。关系R称为“参照关系”模式
,关系S称为“依赖关系”模式
。用户自定义完整性约束
:针对某个具体关系数据库的约束条件。
四,关系代数
关系查询语言分类
关系代数语言
:查询操作是以集合操作
为基础运算的DML
语言。关系演算语言
:查询操作是以谓词演算
为基础运算的DML
语言。
关系代数的五种基本操作
相等
定义:设有同类关系$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为真的元组所构成的关系。
- 关系代数的其他操作
【定义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-9
】F-连接
:设$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) 在元组关系演算中,元组关系演算表达式的一般形式为:
$\{t|P(t)\}$
式中,t是元组变量,表示一个元数确定的元组,P是满足一定逻辑条件的公式,公式可以分解为一些原子公式,$\{t|P(t)\}$表示满足公式P的所有元组$t$的集合。
2)在一个演算公式中,未用存在量词$\exists$或全称量词$\forall$符号定义的元组变量,称为自由元组变量
,否则称为约束元组变量
。域关系演算:以
属性(域)
为变量,简称域演算
。