7 sql join tuples natural-join relational-database
我遇到了一个问题
考虑以下与学生有关的关系模式
其中主键显示为带下划线.Student和Enroll表中的元组数分别为120和8.(学生*注册)中可以存在的最大和最小元组数是多少,其中'*'表示自然连接?
据我所知.最大元组应该是8,最小元组也应该是8,因为对于每个(rollnum,course),学生应该有一个卷数.任何可以在这方面提供帮助的人
希望您了解自然联接的确切含义。您可以在这里查看。
如果表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
希望这可以帮助。
如果存在参考约束以确保 Enroll 中的每个 rollno 也必须出现在 Student 中,那么您对最小值和最大值的答案为 8 将是正确的。然而,这个问题实际上并没有提到任何这样的约束。没有必要仅仅因为 rollno 属性出现在两个表中就假设 RI 约束存在。所以最好的答案是最小 0 和最大 8。如果是多项选择题并且 0,8 不是给出的答案之一,那么请回答 8,8 - 并告诉您的老师问题不清楚。
| 归档时间: |
|
| 查看次数: |
13052 次 |
| 最近记录: |