Skip to content

第二章 关系数据库基础 v1.0 ​

第一部分 关系概述 ​

一、关系的三种类型 ​

  1. 基本关系:实际存在的表,它是实际存储数据的逻辑表示
  2. 查询表:查询结果对应的表
  3. 视图表:是由基本表或其他视图表导出的表,常被称为虚表

二、关系模式 ​

关系模式基本可以表示为:(R(U,d,dom,F)),可以简记为(R(U))或(R(A_1,A_2,...,A_n))

上述式中:

  • (R)表示关系名
  • (U)是组成该关系的属性名集合
  • (D)是该属性的域
  • (dom)是属性向域的映像集合
  • (F)为属性间数据的依赖关系集合
  • (A)为属性名或域名

三、关系的完整性约束 ​

完整性约束提供了一种手段来保证当授权用户对数据库做修改时,不会破坏数据的一致性,共分为以下三种:

  1. 实体完整性:规定基本模式(R)的主属性(A)不能取空值(主码属性)
  2. 参照完整性(引用完整性):参照项的属性取值要参照被参照项的属性取值(外码属性)
  3. 用户定义完整性:针对某一具体的约束条件,涉及的数据必须满足语义要求,由应用的环境决定

第二部分 关系代数运算 ​

一、关系代数运算符 ​

二、关系模式中特殊的关系运算 ​

1.投影 ​

投影运算((\pi))是从关系的垂直方向进行运算,在关系R中选择若干属性列A组成新的关系,形式:(\pi _A(R))

例:(\pi _{Sno,Sname}(SC))表示从关系(SC)中选择属性列(Sno,Sname)

2.选择 ​

选择运算((\sigma))是从关系的水平方向进行运算,在关系R中选择满足给定条件F的所有元组,形式:(\sigma _F(R))

例:(\sigma _{1>'6'}(R))表示选取(R)关系中第1个属性值大于6的所有元组

3.连接 ​

连接运算((\bowtie))是从两个关系的笛卡尔积中选取满足条件的元组,分为以下三种:

  1. 条件连接((\theta)连接)

表示:(R\underset{X\theta Y}{\bowtie} S),例:(R\underset{R.A<S.C}{\bowtie} S)

  1. 等值连接

表示:(R\underset{X=Y}{\bowtie} S),例:(R\underset{R.A=S.C}{\bowtie} S)

  1. 自然连接

表示:(R\bowtie S)

是一种特殊的等值连接,要求两个关系中进行比较的分量必须是两个关系中所有的相同属性组,且结果集中将重复属性列去除。若无相同属性,则自然连接就会转化为笛卡尔积。

4.除 ​

除((\div))运算同时从关系的水平方向和垂直方向进行运算,可以理解为选择所有余下的属性相同的,含有除数元组的所有分量的被除元组的所有余下的属性。

5.笛卡尔积 ​

广义的笛卡尔积((\times))是指任意多个集合的乘积(笛卡尔积),形式:(R\times S)

三、扩展的关系运算 ​

1.外连接 ​

  • 左外连接((⟖)):在自然连接基础上,以左侧关系为基准,用null值填充来自右侧关系的属性
  • 右外连接((⟕)):在自然连接基础上,以右侧关系为基准,用null值填充来自左侧关系的属性
  • 全外连接((⟗)):在自然连接基础上,完成左外连接和右外连接的操作,用null值填充各属性

2.聚集函数 ​

[常用聚集函数与示例]

求和:(sum),例:(sum_{Cno}(SC))

求平均:(avg),例:(avg_{Grade}(SC))

计数:(count),例:(count_{Con}(SC))

去重重复值(用连接符附加在函数名后):(-distinct),例:(count-distinct_{Con}(SC))

四、查询优化准则 ​

  1. 提早执行选取运算。对于有选择运算的表达式,应优化成尽可能先执行选择运算的等价表达式,以得到较小的中间结果,减少运算量和从外存读块的次数
  2. 合并乘积与其后的选择运算为连接运算
  3. 将投影运算与其后的其他运算同时进行,以避免重复扫描关系
  4. 将投影运算和其前后的二目运算结合起来,使得没有必要为去掉某些字段再扫描一遍关系
  5. 在执行连接前对关系适当地预处理,就能快速地找到要连接的元组。方法有两种:索引连接法、排序合并连接法
  6. 存储公共子表达式。对于有公共子表达式的结果应存于外存(中间结果),这样,当从外存读出它的时间比计算的时间少时,就可节约操作时间