gpt4 book ai didi

relational-algebra - 寻求扩展的除法运算符解释

转载 作者:行者123 更新时间:2023-12-04 18:41:36 28 4
gpt4 key购买 nike

我正在 Inside Microsoft SQL Server 2008: T-SQL Querying by Itzik Ben-Gan, Lubor Kollar, Dejan Sarka, and Steve Kass 中阅读有关 Codd 的八个原始运算符的信息并且不了解 Divide 运算符。

定义除法运算符的引用:

“A divisor relation is used to partition a dividend relation and produce a quotient relation. The quotient relation is made up of those values of one column from the dividend table for which the second column contains all of the values in the divisor.”



本声明与 Wikipedia's definition and example一致.

“The formula for the Divide operator includes three relations: a divide by b per c, where a is the dividend, b is the divisor, and c is the mediator relation. Let relation a have attributes A and relation b attributes B. The Divide operator returns a relation that includes of all tuples from divisor such that a tuple {A, B} appears in the mediator relation for all tuples from divisor relation.”



下图用于演示此声明。我相信这些关系按以下顺序呈现:被除数、除数、中介和最终结果。

enter image description here

第二个关系(除数)对于元组有 {a, x}、{a, z}、{b, x} 和 {b, z}。我的思考过程是这样的,因为有元组 {b, x} 和 {b, z},所以 b 应该包含在最终结果中。我已经在这本书的网站(链接在这篇文章的开头)上检查了书的更正,并且确定我错了。

为什么图表示例的结果是 a 而不是 a 和 b?

最佳答案

关系部门一直是一团糟,而且很可能会一直保持这种状态。它最初被发明为关系查询系统能够制定/回答问题的方法,例如“订阅了所有可能的保险单类型的客户列表是什么”。也就是说,它旨在作为制定查询的工具,这些查询涉及某种通用量化作为确定结果集的谓词。

进一步详细说明我的客户/保单示例,让我们假设“所有可能的保险单类型”集本身是随时间变化的,即随着时间的推移,可能会出现新的保单类型,而其他保单类型可能会停止使用。让我们进一步假设某个查询中的“所有可能的保险单类型”具体意味着“当前开放供客户订阅的所有保单类型”(即,已停产的保单类型不属于这组“所有” "类型)。

假设某一时刻的这组“所有可能的策略类型”是{TYPE1, TYPE3}。 TYPE2 已停产。我们还假设客户 ES 仍然有一个 TYPE2 类型的策略,显然可以追溯到它停产之前。因此,客户 ES 具有 {TYPE1, TYPE2, TYPE3} 类型的策略。

现在回答此客户是否具有“当前开放订阅的所有策略类型”的问题。你的回答应该是肯定的"is"。您可能会了解这是怎么回事:关系划分以两个集合的比较为中心。一个是“比较”(客户订阅的策略类型集),另一个是“引用”(当前开放订阅的策略类型集)。

现在至少可以在集合之间进行两个有用的比较:一个是相等性,另一个是集合包含(子集)。在某些查询情况下,您需要相等性测试,而在其他情况下,您需要包含测试。被称为“除法”的关系运算符(无论它的味道如何)都不允许进行这种区分。我认为您要问的正是这种现象,答案很简单,可以这么说,选择是由设计做出的,并且硬连线到运营商的定义中。它使运算符在其定义符合您的需求的情况下“有用”,而在其他情况下则无用。

好消息是,当您必须为关系除法拼出 SQL 时,相等除法和包含除法之间没有太大区别(尽管代数运算符是,根据定义,只有两者之一,而另一个甚至根本没有代数运算符)。主要问题是集合相等本身在 SQL 中表达起来非常困惑,而且“在关系除法查询中”也同样如此......

然后还有 philip 已经提出的所有有效观点。阅读它们,但要非常仔细。

关于relational-algebra - 寻求扩展的除法运算符解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24770998/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com