数据库模型与语言-4-关系模型之关系代数

基本内容

  1. 关系代数之基本操作
  2. 关系代数之扩展操作
  3. 关系代数之组合与应用训练
  4. 关系代数之复杂扩展操作(选学)

一、关系代数概述

(1)关系代数运算的特点?

  • 基于集合,提供了一系列的关系代数操作:并、差、笛卡尔积(广义积)、 选择、投影和更名等基本操作
  • 以及交、 连接和关系除等扩展操作,是一种集合思维的操作语言。
  • 关系代数操作以一个或多个关系为输入,结果是一个新的关系。
  • 用对关系的运算来表达查询,需要指明所用操作, 具有一定的过程性。

是一种抽象的语言,是学习其他数据库语言,如SQL等的基础

(2)关系代数运算的基本操作?

关系代数操作:集合操作和纯关系操作

(3)为什么要提出关系代数

二、关系代数之基本操作

(0)关系代数运算的约束

某些关系代数操作,如并、差、交等,需满足“并相容性”

并相容性

  • 参与运算的两个关系及其相关属性之间有一定的对应性、可比性或意义关联性
  • 定义:关系R与关系S存在相容性,当且仅当:

(1) 关系R和关系S的属性数目必须相同;

(2) 对于任意i,关系R的第i个属性的域必须和关系S的第i个属性的域相同

假设:R(A1, A2, , An) , S(B1, B2, ,Bm) R和S满足并相容性:n = m 并且 Domain(Ai) = Domain(Bi)

并相容性的示例

STUDENT(SID char(10), Sname char(8), Age char(3)) 
PROFESSOR(PID char(10), Pname char(8), Age char(3))

关系STUDENT与关系PROFESSOR是相容的,因为:

(1) 关系R和关系S的属性数目都是3

(2) 关系R的属性SID与关系S的属性PID的域都是char(10)

(3) 关系R的属性Sname与关系S的属性Sname的域都是char(8)

(4) 关系R的属性Age与关系S的属性Age的域都是char(3)

(1) “并”操作

  • 定义:假设关系R和关系S是并相容的,则关系R与关系S的并运算结果也 是一个关系,记作:R ∪S, 它由或者出现在关系R中,或者出现在S中的元组构成。
  • 数学描述: R ∪ S ={ t | t ∈ R ∀ t∈S } ,其中t是元组
  • 并运算是将两个关系的元组合并成一个关系,在合并时去掉重复的元组。
  • R ∪S 与 S ∪R 运算的结果是同一个关系

  • 并操作的示例三(语义的)
  • 若R为计算机学院的学生,S为材料学院的学生 则:R ∪S为两院所有的学生
  • 若R为学过数据库课程的学生,S为学过自控理论课程的学生 则:R∪S为学过两门课之一的所有学生
  • 汉语中的“或者 或者 ”通常意义是并运算的要求。
  • 首先要准确理解汉语的查询要求,然后再找到正确的操作
  • 同学可举出更多的示例

(2) “差”操作

差(Difference)

定义:假设关系R 和关系S是并相容的,则关系R 与关系S 的差运算结果 也是一个关系,记作:R  S, 它由出现在关系R中但不出现在关系S中的元 组构成。

  • 数学描述:R - S ={ t | t∈R ∧ t∈ S },其中t是元组
  • R - S 与 S - R 是不同的

  • 差操作的示例三(语义的)
  • 若R为计算机学院的学生,S为四年级的学生,则: R - S为 计算机学院非四年级的学生 S - R为 四年级非计算机学院的学生
  • 若R为学过数据库课程的学生,S为学过自控理论课程的学生, 则: R - S为 学过数据库课程但没学过自控理论课程的所有学生
  • 汉语中的“是 但不含 ”通常意义是差运算的要求。
  • 首先要准确理解汉语的查询要求,然后再找到正确的操作
  • 同学可举出更多的示例

(3) “笛卡尔积”操作

  • R x S = S x R : R x S为R中的每一个元组都和S中的所有元组进行串 接。 S x R为S中的每一个元组都和R中的所有元组进行串接。结果是相同 的。
  • 两个关系R和S,它们的属性个数分别为n和m(R是n度关系,S是m度关系), 则笛卡尔积 R x S的属性个数 =n + m。即元组的前n个分量是R中元组的分量,后m个分量是S中元 组的分量(R x S是n+m度关系).
  • 两个关系R和S,它们的元组个数分别为x和y(关系R的基数x, S的基数y), 则笛卡尔积R x S的元组个数 =x x y。(R x S的基数是x x y).

(4) “选择”操作

  • 选择操作的示例四(语义的)
  • 选择操作从给定的关系中选出满足条件的行
  • 条件的书写很重要,尤其是当不同运算符在一起时,要注意运算符的优先 次序,优先次序自高至低为{ 括弧;θ;﹁ ;∧ ;∨ }
  • 例如: Sage<20 ∨ Sage>18 ∧ D# = “03” 与 (Sage<20 ∨ Sage>18) ∧ D# = “03”
  • 同学可举出更多的示例

(5) “投影”操作

关系代数的基本书写思路:

  • 选出将用到的关系/表
  • 做“积”运算
  • 做选择运算保留所需的行/元组
  • 做投影运算保留所需的列/属性

三、关系代数之扩展操作

(1) “交”操作

  • 定义:假设关系R和关系S是并相容的,则关系R与关系S的交运算结果也 是一个关系,记作:R ∩S, 它由同时出现在关系R和关系S中的元组构成。
  • 数学描述: R ∩ S ={ t | t ∈ R ∧ t ∈ S } ,其中t是元组
  • R∩S 和 S∩R 运算的结果是同一个关系
  • 交运算可以通过差运算来实现:R ∩ S = R - (R - S) = S - (S - R)

  • 交操作的示例三(语义的)
  • 若R为年龄小于20岁的学生,S为计算机学院的学生, 则:R ∩ S为计算机学院并且年龄小于20岁的所有学生
  • 若R为学过数据库课程的学生,S为学过自控理论课程的学生, 则:R ∩ S为既学过数据库课程又学过自控理论课程的所有学生
  • 汉语中的“既 又 ”,“ , 并且 ”通常意义是交运算的要求
  • 首先要准确理解汉语的查询要求,然后再找到正确的操作
  • 同学可举出更多的示例

(2) “θ-连接”操作

  • 投影与选择操作只是对单个关系(表)进行操作, 而实际应用中往往涉及多个表 之间的操作, 这就需要θ-连接操作
  • 比如:查询数据结构成绩在90分以上的学生姓名(涉及Student, Course, SC)

特别注意:

虽然我们在讲解θ-连接操作时,使用笛卡尔积然后再进行选择来得到θ- 连接结果。这主要是方便大家理解。但当引入连接操作后,DBMS可直接进 行连接操作,而不必先形成笛卡尔积。

(3) “等值-连接”操作

(4) “自然连接”操作

(5) 小结

关系代数的基本书写思路:

  • 选出将用到的关系/表
  • 做“积”运算(可用连接运算替换)
  • 做选择运算保留所需的行/元组
  • 做投影运算保留所需的列/属性

四、关系代数操作之组合与应用训练

(1)集合操作思维训练

(2)注意有可能写错哟,虽然语法看起来是正确的,但语义是错误的

(3)要特别注意语义

(4)书写关系代数的思维

五、关系代数之复杂扩展操作

(1) “除”操作

(2) “外连接”操作

六、总结

参考资料:

哈尔滨工业大学 战德臣

药企,独角兽,苏州。团队长期招人,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn