在本文中, 让我们讨论关系代数中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 |
注意 -如果我们要查找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匹配
文章图片
在这种情况下, S中B的每个值都将与R中B的值匹配。因此自然联接将具有100个元组。
情况2:S.B有1个值, 并且此值与R.B匹配
文章图片
在这种情况下, S中B的每个值都将与R中B的值匹配。因此自然联接将具有100个元组。
情况3:S.B具有100个不同的值, 并且这些值均不匹配R.B
文章图片
在这种情况下, S中的B值不会与R中的B值匹配。因此自然联接将具有0个元组。
情况4:S.B有1个值, 并且与R.B不匹配
文章图片
在这种情况下, S中的B值不会与R中的B值匹配。因此自然联接将具有0个元组。
因此, 元组的最大数量为100, 最小为0。
注意 -如果明确提到SB是RB的外键, 则上面讨论的Case-3和Case-4都是不可能的, 因为SB的值将来自RB的值。因此, 自然联接中的元组的最小和最大数目将是100
文章贡献者声纳图蒂亚。如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。
推荐阅读
- win7系统架设asp 设置添加电脑公司Win7系统ASP技巧的办法
- 如何在Linux中设置防火墙()
- 如何仅使用CSS在HTML列表中设置项目符号颜色()
- C#中如何安排线程执行(执行多线程?)
- 如何从PHP运行JavaScript()
- 如何从C中的函数返回指针()
- 如何限制C++中对象的动态分配()
- 如何删除内联块元素之间的空间()
- 如何在PHP中删除非字母数字字符()