数据库杂谈(三)——关系代数

3 形式化关系查询语言

摘要:关系代数是一种抽象的查询语言,用对关系的运算来表达查询,作为研究关系数据语言的数学工具。在本文中,我们不仅谈论关系代数的知识点,而且还配备了对应的练习题。

3.1 关系代数

3.1.1 概述

说明:关系代数语言是一种过程化查询语言,它包括一个运算的集合,这些运算以一个或两个关系为输入,产生一个新的关系作为结果。

关系代数一般包含五个基本操作,如果一个系统或者数据库产品包含这五个基本操作,那我们认为这个系统的功能是完备的

任何的操作都可以通过这五个操作来组合完成,如下所示:

操作名英文符号
选择操作select operation σ σ σ
投影操作project operationπ
笛卡尔乘积Cross product×
集合差操作Set - diffrent
集合并操作union

选择投影和更名为一元运算,因为它们只对一个关系进行操作;而另外三个对两个关系进行运算,故为二元运算。

事实上,目前流行的关系数据库中,除了满足关系完备性以外,还增加了不少关系代数所不支持的操作,如排序分组聚集函数,甚至是传递闭包的计算。

提示:需要注意的是,在一些书上关系代数也叫做关系代数操作,简称关系操作。在《数据库原书(第6版)》中,出现了更名这一基本操作,但是在大多数的考试中,基本操作还是以上表为准。

在学习的过程中,对于考试我们不仅需要掌握关系代数符号,还需要掌握会写关系代数表达式。


3.1.2 选择操作

说明:选择操作就是加限制条件选元组,作用相当于SQL中的where子句。

image-20221018165658250

提示:需要注意的是,基本操作都是支持多种运算的组合的,比如选择和投影和连接和集合运算一起使用,这都是可以的,但是要注意先后顺序,这在后面我们会给出演示。


3.1.3 投影操作

说明:投影就是选取关系中的某些列,即选取某些属性,作用相当于SQL中的select子句。

image-20221018165915022

提示

  • 投影后的表由于有可能不包含候选键,这就会导致有些元组可能是重复的,这时候系统会自动消除重复元组,所得关系(表)的元组数小于原关系的元组数。如果投影后的表包含候选键,那么元组数和投影前一样。
  • 在实际的数据库产品中,数据库投影后他是不会自动去重的,因为数据库他不能保证用户对重复的数据是否有应用价值,所以,除非你要求,不然他不会自动去重。

3.1.4 集合操作

3.1.4.1 笛卡尔乘积

说明:集合操作指的是笛卡尔乘积

在表的连接查询方面有一种现象被称为:笛卡尔积现象(笛卡尔乘积现象),也就是说,你可以理解为两张表做笛卡尔乘积,等于两张表中所有元组两两匹配的所有结果,如图所示:

image-20221018165900709

关系一有6条元组,关系二也是6条,那么做笛卡尔乘积,所得的关系就是36条元组。

当然,我们说的连接,实际上就是加了条件的笛卡尔乘积。


3.1.4.2 并交差操作

说明:这个概念和我们数学中集合的概念是一样的,但是对于数据库来说,它会出现一些问题。

image-20221018165849657

如果是以上的两张表做并操作,那么这是完全没有办法的,老师表中的属性和学生表的属性完全不一样,你总不能直接把数据贴上去吧?对此,我们引入了并兼容这个概念。

并兼容要求参与并交差的两个关系的元组必须限制为同类型,也就是相同目,对应的属性的域也需相同。


3.1.5 连接操作

说明:连接其实和笛卡尔乘积很像,连接实际上就是一个加了条件的笛卡尔乘积,他只找出那些满足条件的元组。其符号为 ⋈ \bowtie

一般来说,我们的连接符号代表的都是自然连接,即笛卡尔乘积加上默认条件外键相等。下面举个例子:

image-20221018165528609

如果是对这两张表做连接,其结果实际上为:

SnoCnoGradeSnoSnameSsex
S01C0192S01王二
S02C0290S02张三
S02C0382S02张三
S03C0180S03李四

其默认Sno为外键,通过外键进行连接了。


3.1.6 更名操作

说明:如果你在一条关系代数表达式中引用了两张同样的表,例如学生表连接学生表,为了没有歧义,你可以使用更名,更名用希腊字母rho( ρ \rho ρ)来表示,对于你指定的关系代数表示式E,表示式 ρ x ( E ) \rho_x(E) ρx(E)返回表示式E的结果,并把名字x赋给了它。

实际上,还可以把更名的表示式写出 ρ ( A 1 , A 2 . . . , A n ) ( E ) \rho_{(A_1,A_2...,A_n)}(E) ρ(A1,A2...,An)(E),其中 A n A_n An表示E得出来的结果对表中各属性进行重命名。

比如 ρ 学生表 1 ( 学生表 ) \rho_{学生表1}(学生表) ρ学生表1(学生表)就是一个更名。

提示:在考试中根本不需要更名操作,因为考试出的题很少出现歧义问题。


