数据库基数关系奥林匹克问题?

时间:2015-04-18 14:23:16

标签: database oracle database-design relational-database cardinality

我遇到了关于当地奥林匹克数据库竞赛的问题。它询问关于涉及关系的表达式的基数,以下哪一项是正确的。

enter image description here

最后一个选项是:如果A是关系R的键,B是关系S的外键,我们有:

enter image description here

任何专家都可以验证哪个是正确的吗?

1 个答案:

答案 0 :(得分:1)

问题的原始版本列出了前三个选项,并试图验证第三个选项是否正确。

  1. 卡(R - S)的上限是卡(R),而不是卡(S)。如果S为空,则卡(R-S)与卡(R)相同。增加S中的元素数量不会增加结果。

  2. Card(R×S)的上限是Card(R)乘以Card(S) - 假设×表示乘积。如果没有,请确定它的含义。

  3. Card(R∪S)的上限是Card(R)加Card(S),因为如果R和R之间没有共同的元素,结果可能包含R的每个元素和S的每个元素S上。

  4. 所以,前三个建议陈述中没有一个对我来说是正确的 - 我必须选择 以上 选项。


    然后问题被改为添加第四个陈述。

    1. 假设R(A)是R的主键,S(B)是S参考R(A)中的外键,则Card(R⋈ A = B S)是R和S在外键上的连接,因此结果中最多可以包含S中的行数(如果违反了外键约束,则会更少,因此S中有一行,R中没有匹配)。
    2. 因此,根据修订后的问题,答案是选项4,即加入。