Relational algebra 此自然联接操作是否正确使用?(关系代数)

Relational algebra 此自然联接操作是否正确使用?(关系代数),relational-algebra,relational,relational-division,Relational Algebra,Relational,Relational Division,教授给了我以下任务: 假设这些公司可能位于多个城市。查找“小型银行公司”所在城市的所有公司 定位 现在,教授的解决方案如下: 我自己发现了一个完全不同的解决方案,它使用了一个自然的连接操作,看起来简单得多: 我试图做的是使用自然联合运算,它的定义如下:关系r和s在它们的公共属性上连接。因此,我试图通过对一系列公司名称为“小型银行合作”的公司进行投影来获得所有城市的名称。之后,我将带有城市名称的表与公司表连接起来,这样我就可以得到所有包含城市名称的公司条目 company ⋈ Π city (σ

教授给了我以下任务:

  • 假设这些公司可能位于多个城市。查找“小型银行公司”所在城市的所有公司 定位
  • 现在,教授的解决方案如下:

    我自己发现了一个完全不同的解决方案,它使用了一个自然的连接操作,看起来简单得多:

    我试图做的是使用自然联合运算,它的定义如下:关系r和s在它们的公共属性上连接。因此,我试图通过对一系列公司名称为“小型银行合作”的公司进行投影来获得所有城市的名称。之后,我将带有城市名称的表与公司表连接起来,这样我就可以得到所有包含城市名称的公司条目

    company ⋈ Π city (σ company_name=”Small Bank Cooperation” (company)))
    
    我现在的问题是,我的解决方案是否也有效,因为它似乎有点微不足道?

    你的解决方案不一样

    它使用关系代数的一个版本,其中标题是属性名称集

    每个查询表达式都有一个关联的(特征) 谓词——由属性参数化的语句模板。元组 使谓词成为一个真正的命题——语句——的 关系

    我们得到了作为关系名称的表达式的谓词

    让查询表达式E具有谓词E。然后:

    • R⨝ S
      具有谓词
      r和S
    • R∪ S
      具有谓词
      r或S
    • R-S
      具有谓词
      R而不是S
    • σp(R)
      具有谓词
      R和p
    • πA(R)
      具有谓词
      存在
      R的非A属性
      [R]
    当我们想要元组满足某个谓词时,我们找到了一种方法 用关系运算符表示该谓词 给定关系谓词的转换。相应的查询 返回/计算元组

    你的解决方案

    company ⋈ Π city (σ company_name=”Small Bank Corporation” (company)))
    
    行在哪里

        company company_id named company_name is in city
    AND FOR SOME company_id & company_name [
                company company_id named company_name is in city
            AND company_name=”Small Bank Corporation”]
    
        some company named company_name is in some city
    AND some company named ”Small Bank Corporation” is in that city
    

    您返回的行的列数超过了公司名称。但是你的公司不是被要求的公司

    将您的行投影到company_name上会显示其中的行

        company company_id named company_name is in city
    AND FOR SOME company_id & company_name [
                company company_id named company_name is in city
            AND company_name=”Small Bank Corporation”]
    
        some company named company_name is in some city
    AND some company named ”Small Bank Corporation” is in that city
    
    在那之后,我加入了这家公司的城市名称 表,这样我就可以得到所有的公司入口,这些入口中都有城市名称 它

    这还不清楚你得到了什么。但是,您所在行中的公司至少位于一个SBC城市。该请求适用于所有SBC城市:

    位于“小银行公司”所在城市的公司

    我提供的链接告诉您如何组合查询,以及如何在查询结果规范和返回结果的关系代数表达式之间进行转换

    当您看到一个与其他行的“every”或“all”匹配的行的查询时,您可以预期查询的这一部分涉及或涉及一些相关的习惯用法。确切的代数取决于需求(通常表达得很差/含糊不清)的意图。例如,当没有这样的城市时,“位于其中的每个城市的公司”应该是没有公司(部门)还是所有公司(相关成语)。(对你的作业的正常数学解释是后者。)例如,他们到底是想在所有这样的城市里有公司,还是至少在所有这样的城市里都有公司

    (它有助于避免在“查找”和“返回”之后出现“所有”和“每一个”,因为这是多余的。)




    您不使用“小型银行公司”。没有“名称”一栏。但你的一般方法是不对的。PS嵌套的RA调用形成了一种编程语言。因此,即使你没有实际运行代码,也要尽可能多地给出一个。但是——谷歌“在线运行关系代数”。PS这是一个“关系划分”的例子。它有FAQ和标签。你不需要ally解释您加入的城市名称的“所有包含城市名称的公司入口”——即“SBC”——是如何成为所请求的公司集合的(不是)为什么这不是所要求的一组公司?我得到了一张小银行合作所在城市的表格,不是吗?然后我取这些城市的名字,寻找具有共同城市属性(自然加入)的公司。你的评论和帖子不清楚。如果你没有明确的理由,请不要要求我们反驳你。(你错误的理由导致了错误的代码。)使用足够多的单词、句子和对部分示例的引用,以清楚、完整地表达你的意思。在给出业务关系(ship)/关联或表(基本或查询结果)时,根据列值说明其中一行对业务情况的说明。(子表达式返回(所有)SBC城市。但你不会最终在所有这些城市都返回公司(即在每一个城市;你至少在其中一个城市返回公司。)我刚才说的是,你的任务是所有SBC城市的公司,即每个SBC城市,但你至少返回一个SBC城市的公司。我建议你通过一个示例,运行一个示例,为每个子表达式的表提供成员条件,阅读有关部门的内容,阅读如何构建查询(也要以文本形式给出表定义,并将代码格式化为代码而不是包装的散文),但您没有这样做;但我希望您能这样做。(再次说明:您关于连接返回的内容的最后一步是不合理的)。(我正在编辑一个关于您的查询的答案。)
        some company named company_name is in some city
    AND some company named ”Small Bank Corporation” is in that city