7

我遇到了一个问题,指出

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

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

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

我已经在互联网上看到了几个这样这样的解决方案

据我了解。最大元组应为 8,最小也应为 8,因为对于每个 (rollnum,course),Students 中都应该有一个 roll num。任何可以在这方面提供帮助的人

4

4 回答 4

7

我希望,您了解 Natural Join 到底是什么。你可以在这里查看

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

考虑以下两个表

表 R(具有属性 A 和 C)

一个 | C
----+----
 1 | 2
 3 | 2

表 S(具有属性 B 和 C)

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

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

一个 | 乙| 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)

一个 | 乙
----+----
 1 | 2
 3 | 2

表 S(具有属性 C 和 D)

C | D
----+----
 4 | 2
 5 | 2

自然连接的结果 R * S

一个 | 乙| C | D
---+---+----+----
 1 | 2 | 4 | 2
 1 | 2 | 5 | 2
 3 | 2 | 4 | 2
 3 | 2 | 5 | 2

希望这可以帮助。

于 2016-01-09T10:46:56.730 回答
5

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

于 2014-03-28T11:49:36.017 回答
-1

如果您询问可能出现在 R 和 S 的自然连接中的最大元组数,则它是两个元组的笛卡尔积

于 2017-01-09T13:52:04.940 回答
-1

是的答案应该是 8,8 。因为 Rollno 是 Student 表中的键,而 rollno,courseno 是复合键。Student 和登记表之间的关系是 1:M 。所以元组的最大数量与多边相同,即。8 如果外键存在,则最小元组数为 8,否则为 0。

所以答案是 8,8 。

于 2018-12-22T00:47:17.783 回答