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

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

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

相关推荐
袋鱼不重3 小时前
我的神奇同事,AI 用多了居然写了个 Open In Codex
前端·后端·ai编程
用户8356290780513 小时前
使用 Python 操作 Word 内容控件
后端·python
像我这样帅的人丶你还3 小时前
啥? 前端也要会干Java?🛵🛵🛵
后端
Hommy883 小时前
【剪映小助手】添加贴纸接口(Add Sticker)
后端·github·剪映小助手·视频剪辑自动化·剪映api
通信小呆呆3 小时前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
benben0443 小时前
强化学习之DQN算法族(基于gymnasium开发)
算法
CaffeinePro3 小时前
FastAPI响应处理:返回值、状态码、响应头与异常标准化与案例解析
后端
HuanYu4 小时前
PageHelper分页的原理
后端
于先生吖4 小时前
SpringBoot对接大模型开发AI命理测算系统:八字排盘与AI解析接口源码全解
人工智能·spring boot·后端