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

在本文中, 让我们讨论关系代数中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_IdAgent_IdOrder_Month
P001A001JAN
P002A002FEB
P002A001FEB
P001A002FEB

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

(ρ(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_IdOrder1.Agent_IdOrder1.Order_MonthOrder2.Prod_IdOrder2.Agent_IdOrder2.Order_Month
P001A001JANP001A001JAN
P002A002FEBP001A001JAN
P002A001FEBP001A001JAN
P001A002FEBP001A001JAN
P001A001JANP002A002FEB
P002A002FEBP002A002FEB
P002A001FEBP002A002FEB
P001A002FEBP002A002FEB
P001A001JANP002A001FEB
P002A002FEBP002A001FEB
P002A001FEBP002A001FEB
P001A002FEBP002A001FEB
P001A001JANP001A002FEB
P002A002FEBP001A002FEB
P002A001FEBP001A002FEB
P001A002FEBP001A002FEB

投影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

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

以上是 如何解决门的关系代数问题? 的全部内容, 来源链接: utcz.com/p/202674.html

回到顶部