【发布时间】:2020-10-20 08:51:04
【问题描述】:
教授给我的任务如下:R-E Modell
- 假设公司可能位于多个城市。查找位于“Small Bank Corporation”所在城市的所有公司 位于。
现在教授的解决方法如下:
s ← Π city (σ company_name=’Small Bank Corporation’ (company)) temp1 ← Π comp_id, company_name (company) temp2 ← Π comp_id, company_name ((temp1 × s) − company) result ← Π company_name (temp1 − temp2)
我自己发现了一个完全不同的解决方案,其自然连接操作看起来更简单:
我试图做的是使用自然联合操作,它定义为以下关系 r 和 s 在它们的共同属性上连接。所以我试图通过对所有公司名称为“小银行合作”的公司进行投影来获得所有城市名称。之后,我将带有城市名称的表与公司表连接起来,这样我就可以获得所有包含城市名称的公司条目。
company ⋈ Π city (σ company_name=”Small Bank Cooperation” (company)))
我现在的问题是我的解决方案是否也有效,因为它似乎有点微不足道?
【问题讨论】:
-
您不使用“小银行公司”。没有“名称”列。但是您的一般方法是不正确的。 Re relational querying. PS 嵌套 RA 调用形成一种编程语言。因此,即使您实际上并未运行代码,也要尽可能多地提供minimal reproducible example。而且——谷歌“在线运行关系代数”。 PS这是一个“关系划分”的案例。它有常见问题解答和标签。
-
您实际上并没有解释您加入的城市名称的“所有包含城市名称的公司条目” - 即只是“SBC” - 是所请求的公司集。 (不是。)
-
为什么它不是请求的公司集?我得到一张小银行合作所在城市的表格,不是吗?之后,我使用这些城市名称并寻找具有共同城市属性的公司(自然加入)。
-
您的评论和帖子不清楚。当您没有明确证明时,请不要要求我们反驳您。 (你的错误理由导致了错误的代码。)使用足够多的单词、句子和对部分示例的引用来清楚完整地表达你的意思。在给出业务关系(船)/关联或表(基础或查询结果)时,说明其中的一行根据其列值说明了业务情况。 (子表达式返回(所有)SBC 城市。但您最终不会返回所有这些城市中的公司,即在每个城市中;您至少返回其中一个中的公司。)
-
我刚才说的是,你的任务是所有 SBC 城市的公司,即每个 SBC 城市,但你至少返回一个 SBC 城市的公司。我建议您通过一个示例,运行一个示例,为每个子表达式的表提供成员资格条件,阅读有关划分并阅读如何构建查询(还以文本形式提供表定义并将您的代码格式化为代码未包装的散文),但你没有;但我希望你这样做。 (再次:关于连接返回的最后一步是不合理的)。 (我正在编辑您的查询的答案。)
标签: relational-algebra relational relational-division