个性化阅读
专注于IT技术分析

如何解决门的关系代数问题?

在本文中, 让我们讨论关系代数中GATE中常见的问题类型。在阅读本文之前, 你应该了解以下内容基本运算符和扩展运算符在关系代数中。

类型1:给定一个关系代数表达式, 找到结果。

假设你有一个关系Order(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))

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

在此示例中, 我们将订单重命名为Order1和Order2(两者都表示相同的关联顺序)。然后, 我们在Order1和Order2之间应用了条件连接。它将返回其中Order1和Order2的Product_Id和Order_Month相同但Order1和Order2的Agent_Id不同的行。它表示在同JAN份中两个不同的代理商订购相同产品的行。然后, 我们投影Prod_Id。

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

表–

订购

Prod_Id Agent_Id Order_Month
P001 A001 JAN
P002 A002 FEB
P002 A001 FEB
P001 A002 FEB

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

(ρ(Order1, Order)Order1.Prod_Id=Order2.Prod_Id 
                   and Order1.Agent_Id≠Order2.Agent_Id 
                   and Order1.Order_Month=Order2.Order_Month ρ(Order2, Order))
Order1.Prod_Id Order1.Agent_Id Order1.Order_Month Order2.Prod_Id Order2.Agent_Id Order2.Order_Month
P001 A001 JAN P001 A001 JAN
P002 A002 FEB P001 A001 JAN
P002 A001 FEB P001 A001 JAN
P001 A002 FEB P001 A001 JAN
P001 A001 JAN P002 A002 FEB
P002 A002 FEB P002 A002 FEB
P002 A001 FEB P002 A002 FEB
P001 A002 FEB P002 A002 FEB
P001 A001 JAN P002 A001 FEB
P002 A002 FEB P002 A001 FEB
P002 A001 FEB P002 A001 FEB
P001 A002 FEB P002 A001 FEB
P001 A001 JAN P001 A002 FEB
P002 A002 FEB P001 A002 FEB
P002 A001 FEB P001 A002 FEB
P001 A002 FEB P001 A002 FEB

投影Order1.Prod_Id之后, 输出将是P002这是至少两个不同的代理商在同JAN订购的产品的Prod_Id。

注意 -如果我们要查找Prod_Id, 它在同一个月内至少由三个不同的代理排序, 则可以执行以下操作:

∏Order1.Prod_Id (σOrder1.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, 乙, 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个值。

情况1:S.B具有100个不同的值, 并且每个值都与R.B匹配

如何解决门的关系代数问题1

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

情况2:S.B有1个值, 并且此值与R.B匹配

如何解决门的关系代数问题2

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

情况3:S.B具有100个不同的值, 并且这些值均不匹配R.B

如何解决门的关系代数问题3

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

情况4:S.B有1个值, 并且与R.B不匹配

如何解决门的关系代数问题4

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

因此, 元组的最大数量为100, 最小为0。

注意 -如果明确提到SB是RB的外键, 则上面讨论的Case-3和Case-4都是不可能的, 因为SB的值将来自RB的值。因此, 自然联接中的元组的最小和最大数目将是100

文章贡献者声纳图蒂亚。如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。

赞(0)
未经允许不得转载:srcmini » 如何解决门的关系代数问题?

评论 抢沙发

评论前必须登录!