如何解决GATE的关系代数问题

在这篇文章中,让我们讨论关系代数中常见的问题类型。在阅读本文之前,你应该对 基本运算符 扩展运算符 在关系代数中。

null

1型:给定一个关系代数表达式,找到结果。 假设您有一个关系订单(Prod_Id、Agent_Id、Order_Month),您必须找出下面的代数表达式将返回什么。

Order1.Prod_Id (ρ(Order1,Order) Order1.Prod_Id=Order2.Prod_Id                                           and Order1.Agent_Id≠Order2.Agent_Id                                           and Order1.Order_Month=Order2.Order_Month ρ(Order2,Order)) 

从最里面的括号开始处理表达式。

在本例中,我们将order重命名为Order1和Order2(两者表示相同的关系顺序)。然后我们在Order1和Order2之间应用了条件连接。它将返回以下行:Order1和Order2的Product_Id和Order_Month相同,但Order1和Order2的Agent_Id不同。它意味着同一个月内两个不同代理订购同一产品的行。然后我们投射产品Id。

因此,最终输出将返回由不同代理商在同一个月订购的产品的Prod_Id。我们可以通过采集样本数据来做到这一点。让订单关系由以下数据组成。

表- 顺序

产品标识 探员 每月订购
P001 A001
P002 A002 功能电子块
P002 A001 功能电子块
P001 A002 功能电子块

当我们应用以下表达式时,将选择以蓝色突出显示的行。

(ρ(Order1,Order)Order1.Prod_Id=Order2.Prod_Id                    and Order1.Agent_Id≠Order2.Agent_Id                    and Order1.Order_Month=Order2.Order_Month ρ(Order2,Order))
订单1。产品标识 订单1。探员 订单1。每月订购 订单2。产品标识 订单2。探员 订单2。每月订购
P001 A001 P001 A001
P002 A002 功能电子块 P001 A001
P002 A001 功能电子块 P001 A001
P001 A002 功能电子块 P001 A001
P001 A001 P002 A002 功能电子块
P002 A002 功能电子块 P002 A002 功能电子块
P002 A001 功能电子块 P002 A002 功能电子块
P001 A002 功能电子块 P002 A002 功能电子块
P001 A001 P002 A001 功能电子块
P002 A002 功能电子块 P002 A001 功能电子块
P002 A001 功能电子块 P002 A001 功能电子块
P001 A002 功能电子块 P002 A001 功能电子块
P001 A001 P001 A002 功能电子块
P002 A002 功能电子块 P001 A002 功能电子块
P002 A001 功能电子块 P001 A002 功能电子块
P001 A002 功能电子块 P001 A002 功能电子块

在1。Prod_Id,输出将为 P002 这是在同一个月内由至少两个不同代理商订购的产品的生产Id。

注—— 如果我们想找到同一个月内至少有三家不同代理商订购的产品Id,可以通过以下方式完成:

Order1.Prod_IdOrder1.Prod_Id=Order2.Prod_Id                                  and Order1.Prod_Id=Order3.Prod_Id                                  and  Order1.Agent_Id≠Order2.Agent_Id                                  and Order1.Agent_Id≠Order3.Agent_Id                                  and Order2.Agent_Id≠Order3.Agent_Id                                  and Order1.Order_Month=Order2.Order_Month                                  and Order1.Order_Month=Order3.Order_Month(ρ(Order1,Order)X ρ(Order2,Order)X ρ(Order3,Order))) 

类型2:给定两个关系,自然连接后的最大元组数和最小元组数是多少?

考虑下面的关系r(a, B ,C)和S( B、 D ,E)主键带下划线。关系R包含200个元组,关系S包含100个元组。自然连接R和S中可能的最大元组数是多少?

为了解决这类问题,首先,我们将看到哪个属性将发生自然连接。自然连接选择公共属性值相等的行。在本例中,表达式如下所示:

σR.B=S.B (RX S) 

在关系R中,属性B是主键。所以关系R将有200个不同的B值。另一方面,关系S将BD作为主键。所以属性B可以有100个不同的值,或者所有行都有一个值。

案例1: S.B有100个不同的值,每个值都与R.B匹配

图片[1]-如何解决GATE的关系代数问题-yiteyi-C++库

在这种情况下,S中的每个B值都将与R中的一个B值匹配。因此自然连接将有100个元组。

案例2: S.B有1个值,该值与R.B匹配

图片[2]-如何解决GATE的关系代数问题-yiteyi-C++库

在这种情况下,S中的每个B值都将与R中的一个B值匹配。因此自然连接将有100个元组。

案例3: S.B有100个不同的值,这些值都与R.B不匹配

图片[3]-如何解决GATE的关系代数问题-yiteyi-C++库

在这种情况下,S中的B值与R中的B值不匹配。因此自然连接将有0个元组。

案例4: S.B有1个值,它与R.B不匹配

图片[4]-如何解决GATE的关系代数问题-yiteyi-C++库

在这种情况下,S中的B值与R中的B值不匹配。因此自然连接将有0个元组。

所以元组的最大数量是100,最小数量是0。

注—— 如果明确提到S.B是R.B的外键,那么上面讨论的案例3和案例4是不可能的,因为S.B的值将来自R.B的值。因此,自然连接中的最小和最大元组数将为100。

参考—— 数据库系统基础bu Navathe

文章作者 奏鸣曲 。如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请发表评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享