数据库:基础运算和示例 一

1 数据库五种运算

五种基本的关系代数运算,

复制代码
并(符号为V)、差(符号为^)、投影()、笛卡尔积、选择,

补充关系代数运算有,交、连接、除、广义投影、外连接。

css 复制代码
笛卡尔积 ,从数学角度理解,就是将集合A和集合B中所有有序对元素集合

2 数据库中选择,投影,连接,除法运算

选择运算: 查询

markdown 复制代码
	是数据库选择关系中 行的子集,即选择满足条件的元组

投影:是选取关系中列的子集,设模式R的关系r,X是R上属性的子集 x就是列,r到X上的投影r' 表示

markdown 复制代码
    r'(X) = ...

投影操作是从列的角度做 行的运算。

投影的结果不是原有的关系,是X中几列的属性。

由于投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组,因为取消了某些属性列之后,就可能出现重复行,投影结果不应该包括重复行。

连接 Join 自然连接,等值连接

复制代码
定义:连接也称之为 0连接,它是从两个关系的笛卡尔积中选取属性间满足一定条件的元组。
  • 等值连接

    css 复制代码
           θ为 = 符号的连接运算称为等值连接。
           它是从关系R与S的广义笛卡尔积中选取A , B 属性值相等的那些元组。
  • 自然连接

    markdown 复制代码
           自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是同名属性组,并且在结果中把重复的属性列去掉。
    
           等值连接和自然连接的区别是,自然连接是去除了重复的属性列的。
  • 除法运算 division

    r 复制代码
           设关系R除以关系S的结果为关系T,则T包含全部在R但不在S的属性和值,且T的元组与S的元组的全部组合都在R中。

除法的结果可以用计算象集的方法解决,以一道题为例说明如何求除法。

2.1 除法步骤

1 因为R÷S所得到的属性值 是包含于R,但是S不包含的属性, 所以R➗S得到的属性列有(A,B),S在(C,D)属性上的投影为{(c1,d1),(c2,d2)}

2 关系R中,AB属性可以取值为={(a1,b1),(a2,b2),(a3,b3)}

3 求象集

scss 复制代码
    (a1,b1)={(c1,d1),(c2,d2),(c3,d3)}
    (a2,b2)={(c2,d2)}
    (a3,b3)={(c1,d1),(c2,d2)}
    

4 : 从第三步中可以发现,有象集(a1,b1)和(a3,b3)包含了S在(C,D)属性上的投影,所以R÷S={(a1,b1),(a3,b3)}

2.2 示例: 投影和除的例子

投影运算的含义简单点就是:从表中选择需要的属性列。

列是属性,行是元组..

而且作投影之后可能会出现重复项,比如:

css 复制代码
 A B C  
a1 b1 c1  
a1 b2 c2  
a2 b2 c3  

作A的投影就是a1, a2; 减少了一行 设R表为:

css 复制代码
		R:
	A  B   C
	a1   b1   c2
	a2   b3   c7
	a3   b4   c6
	a1   b2   c3
	a4   b6   c6
	a2   b2   c3
	a1   b2   c1

设S表为:

css 复制代码
	    S
	B    C     D
	b1   c2    d1
	b2   c1    d1
	b2   c3    d2

那么 R ➗ S

css 复制代码
A
a1

(1) 找S与R的共同属性,其元组看做整体 k (2)选择R中包含k的 非S与R相同属性的 属性 即为R÷S

2.2.1 解答过程如下:

在关系R中,A可以取四个值{a1,a2,a3,a4},其中:

复制代码
a1的象集为:{(b1,c2),(b2,c3),(b2,c1)}就是a1 对应bc属性上的值
a2的象集为:{(b3,c7),(b2,c3)}
a3的象集为:{(b4,c6)}
a4的象集为:{(b6,c6)}

S在(B,C)上的投影为{(b1,c2),(b2,c3),(b2,c1)}。

只取BC两列显然只有a1的象集(B,C)a1包含S在(B,C)属性组上的投影,全部包含,所以R÷S={a1}。

3 小结

总结:

markdown 复制代码
    并:属性不变,元组可能增加(集合相等时不增加) 
    交:属性不变,元组可能减少(集合相等时不减少) 
    投影:属性可能减少(全投影时不减少),元组可能减少(投影后无重复项时不减少) 
    笛卡尔积:属性增加,元组可能增加(只有1个元组时不增加)

数据库 笛卡尔积,选择,投影,除操作中,应该是笛卡尔积最耗费资源和时间,因为属性增加了,计算量也随之而增加。

相关推荐
LYFlied4 分钟前
【每日算法】LeetCode 17. 电话号码的字母组合
前端·算法·leetcode·面试·职场和发展
式51630 分钟前
线性代数(八)非齐次方程组的解的结构
线性代数·算法·机器学习
有想法的py工程师1 小时前
PostgreSQL + Debezium CDC 踩坑总结
数据库·postgresql
Nandeska1 小时前
2、数据库的索引与底层数据结构
数据结构·数据库
Victor3561 小时前
Netty(20)如何实现基于Netty的WebSocket服务器?
后端
缘不易1 小时前
Springboot 整合JustAuth实现gitee授权登录
spring boot·后端·gitee
小卒过河01041 小时前
使用apache nifi 从数据库文件表路径拉取远程文件至远程服务器目的地址
运维·服务器·数据库
橘颂TA1 小时前
【剑斩OFFER】算法的暴力美学——翻转对
算法·排序算法·结构与算法
叠叠乐1 小时前
robot_state_publisher 参数
java·前端·算法
Kiri霧1 小时前
Range循环和切片
前端·后端·学习·golang