📜  转换关系表达式

📅  最后修改于: 2020-12-13 05:21:46             🧑  作者: Mango

转换关系表达式

优化程序的第一步是实现逻辑上与给定表达式等效的表达式。为了实现这一步骤,我们使用了等效规则,该规则描述了将生成的表达式转换为逻辑上等效的表达式的方法。

尽管我们可以通过不同的方式来表达查询,但是费用却不同。但是,为了高效地表达查询,我们将学习创建给定表达式的替代表达式以及等效表达式,而不是使用给定表达式。如果两个关系代数表达式在每个合法数据库实例上生成相同的元组集,则它们是等效的。合法数据库实例是指满足数据库架构中指定的所有完整性约束的数据库系统。但是,生成的元组的序列在两个表达式中可能都不同,但是直到它们生成相同的元组集时,它们才被认为是等效的。

等价规则

等价规则表示两种形式的表达式是相同或相等的,因为这两种表达式在任何合法数据库实例上都产生相同的输出。这意味着我们可以用第二种形式的表达式替换第一种形式的表达式,并用第一种形式的表达式替换第二种形式的表达式。因此,查询评估计划的优化器使用这种等效规则或方法将表达式转换为逻辑上等效的表达式。

优化器对关系代数表达式使用各种等价规则来转换关系表达式。为了描述每个规则,我们将使用以下符号:

θ,θ1,θ2 …:用于表示谓词。

L 1 ,L 2 ,L 3 :用于表示属性列表。

E,E 1 ,E 2 …。 :表示关系代数表达式。

让我们讨论一些等效规则:

规则1:级联σ

该规则说明将联合选择操作解构为一系列单个选择。这种转换称为σ级联

σθ1ᴧθ2(E)=σθ1(σθ2(E))

规则2:可交换规则

a)该规则说明选择操作是可交换的。

σθ1 ( σθ2 (E))= σθ2 ( σθ1 (E))

b)Theta Join(θ)是可交换的。

ë1⋈θe 2的= E 2⋈θë1(θ为下标与加入符号)

但是,在theta联接的情况下,如果考虑属性顺序,则等效规则不起作用。自然连接是Theta连接的特例,自然连接也是可交换的。

但是,在theta联接的情况下,如果考虑属性顺序,则等效规则不起作用。自然连接是Theta连接的特例,自然连接也是可交换的。

规则3: ∏的级联

该规则指出,我们只需要按投影操作的顺序进行最后的操作,其他操作则被省略。这样的变换称为的级联

∏L1(∏L2(。。。(∏Ln(E))..))= ∏L1(E)

规则4:我们可以将选择与笛卡尔乘积以及theta联接相结合

规则4:我们可以将选择与笛卡尔乘积以及theta联接相结合

  • σθ(E 1×e 2的)= E1θ⋈e 2
  • σθ1(E 1⋈θ2ë2)= E 1⋈θ1ᴧθ2e 2

规则5:关联规则

a)该规则指出自然联接操作是关联的。

(E1⋈E2)⋈E3 = E1⋈(E2⋈E3)

b)Theta联接与以下表达式关联:

(E 1⋈θ1ë2)⋈θ2ᴧθ3E 3 = E 1⋈θ1ᴧθ3(E 2⋈θ2E 3)

在θ关联性中,θ2仅涉及E2和E3的属性。可能存在空条件的机会,因此得出结论,笛卡尔积也是有关联的。

注意:关联性和联接操作的可交换性等价规则对于查询优化中的联接重新排序至关重要。

规则6:选择操作在Theta联接上的分布。

在以下两个条件下,选择操作分布在theta-join操作上:

a)在所述选择条件的所有属性θ0只包括属性正被加入表达式之一的。

σθ0(E 1⋈θe 2)=(σθ0(E 1))⋈θe 2

b)如果θ1所述选择条件只涉及Ë1的属性,和θ2仅包括e 2的的属性。

σθ1ꓥθ2(E 1⋈θe 2)=(σθ1(E 1))⋈θ((σθ2(E 2))

规则7:在theta连接上进行投影操作的分布。

在以下两个条件下,选择操作分布在theta-join操作上:

a)假设所述连接条件θ仅包括L 1中υL E 1和E 2个的属性。然后,我们得到如下表达式:

ΠL1υL2(E 1⋈θe 2)=(ΠL1(E 1))⋈θ(ΠL2(E 2))

b)中假设一个连接为E 1⋈e 2的。表达式E 1和E 2都具有属性集L 1和L 2 。假设两个属性L 3和L 4,其中L 3是表达E 1,参与θ的属性加入条件,但不是以L 大号2类似地,L 4是仅在θ所涉及的表达式E 2的属性连接条件,而不是L 1中υ大号2点的属性。因此,我们得到以下表达式:

ΠL1υL2(E 1⋈θe 2)=ΠL1υL2((ΠL1υL3(E 1))⋈θ((ΠL2υL4(E 2)))

规则8:并集和交集操作是可交换的。

ë1υe 2的= E 2υë1

ë1ꓵe 2的= E 2ꓵë1

但是,集差运算不是可交换的。

规则9:并集和相交集操作是关联的。

(E 1υë2)υE 3 = E 1υ(E 2υE 3)

(E 1ꓵë2)ꓵE 3 = E 1ꓵ(E 2ꓵE 3)

规则10:选择操作在相交,并集和集合差操作上的分布。

下面的表达式显示了在设置差异运算上执行的分布。

σP(E 1 -电子2)=σP(E 1)σP(E 2)

通过用-替换,我们可以类似地在υ和distribute上分配选择操作。此外,我们得到:

σp (E 1 -E 2 )= σp (E 1 )-E 2

规则11 :投影操作在联合操作上的分布。

该规则表明,我们可以为给定的表达式将投影操作分配给联合操作。

ΠL(E 1υë2)=(ΠL(E 1))υ(ΠL(E 2))

除了这些讨论的等效规则外,还有其他各种等效规则。