自然连接中的最大和最小元组数

7 sql join tuples natural-join relational-database

我遇到了一个问题

考虑以下与学生有关的关系模式

  • 数据库:学生(rollno,姓名,地址)
  • 注册(rollno,courseno,coursename)

其中主键显示为带下划线.Student和Enroll表中的元组数分别为120和8.(学生*注册)中可以存在的最大和最小元组数是多少,其中'*'表示自然连接?

我已经看到了在互联网上几种解决方案,像这样

据我所知.最大元组应该是8,最小元组也应该是8,因为对于每个(rollnum,course),学生应该有一个卷数.任何可以在这方面提供帮助的人

Sub*_*ash 6

希望您了解自然联接的确切含义。您可以在这里查看

如果表R和S包含公共属性,并且两个表中每个元组中该属性的值相同,则自然联接将得到n * m个元组,因为它将返回所有元组组合。

考虑下面的两个表

表R(具有属性A和C)

A | C
---- + ----
 1 | 2
 3 | 2

表S(具有属性B和C)

B | C
---- + ----
 4 | 2
 5 | 2
 6 | 2

自然联接R * S的结果(如果两个表中的属性C的域相同)

A | B | C
--- + --- + ----
 1 | 4 | 2
 1 | 5 | 2
 1 | 6 | 2
 3 | 4 | 2
 3 | 5 | 2
 3 | 6 | 2  

您可以看到R和S都包含属性C,每个元组中的值均为2。表R包含2个元组,表S包含3个元组,其中Result表包含2 * 3 = 6个元组。

此外,在执行自然联接时,如果两个关系之间没有共同的属性,则自然联接将表现为笛卡尔积。在这种情况下,您显然会将mxn作为最大元组数。

考虑下面的两个表

表R(具有属性A和B)

A | 乙
---- + ----
 1 | 2
 3 | 2

表S(具有属性C和D)

C | d
---- + ----
 4 | 2
 5 | 2

自然加入的结果R * S

A | B | C | d
--- + --- + ---- + ----
 1 | 2 | 4 | 2
 1 | 2 | 5 | 2
 3 | 2 | 4 | 2
 3 | 2 | 5 | 2

希望这可以帮助。


nvo*_*gel 5

如果存在参考约束以确保 Enroll 中的每个 rollno 也必须出现在 Student 中,那么您对最小值和最大值的答案为 8 将是正确的。然而,这个问题实际上并没有提到任何这样的约束。没有必要仅仅因为 rollno 属性出现在两个表中就假设 RI 约束存在。所以最好的答案是最小 0 和最大 8。如果是多项选择题并且 0,8 不是给出的答案之一,那么请回答 8,8 - 并告诉您的老师问题不清楚。