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

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个元组时不增加)

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

相关推荐
咕噜Yuki060911 分钟前
OCP证书如何下载?
数据库·ocp·证书查询
醉颜凉17 分钟前
【NOIP提高组】潜伏者
java·c语言·开发语言·c++·算法
lapiii35826 分钟前
图论-代码随想录刷题记录[JAVA]
java·数据结构·算法·图论
冬瓜31237 分钟前
linux-c 使用c语言操作sqlite3数据库-1
数据库·sqlite
夜色呦40 分钟前
现代电商解决方案:Spring Boot框架实践
数据库·spring boot·后端
爱敲代码的小冰1 小时前
spring boot 请求
java·spring boot·后端
WangYaolove13141 小时前
请解释Python中的装饰器是什么?如何使用它们?
linux·数据库·python
我是黄大仙1 小时前
利用飞书多维表格自动发布版本
运维·服务器·数据库·飞书
曾经的三心草1 小时前
Mysql之约束与事件
android·数据库·mysql·事件·约束
WuMingf_2 小时前
redis
数据库·redis