【问题标题】:How to get redundant consistent (duplicate) data from the database using relational algebra?如何使用关系代数从数据库中获取冗余一致(重复)数据?
【发布时间】:2016-11-02 09:09:12
【问题描述】:

我有 2 个关系(表):

商店(邮政编码 (PK)、SuburbName、BottleShopName (PK)、地址),
人员(PersonName (PK)、Postcode (PK)、AlcoholConsumption)

如果我写下一个查询,该查询将返回 使用关系代数的数据库及其郊区,它看起来像这样:

π BottleShopName、SuburbName(商店)。

此查询的限制是它不会显示任何冗余数据。假设如果有两个不同的瓶子商店名称相同,并且在同一个郊区具有相同的邮政编码,上面的查询将忽略第二个。

我应该对此查询进行哪些修改才能使用关系代数显式获得这两个结果?

【问题讨论】:

  • 当你在谷歌上搜索“site:stackoverflow.com(重复或重复)关系代数”时,你学到了什么?
  • 答案应该给你SQL吗?还是关系代数?

标签: mysql database-design duplicates relational-algebra


【解决方案1】:

由于此问题缺少使用过的查询,因此我对您的问题的理解如下:

SELECT BottleShopName, SuburbName FROM Shops JOIN People ON People.Postcode = Shops.Postcode WHERE People.PersonName = ?

【讨论】:

    【解决方案2】:

    假设如果有两个不同的瓶子商店名称相同,并且在同一个郊区具有相同的邮政编码,上面的查询将忽略第二个。

    关系代数关系是元组的集合。它们不能有两个属性值相同的元组。

    关系包含从给定的谓词做出真实陈述的行--由属性名称参数化的填空句模板。

    假设 Shops 包含以下行:“一家瓶装店的邮政编码 Postcode、郊区名称 SuburbName、名称 BottleShopName 和地址 地址”。如果对于 PostcodeSuburbNameBottleShopNameAddress 的某些特定值,存在多个商店邮政编码 Postcode,郊区名称 SuburbName,名称 BottleShopName 和地址 Address 那么仍然只有一个元组关系中的值。

    如果可能有多个商店并且您想知道这一点,那么您需要一个不同的谓词。您可以统计类似的商店:“N 瓶商店有邮政编码 Postcode,郊区名称 SuburbName,名称 BottleShopName em> 和地址地址”。或者您可以为每个商店分配一个唯一的 nameid,然后使用:“由 id 标识的瓶装商店有邮政编码 邮政编码、郊区名称​​SuburbName、名称​​BottleShopName和地址Address”。 (仍然不能重复。)

    关系是关系模型中相似元组的集合的原因是,如果关系 R 和 S 有谓词 r 和 s 那么:
    R JOIN S 有谓词(保存元组) r AND s,
    R UNION S 有谓词(保存元组) r OR s,
    R MINUS S 有谓词(保存元组) r AND NOT s,
    RESTRICT condition R 有谓词(保存元组 where) r AND condition,
    RENAME A N R 的谓词(保存元组 where)r 用 A 替换为 N,并且
    PROJECT A R 有谓词(保存元组 where)对于某些 A 以外的属性,r。
    即一个查询也有一个谓词,它的元组也是使它的谓词成为真实语句的元组。所以查询意味着编写一个我们想要满足元组的谓词。

    在 SQL 中,表可以有重复的行。因此,您无法以这种方式推断在给定应用程序情况下表中应该包含哪些行,表根据其中的行说明应用程序情况,或者查询根据其输入要求哪些行,其操作者和应用情况——特殊情况除外。 (例如,通过在表中来谈论一行陈述某事是没有意义的。)这可能是 SQL 违反关系模型的最深刻的方式,并且毫无意义地难以使用。

    【讨论】:

      猜你喜欢
      • 2018-05-30
      • 1970-01-01
      • 2012-04-21
      • 1970-01-01
      • 2018-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多