3.1.7 除操作

说明:除法操作不好用定义来解释,如图所示:在<a1,b1>里和<a2,b2>里,明显对应的R.3和R.4都包含了S表,所以{<a1,b1>,<a2,b2>}就是除法的结果。其他不含S表的<a3,b3>可以看做结果的余数。

image-20221018165428057

提示:除法操作并不是基本操作,这就说明其可以由基本操作来表示。这在考试中如果故意刁难是会涉及到的。


3.1.8 外连接

引入:想要知道什么是外连接,就要知道什么是内连接。

  • 内连接:假设A和B表进行连接,使用内连接的话,凡是A表和B表能够匹配上的记录查询出来,就是内连接,AB两张表没有主副之分,两张表是平等的。
  • 外连接:假设A和B表进行连接,使用外连接的话,AB两张表中有一张表是主表,一张表是副表,主要查询主表中的数据,捎带着查询副表,当副表中的数据没有和主表中的数据匹配上,副表自动模拟出NULL与之匹配。

外连接分类

  • 左外连接(左连接):表示左边的这张表是主表。

  • 右外连接(右连接):表示右边的这张表是主表。

提示:左连接有右连接的写法,右连接也会有对应的左连接的写法。为什么这么说,当你左连接想写成右连接的时候,你把表对调一下就可以了。

说明:连接的本质是加上了条件的笛卡尔积,也就是说表1和表2做连接,那么是表1的元组去匹配满足条件的表2的元组,不满足条件则不录入结果表;但是对于左外连接,表1的所有元组都会在结果表中,即使它没有匹配到符合条件的表2元组,它也会存在,且匹配不了的表2元组在结果表位置用NULL填充。


3.1.9 外并操作

说明:我们前面说过,两个表若不满足并兼容是不可以进行集合并交差操作的,但是可以进行外并操作,即强行整合两表,结果的属性是两表属性的总和,如果其他表没有另外一个表的属性,那么那一列会被填上NULL。


3.1.10 赋值操作

说明:我们如果不想写出一条关系代数表达式来表示某个结果,而想拆分成两个步骤,那么我们可以使用赋值操作,其符号为 ← ← 。例如:

temp1 = R×S

temp2 ← σ s n o = S 01 ( S ) σ_{sno = S01}(S) σsno=S01(S)

result ← temp1×temp2

提示:实际上,这个更名操作在考试中根本用不到,因为你通常都是通过嵌套的方式一口气写完一整条的关系代数表达式,而不会写出来两条。


3.1.11 练习

题目描述:设有一个零件供应关系数据库,它包括S、P、J、SPJ四个关系,请按要求写出关系代数表达式。

image-20221018165409444

image-20221018165359408

image-20221018165346818

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
公司文件存放的数据库结构可以根据具体需求和业务流程进行设计。一种常见的数据库结构是使用主数据库文件和次数据库文件来组织文件存放。主数据库文件是数据库的起点,可以指向数据库中的其他部分,每个数据库都有一个主数据库文件。次数据库文件是可选的,有些数据库可能没有次数据文件,而有的数据库则有多个次数据文件。这些文件可以根据需要进行扩展和管理,文件扩展名一般是 .mdf 和 .ndf。此外,还需要考虑事务日志文件,它包含恢复数据库所需的所有日志信息,每个数据库必须至少有一个日志文件,但可以不止一个,推荐的文件扩展名是 .ldf。这样的数据库文件组织结构可以满足数据库的存储和管理需求。\[1\] 另外,需要注意的是,数据库文件的管理不一定要依赖于操作系统的文件管理系统。传统的文件系统可能无法提供数据库系统所需的附加信息和快速访问路径。数据库中的文件是供所有数据库用户共享的,因此需要兼顾多方面的要求,并能适应数据的动态变化。因此,数据库系统通常会在文件目录、文件描述块、物理块等部分附加一些信息,以满足数据库的功能需求。这样的设计可以提供更好的性能和灵活性。\[2\] 此外,还有一些特殊的系统数据库,如master数据库和tempdb数据库。master数据库记录了安装以及随后创建的所有数据库的信息,包括数据库所用磁盘空间、文件分配、空间使用率、系统级的配置设置、登录帐户密码、存储位置等。它是系统的关键,不允许任何人对其进行修改,因此需要经常保留一份当前备份的拷贝。tempdb数据库用于存储临时数据,例如临时表和临时存储过程的执行结果。\[3\] 综上所述,公司文件存放的数据库结构可以根据具体需求和业务流程进行设计,常见的结构包括主数据库文件、次数据库文件和事务日志文件。此外,还需要考虑特殊的系统数据库,如master数据库和tempdb数据库。 #### 引用[.reference_title] - *1* *3* [SQL Server数据库结构](https://blog.csdn.net/weixin_45962068/article/details/122537346)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [数据库杂谈(七)——数据库的存储结构](https://blog.csdn.net/chengyuhaomei520/article/details/123324598)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ArimaMisaki

如果知识有用请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值