第二章 关系代数

Posted by fzy on January 23, 2024

第2章 关系代数

了解笛卡尔积,应该都会。

关系的性质:

  • 每一列的数据必须来自同一个域
  • 每一列必须是不可再分的数据项不能有相同的行
  • 行列次序无关

关系模式

\[R(属性U,域D,映射关系dom,依赖关系F)\]

三类关系表:

  • 基本关系表:实际存在的表
  • 查询表:查询结果对应的表
  • 视图表,由基本表或者其他视图表导出来的表,一般不存储实际数据

**关系代数基本操作:**选择、投影、并、差、笛卡尔积,此外还有连接、除、交。

完整性约束

  • 实体完整性(行):如果属性A是关系R的主属性,则属性A不能取空值。
  • 引用完整性(表间):如果关系引用了一个关系的主码,则引用的这一列中的值必须是被引用列里面有的记录。

外码:假设F是基本关系R的一个或者一组属性,但不是R的码,如果F和基本关系S的主码Ks对应,则F是基本关系R的外码。此时称R为参照关系,S为被参照关系。

  • 域完整性(列):针对某一个具体的关系数据库的约束条件,数据必须满足某一些语义要求

关系代数

关系代数运算符:

image-20230613100145646

集合运算

image-20230613100432594

image-20230613100406990

image-20230613100459230

并的两个东东必须同类型,属性个数相同,次序相同。每一个元组在结果中只出现一次。

也就是相同的关系模式

  • 笛卡尔积

表示的是两个关系对应元组集合之间可能的组合关系,是两个关系的无条件连接。

image-20230613100652961

关系运算

https://blog.csdn.net/weixin_43222324/article/details/108485648

  • 选择运算$\sigma$:

    从关系R中选择满足给定条件为真的元组(从行的角度) \(\sigma_F(R) = {t | t ∈ R,F(t) = true}\)

    σ选择,右下角F选择函数,括号R关系模式(表)

    相当于dql中where和having

举例:

image-20230613101311986

  • 投影运算$\pi$:

从关系R中取出若干列组成新的关系(从列的角度) \(\Pi_A(R) = { t[A] | t∈R},t \subseteq R\)

Π投影选择列,右下角A选择的列,括号R关系模式(表)

相当于dql中select后的

举例:

image-20230613104300364

可以定义广义投影,就是投影的项目可以是算术表达式。

image-20230613110641283

  • 改名$\rho$:

    显示改关系和属性名

image-20230613104505326

ρ改名字,右下角S改后的名字,括号改之前的关系模式名

  • 笛卡尔积

image-20230613104536467

关系R和关系S笛卡尔积

  • 内连接

image-20230613104727629

  • $\theta$连接

image-20230613104902426

θ运算符,A和B可比的属性列

举例:求数学成绩比王红同学高的学生

image-20230613105017509

当$\theta$为等号的时候是等值连接

  • 自然连接

image-20230613105057805

自然连接中相等的分量必须是相同的属性组,并且要在结果中去除重复的属性,但是 等值连接就不会去除。

image-20230620204721823

  • 外连接

保留一个表的所有数据,另一个无关联的记录为null。外连接的主要目的是为了防止因为失配产生的信息丢失

image-20230613105745879

哪边外连接,那边的信息就会全部被保留。

赋值运算

就是可以用临时的关系变量 来保存阶段性的关系运算结果。通过赋值给临时关系变量进行结果的传递。 \(临时关系变量 \longleftarrow 关系代数表达式\)

注意:给永久关系的复制意味着对数据库的修改。

聚集函数

求一组值的统计信息,返回单一的值。

image-20230613110835687

image-20230613110846130

image-20230613110945515

举例:

image-20230613111105461

G分组函数,左下角分组的对象相当于group by,右下角表示使用的聚合函数,相当于select,括号为关系模式(表)

第2章 关系数据库

\1. 试述关系模型的完整性规则。

答:关系模型的完整性规则有实体完整性规、参照完整性规则和用户定义完整性规则

实体完整性规则是指若属性A是基本关系R的主码属性,则属性A不能取空值

参照完整性规则是指若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值);或者等于S中某个元组的主码值

用户定义的完整性是针对某一具体关系数据库的约束条件。它反映某一具体应用所涉及的数据必须满足的语义要求。包括某属性取唯一值,某一属性值应满足一定的函数关系,某一属性的取值范围等等。

\2. 在参照完整性中,为什么外部码属性的值也可以为空?什么情况下才可以为空?

答:外部码属性不一定是(自身关系模式)主码属性,所以外部码属性的值可能为空。当外部码属性不是主码属性时,可以取空值,否则不能取空值。

3.试述关系模型的三个组成部分。 答:关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。

4.解释候选码和主码的关系。

答:

若关系中的某一属性组的值能唯一标识一个元组,而其子集不能,该属性组称为候选码;如果一个关系有多个候选码,可以选择其中一个为主码。候选码可以有多个,主码是其中的一个。