某销售公司员工关系E(工号、姓名、部门名、电话、住址),商品关系C(商品号、商品名、库存数)和销售关系EC(工号、商品号、销售数、销售日期)。

查询“销售部1”在2020年11月11日销售“HUWEIMate40”商品的员工工号、姓名、部门名及其销售的商品名销售数的关系代数表达式为π1,2,3,7,8((第一空)⋈((第二空)⋈(第三空)))

f92dd192e0aa44a6167dfb896c365b7e.png

请先 登录 后评论

1 个回答

亚里士德
擅长:互联网

知识点:基本的关系代数运算

章节9.3.2。和书上的例题9-8几乎一样,本题相对更简单。

2021、2019、2018、2016(上下年两次)、2014、2010、2009都考过。

---

先了解名词意思:

选项中的这些特殊符号在书上的9.3.1章节的表9-2里面是有说明的。第一个字符【π是获得投影的意思】(用法在479页),后面【右下角跟要查询的字段】(也就是π出来的其实就是列名),要查询多个字段是用逗号分隔。然后【跟一个括号】,括号里面写关系名或者最后可以得出一个关系的计算(比如题干中的表达式,或者第二空的选项。其实【就是一张表】、或者一个查询结果,【有属性而且有数据】)。简单理解就是我们数据库查询的时候select的字段,π就相当于select。本题用数字来表示(几张表连接起来后的)第几个属性,其实根据题干给出的顺序很容易推测出来哪个数字代表什么。一个漏斗旋转90度的这个符号,是连接的意思,就是找前后相同的字段,值也相同的组合起来(连接方式看最下面的流程)。


第一空选项里面的【σ是选择的意思】,用法在479页。这个选择后面【右下角跟条件】(也就是σ出来的其实就是行数据),条件的写法是这个属性在后面跟的表中的第几个作为序号等于(或者其他条件)一个值(比如本题的手机名字),最后再【跟一个括号里面写表名(关系名)】,就像第一空和第三空的形式。相当于select... from 一个表 where ...最后显示出来的【属性对应行数据】,也就是σ会得出一个新的关系式。


所以两个操作的结果【都会形成一个新的关系式】(也就是平时说的新的一张表)。只不过一个是按照列名来查(映射),一个是按数据来查(选择)。两个连接起来就是我们熟悉的整个select语句。

------------------------------

解题:

所以第一空很明显是关系E,因为“销售部1”明显是一个部门名,部门名只有在E表(关系)中才有这个属性。第一空选C。

第二空:商品名称肯定是只有关系C里面有,所以在AB选项里面选择一个。是要选择后面σ出来的第一个和第二个属性(商品号、商品名)还是选择第二个和第三个属性(商品名、库存数)。很明显我们需要使用商品号来进行和EC关联,所以肯定要有第一个商品号。所以选B。

第三空:同上。选C。

------------------------------

完整流程:按照时间顺序:

先运算括号包在一起的第二空和第三空。

第二空过程:分两步,第一步查出所有的该商品名的数据,第二步取出里面的第1、2个字段,商品号、商品名。

所以第二空运算结果:得出了 商品号、商品名。

第三空过程:找出该销售日期的所有EC数据。所以第三空运算结果:得出了:工号、商品号、销售数、销售日期。

再看连接过程:连接发现有商品号相同,那么连接结果为:商品号、商品名、工号、销售数、销售日期。(从连接左边关系开始排序,右边和左边的有重复的就忽略,不重复就接着往后排)。


再看第一空,结果是获取到了所有的E中的关系:工号、姓名、部门名、电话、住址。

再看连接过程:第一空结果和后两空的连接结果进行连接:发现工号相同,所以连接结果为:工号、姓名、部门名、电话、住址、商品号、商品名、销售数、销售日期。


最后验证一下对不对:前面是π1,2,3,7,8,也就是取出相应下标的字段看下是否和题干要求查询结果相同。发现第7、8个就是商品名、销售数,所以完全正确。


请先 登录 后评论