Pixiv - KiraraShss
database-06-形式化关系查询语言
2217 字
11 分钟
database-06-形式化关系查询语言
数据库系统原理
形式化关系查询语言
2026
- 关系代数:Relational Algebra
元组关系演算:Tuple Relational Calculus*域关系演算:Domain Relational Calculus*
关系代数概述§6.1
- 一个运算符使用一个或两个关系作为输入,
运算结果输出一个关系.
- 基本运算
- 选择select:
- 投影project: 或
- 并集union:
- 差集set difference:
- 笛卡尔积Cartesian product:
Select Operation/选择运算§6.1.1
- 单目运算符:
- 是选择条件(注意写成下标)
- 是个逻辑表达式
- 可以使用逻辑连接符: (and), (or), (not)
- 可以使用逻辑比较:, , , , ,
- 可使用属性名、常量、嵌套圆括弧(改变优先级)
- 如:
- 例: 关系 ➔
A B C D α α 1 7 α β 5 7 β β 12 3 β β 23 10 A B C D α α 1 7 β β 23 10
Project Operation/投影运算§6.1.2
- 单目运算符:
- 是关系的属性名 (注意写成下标)
- 运算结果是一个关系:
- 它保留属性,去掉了其他属性
- 如出现重复行,则去掉重复行
- 如:
- 例: 关系 ➔ ➔ 去掉重复行
A B C α 10 1 α 20 1 β 30 1 β 40 2 A C α 1 α 1 β 1 β 2 A C α 1 β 1 β 2
关系运算组合§6.1.3
- 一个运算符的输出可以作为另一个的输入,从而构成
关系代数表达式(relational-algebra expression) - 如:
Union Operation/并集运算§6.1.6
- 双目运算符:
- 必须是兼容的关系(compatible relations)
- 含有相同数量的属性
- 对应属性的域必须相容:如和的第二个属性必须来自同一个域
- 如:
- 例: 关系 , 关系 ➔
A B α 1 α 2 β 1 A B α 2 β 3 A B α 1 α 2 β 1 β 3
Set Intersection Operation/交集运算§6.1.6
- 双目运算符:
- 必须是兼容的关系(compatible relations)
- 含有相同数量的属性
- 对应属性的域必须相容:如和的第二个属性必须来自同一个域
- 如:
Set Difference Operation/差集运算§6.1.6
- 双目运算符:
- 必须是兼容的关系(compatible relations)
- 含有相同数量的属性
- 对应属性的域必须相容:如和的第二个属性必须来自同一个域
- 如:
- 例: 关系 , 关系 ➔
A B α 1 α 2 β 1 A B α 2 β 3 A B α 1 β 1
元组运算符号定义§6.2.0
、、
[ ]
| A1 | A2 | A3 | A4 |
|---|---|---|---|
| v11 | v12 | v13 | v14 |
| v21 | v22 | v23 | v24 |
| v31 | v32 | v33 | v34 |
| v41 | v42 | v43 | v44 |
- : 是的一个元组
如: - : 的属性分量值
如: - 其中:
保留在中的分量形成新元组
如: ➔
称为 元组的连接(Concatenation)
[ ]
| B1 | B2 |
|---|---|
| x11 | x12 |
| x21 | x22 |
| x31 | x32 |
[ ]
| A1 | A2 | A3 |
|---|---|---|
| v11 | v12 | v13 |
| v21 | v22 | v23 |
| v31 | v32 | v33 |
它是一个列的元组,前n个分量为中的一个n元组,后m个分量为中的一个m元组。
如,分别为的第2行和的第3行,则:
Cartesian-Product Operation/笛卡尔积§6.1.4
- 双目运算符:
- 如和有同名属性,则需重命名属性防止属性名重复
- 例: 关系 , 关系 ➔
A B α 1 β 2 γ 3 B C D α 7 x β 7 x A Br Bs C D α 1 α 7 x α 1 β 7 x β 2 α 7 x β 2 β 7 x γ 3 α 7 x γ 3 β 7 x
Theta Join/连接/θ连接§6.1.5
- 连接是双目运算符:
- 如
可用连接表达为
- 例:
r A B C a1 b1 5 a1 b2 6 a2 b3 12 s B E b3 2 b3 10 b1 6 b5 2 C<E✘ ✔A Br C Bs E a1 b1 5 b3 10 a1 b1 5 b1 6 a1 b2 6 b3 10
| A | B | C |
|---|---|---|
| a1 | b1 | 5 |
| a1 | b2 | 6 |
| a2 | b3 | 12 |
| B | E |
|---|---|
| b3 | 2 |
| b3 | 10 |
| b1 | 6 |
| b5 | 2 |
| A | Br | C | Bs | E |
|---|---|---|---|---|
| a1 | b1 | 5 | b3 | 2 |
| a1 | b1 | 5 | b3 | 10 |
| a1 | b1 | 5 | b1 | 6 |
| a1 | b1 | 5 | b5 | 2 |
| a1 | b1 | 5 | b3 | 2 |
| a1 | b2 | 6 | b3 | 10 |
| a1 | b2 | 6 | b1 | 6 |
| a1 | b2 | 6 | b5 | 2 |
| a2 | b3 | 12 | b3 | 2 |
| a2 | b3 | 12 | b3 | 10 |
| a2 | b3 | 12 | b1 | 6 |
| a2 | b3 | 12 | b5 | 2 |
Nature Join/自然连接§6.1.5
- 双目运算符:
- 它自动寻找和的公共属性作为等值连接条件
- 连接结果中的公共属性,只保留一份
- 例1:
- S ( Sno, Sname, Ssex, Sage, dept )
SC( Sno, Cno, Grade )
- S ( Sno, Sname, Ssex, Sage, dept )
- 例2:
r A B C a1 b1 5 a1 b2 6 a2 b3 12 s B E b3 2 b3 10 b1 6 b5 2 r ⋈r.B=s.B s A Br C Bs E a1 b1 5 b1 6 a2 b3 12 b3 2 a2 b3 12 b3 10
自然连接的一些特性§6.1.5
- 顺序可交换
- 如果自然连接的表之间没有“公共属性”?
- 它会等同于笛卡尔积:
Assignment Operation/赋值运算* §6.1.7
- 单目运算符:
- 严格地说,它不是“运算符”,只是一个“命名符”
- 例如:
Rename Operation/重命名运算§6.1.8
- 单目运算符:
- 严格地说,它不是“运算符”,只是一个更强的“命名符”
- 除了关系重命名,它还能够对属性进行重命名
- 例如:
- 又如:
Image Set/象集§6.1.x.1
- 象集:
- 给定一个关系 ,和为属性组。我们定义,当 时,在中的象集(Images Set)为:
- 它表示中属性组上值为的诸元组在上分量的集合
- 例:
性别 年龄 姓名 其他 女 21 张三 333… 男 22 李四 444… 女 19 王五 555… 男 22 何六 666… ➔姓名 其他 李四 444… 何六 666…
Division Operation/除法运算§6.1.x.2
- 双目运算符:
- 其中:
- , , 为,关系模式的属性组
- 中的与中的可以有不同的属性名,但必须出自相同的域
- 为时,在中的象集(Images Set)
- 基本思想:
与的除运算得到一个新的关系,是中满足下列条件的元组在属性列上的投影:元组在上分量值的象集包含(涵盖)了在上投影的集合
除法的计算方法§6.1.x.3
,,求
- 思路:
- 求得
- 对中每个元组做如下步骤:
- 求取象集
- 如则将放入结果集中
- 例:
X={ A }, Y={ B, C }, Z={ D }πY(s)={ (b1, c2), (b2, c3) }Ya1={ (b1, c2), (b2, c3), (b2, c1) }
Ya2={ (b3, c7), (b1, c2) }
Ya3={ (b2, c3), (b1, c2) }
r ÷ s = { (a1) , (a3) }r∈R(X,Y) A B C a1 b1 c2 a2 b3 c7 a3 b2 c3 a1 b2 c3 a2 b1 c2 a3 b1 c2 a1 b2 c1 s∈S(Y,Z) B C D b1 c2 d1 b2 c3 d1 b2 c3 d2
Aggregate Operation/聚集运算§6.1.x.4
聚集函数(Aggregate Functions)
- 单目运算符:
- 是分组所依据(group by)的属性(可不指定)
- 是聚集函数,如:
- 有一些书籍或教材使用 替代
- 例:
➔ //所有学生的平均和最大年龄
➔ //按性别分组统计
运算符优先级§6.1.x.5
- 单目运算符 > 双目运算符
- >
- 如果实在弄不清?
- 使用配对圆括号“”
注意:我们只用圆括号,没有什么“大括号、小括号、方括号、花括号……”作为专业人士请只使用配对“圆括号”热爱生命和分数,远离方括号、花括号之类
几个例子§6.1.x.6
- 选修2号课程的学生学号
- 至少选了一门以5号课为先行的课程的学生姓名
- 至少选修1和3号课程的学生学号
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!
database-06-形式化关系查询语言
https://meteorfate-github-io.pages.dev/posts/06-形式化关系查询语言/ 相关文章 智能推荐
1
database-02-关系模型介绍
database lue
2
database-01-引言
database lue
3
database-03-SQL介绍
database lue
4
Firefly 代码块示例
文章示例 在Firefly中使用表达性代码的代码块在 Markdown 中的外观。
5
Firefly 布局系统详解
博客指南 深入了解 Firefly 的布局系统,包括侧边栏布局(左侧/双侧)和文章列表布局(列表/网格),以及自适应网格列数。
随机文章 随机推荐