数据库关系运算理论:专门的关系运算概念解析

2024-03-22 20:04

本文主要是介绍数据库关系运算理论:专门的关系运算概念解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭
~✨✨

🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。

我是Srlua小谢,在这里我会分享我的知识和经验。🎥

希望在这里,我们能一起探索IT世界的奥妙,提升我们的技能。🔮

记得先点赞👍后阅读哦~ 👏👏

📘📚 所属专栏:数据库

欢迎访问我的主页:Srlua小谢 获取更多信息和资源。✨✨🌙🌙

目录

专门的关系运算

选择运算

投影运算

连接运算

除运算

(1)元组的分量

元组的分量举例1

元组的分量举例2

属性列/域列  举例

(2)象集Zx(Images Set)

象集举例1

象集举例2

象集举例3

象集举例4 


专门的关系运算

  • 选择 σ
  • 投影 π
  • 连接  \triangleright \triangleleft
  • 求商÷

选择运算

设有一个学生—课程数据库。学生关系包括学号、姓名、性别、年龄和院系五个属性,课程关系包括课程号、课程名和学分三个属性,选修关系包括学号、课程号和成绩三个属性。

关系模式表示如下:        

student(sno,sname,sex,age,dept)        

course(cno,cname,credit)        

sc(sno,cno,grade)

例题2.5 查询计算机系全体学生的信息。由student关系中满足dept=“计算机系”这一条件的元组组成(即为选择运算)。

结果如表2.17所示。

由此可见,选择运算实际上是从关系R中选取使逻辑表达式值为真的元组。这是从行的角度进行的运算。如图2.2所示。      

                                   

图2.2 选择操作

选择又称为限制(Restriction)。它是在关系R中选择满足给定条件的诸元组,记作:    

其中F表示选择条件,它是一个逻辑表达式,取逻辑值“真”或“假”。

例题2.6

查询年龄小于20岁的学生。

σAge < 20(student) 或 σ4 < 20(student)

结果如表2.18所示。


投影运算

例题2.7

查询学生的学号和姓名。由student关系中的学号属性列和姓名属性

列组成的新关系(即为投影运算)。

结果如表2.19所示。

说明:形成的新关系不仅取消了原关系中的某些列,而且还可能取 消某些元组,因为取消了某些属性列后,就可能出现重复行,应取 消这些完全相同的行。

由此可见,投影操作是从列的角度进行的运算。如图2.3所示。

关系R上的投影是从R中选择出若干属性列组成新的关系。记作:

其中A为R中的属性列。

例题2.8

查询学生关系student中都有哪些院系,即查询关系student在院系属性上的投影。

πDept(student)

结果如表2.20所示。

说明:student关系原来有四个元组,而投影结果取消了重复的计算机系元组,因此只有两个元组。


连接运算

连接也称为θ连接。它是从两个关系的笛卡儿积中选取属性间满足一定条件的元组。记作:

其中A和B分别为R和S上度数相等且可比的属性组。θ是比较运算符。连接运算从R和S的广义笛卡尔积R   S中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系θ的元组。

连接运算中有两种最为重要也最为常用的连接,一种是等值连接 (Equal-Join),一种是自然连接(Natural-Join)。

θ为“=”的连接运算称为等值连接。它是从关系R与S的广义笛卡尔积中选取A,B属性值相等的那些元组,即等值连接为:

自然连接(Natural-join)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。即若R和S具有相同的属性组B,U为R和S的全体属性集合,则自然连接可记作:

一般的连接操作是从行的角度进行运算。但自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。如图2.4所示。 

图2.4 连接操作

 外连接  R\triangleright \triangleleftS :如果把舍弃的元组也保存在结果关系中,而在其他属性上填空值(NULL)

A

B

C

E

a1

b1

5

3

a1

b2

6

7

a2

b3

8

10

a2

b3

8

2

a2

b4

12

NULL

NULL

b5

NULL

2

左外连接 R\triangleright \triangleleftS :如果只把左边关系R中要舍弃的元组保留就叫做左外连接。

A

B

C

E

a1

b1

5

3

a1

b2

6

7

a2

b3

8

10

a2

b3

8

2

a2

b4

12

NULL

   右外连接 R\triangleright \triangleleft S :如果只把右边关系S中要舍弃的元组保留就叫做右外连接

A

B

C

E

a1

b1

5

3

a1

b2

6

7

a2

b3

8

10

a2

b3

8

2

NULL

b5

NULL

2


除运算

为叙述上的方便先引入几个概念。

(1)元组的分量

(2)象集(Image Set)

(1)元组的分量

  • 设关系模式为R(A1,A2,……An),它的一个关系为R
  • t ∈R 表示 t 是R 的一个元组
  • t[Ai] 则表示元组t中相应于属性Ai的一个分量。
元组的分量举例1

元组的分量举例2

如:关系模式S

t :(99058,庞兵,男,1979 ,……)

t[SNAME]=庞兵,表示元组t 在姓名SNAME上的分量为“庞兵”。

属性列/域列  举例

(2)象集Zx(Images Set)

给定一个关系R(X,Z),X和Z为属性组。

当 t[X]=x时,x在R 中的象集(Images Set)为:               

                Zx = { t [Z] | t  R,t [X] = x }

它表示R中属性组X上值为x的诸元组在Z上分量的集合。

象集举例1

  • x1在R中的象集    
  •         Zx1 ={Z1,Z2,Z3},
  • x2在R中的象集    
  •         Zx2 ={Z2,Z3},
  • x3在R中的象集    
  •         Zx3={Z1,Z3}
象集举例2

象集举例3

例如:学生-课程数据库中的选修关系S-C

SNO

CNO

Grade

99001

001

85

99001

003

90

99002

001

75

99002

002

80

t [X]=t[SNO]=x=99001

  • 象集:Zx={ (001,85),(003,90) }

t [X]=t [CNO]=x=001

  • 象集:Zx={ (99001,85),(99002,75) }
象集举例4 

给定关系R(X,Y)和S(Y,Z),其中X、Y、Z为属性组。R中的Y与S中 的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运 算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性 列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合。

记作:

其中Yx为x在R中的象集,x =tr[X]

除操作是同时从行和列角度进行运算。如图2.6所示。

因此,求R÷S的操作步骤如下:

(1)将R中属性分为两个集合X和Y,    

R(X,Y),其中Y就是S中的前半部分    

属性的集合,S(Y,Z)。

(2)若X的某个值x的象集Yx    

Yx={t[Y]∣t∈R∧t[X]=x} 包含S表中t[Y]的所有元组,则将x放入结果集中。

例:R÷S

如图2.7所示。设关系R、S分别为图2.7中的(a)和(b), R÷S的结果为图2.7(c)。

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

a1的象集为{(b1,c2),(b2,c3),(b2,c1)}  

a2的象集为{(b3,c7),(b2,c3)}  

a3的象集为{ (b4,c6) }  

a4的象集为{(b6,c6)}  S在(B,C)上的投影为{(b1,c2),(b2,c1),(b2,c3)}  

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

例题2.9 已知学生选课关系R,课程表S,要找出选课关系中选修所有课程的学生的学号。指定的课程号和对应课程名构成的关系记为S,则该问题可以用R÷S表示。如表2.21、表2.22、表2.23所示。

希望对你有帮助!加油!

若您认为本文内容有益,请不吝赐予赞同并订阅,以便持续接收有价值的信息。衷心感谢您的关注和支持!

这篇关于数据库关系运算理论:专门的关系运算概念解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/836098

相关文章

详谈redis跟数据库的数据同步问题

《详谈redis跟数据库的数据同步问题》文章讨论了在Redis和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除R... 目录一、Redis 数据库数据一致性的解决方案1.1、更新Redis缓存、删除Redis缓存的区别二

oracle数据库索引失效的问题及解决

《oracle数据库索引失效的问题及解决》本文总结了在Oracle数据库中索引失效的一些常见场景,包括使用isnull、isnotnull、!=、、、函数处理、like前置%查询以及范围索引和等值索引... 目录oracle数据库索引失效问题场景环境索引失效情况及验证结论一结论二结论三结论四结论五总结ora

C#实现文件读写到SQLite数据库

《C#实现文件读写到SQLite数据库》这篇文章主要为大家详细介绍了使用C#将文件读写到SQLite数据库的几种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录1. 使用 BLOB 存储文件2. 存储文件路径3. 分块存储文件《文件读写到SQLite数据库China编程的方法》博客中,介绍了文

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

在C#中合并和解析相对路径方式

《在C#中合并和解析相对路径方式》Path类提供了几个用于操作文件路径的静态方法,其中包括Combine方法和GetFullPath方法,Combine方法将两个路径合并在一起,但不会解析包含相对元素... 目录C#合并和解析相对路径System.IO.Path类幸运的是总结C#合并和解析相对路径对于 C

SQL Server数据库磁盘满了的解决办法

《SQLServer数据库磁盘满了的解决办法》系统再正常运行,我还在操作中,突然发现接口报错,后续所有接口都报错了,一查日志发现说是数据库磁盘满了,所以本文记录了SQLServer数据库磁盘满了的解... 目录问题解决方法删除数据库日志设置数据库日志大小问题今http://www.chinasem.cn天发

Java解析JSON的六种方案

《Java解析JSON的六种方案》这篇文章介绍了6种JSON解析方案,包括Jackson、Gson、FastJSON、JsonPath、、手动解析,分别阐述了它们的功能特点、代码示例、高级功能、优缺点... 目录前言1. 使用 Jackson:业界标配功能特点代码示例高级功能优缺点2. 使用 Gson:轻量

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines

python解析HTML并提取span标签中的文本

《python解析HTML并提取span标签中的文本》在网页开发和数据抓取过程中,我们经常需要从HTML页面中提取信息,尤其是span元素中的文本,span标签是一个行内元素,通常用于包装一小段文本或... 目录一、安装相关依赖二、html 页面结构三、使用 BeautifulSoup javascript

Oracle数据库执行计划的查看与分析技巧

《Oracle数据库执行计划的查看与分析技巧》在Oracle数据库中,执行计划能够帮助我们深入了解SQL语句在数据库内部的执行细节,进而优化查询性能、提升系统效率,执行计划是Oracle数据库优化器为... 目录一、什么是执行计划二、查看执行计划的方法(一)使用 EXPLAIN PLAN 命令(二)通过 S