<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Chase_%28algorithm%29</id>
	<title>Chase (algorithm) - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Chase_%28algorithm%29"/>
	<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Chase_(algorithm)&amp;action=history"/>
	<updated>2026-05-13T14:56:17Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>http://debianws.lexgopc.com/wiki143/index.php?title=Chase_(algorithm)&amp;diff=7200045&amp;oldid=prev</id>
		<title>imported&gt;Jac16888: rm sig</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Chase_(algorithm)&amp;diff=7200045&amp;oldid=prev"/>
		<updated>2021-09-26T17:34:04Z</updated>

		<summary type="html">&lt;p&gt;rm sig&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;The chase&amp;#039;&amp;#039;&amp;#039; is a simple [[fixed-point iteration|fixed-point algorithm]] testing and enforcing implication of data dependencies in [[database|database systems]]. It plays important roles in [[database theory]] as well as in practice.&lt;br /&gt;
It is used, directly or indirectly, on an everyday basis by people who design databases, and it is used in commercial systems to reason about the consistency and correctness of a data design.{{citation needed|date=November 2012}} New applications of the chase in meta-data management and data exchange are still being discovered.&lt;br /&gt;
&lt;br /&gt;
The chase has its origins in two seminal papers of 1979, one by [[Alfred V. Aho]], [[Catriel Beeri]], and [[Jeffrey D. Ullman]]&amp;lt;ref&amp;gt;[[Alfred V. Aho]], [[Catriel Beeri]], and [[Jeffrey D. Ullman]]: &amp;quot;The Theory of Joins in Relational Databases&amp;quot;, ACM Trans. Datab. Syst. 4(3):297-314, 1979.&amp;lt;/ref&amp;gt; and the other by [[David Maier]], [[Alberto O. Mendelzon]], and [[Yehoshua Sagiv]].&amp;lt;ref&amp;gt;&lt;br /&gt;
[[David Maier]], [[Alberto O. Mendelzon]], and [[Yehoshua Sagiv]]: &amp;quot;Testing Implications of Data Dependencies&amp;quot;. ACM Trans. Datab. Syst. 4(4):455-469, 1979.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In its simplest application the chase is used for testing whether the [[projection (relational algebra)|projection]] of a [[relation schema]] constrained by some [[functional dependency|functional dependencies]] onto a given decomposition can be [[join dependency|recovered by rejoining the projections]]. Let &amp;#039;&amp;#039;t&amp;#039;&amp;#039; be a tuple in &amp;lt;math&amp;gt;\pi_{S_1}(R) \bowtie \pi_{S_2}(R) \bowtie ... \bowtie \pi_{S_k}(R)&amp;lt;/math&amp;gt; where &amp;#039;&amp;#039;R&amp;#039;&amp;#039; is a [[relation (database)|relation]] and &amp;#039;&amp;#039;F&amp;#039;&amp;#039; is a set of functional dependencies (FD). If tuples in &amp;#039;&amp;#039;R&amp;#039;&amp;#039; are represented as &amp;#039;&amp;#039;t&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, ..., t&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039;, the join of the projections of each &amp;#039;&amp;#039;t&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039; should agree with &amp;#039;&amp;#039;t&amp;#039;&amp;#039; on &amp;lt;math&amp;gt;\pi_{S_i}(R)&amp;lt;/math&amp;gt; where &amp;#039;&amp;#039;i&amp;#039;&amp;#039; = 1, 2, ..., &amp;#039;&amp;#039;k&amp;#039;&amp;#039;. If &amp;#039;&amp;#039;t&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039; is not on &amp;lt;math&amp;gt;\pi_{S_i}(R)&amp;lt;/math&amp;gt;, the value is unknown.&lt;br /&gt;
&lt;br /&gt;
The chase can be done by drawing a tableau (which is the same formalism used in [[tableau query]]). Suppose &amp;#039;&amp;#039;R&amp;#039;&amp;#039; has [[attribute (computing)|attributes]] &amp;#039;&amp;#039;A, B, ...&amp;#039;&amp;#039; and components of &amp;#039;&amp;#039;t&amp;#039;&amp;#039; are &amp;#039;&amp;#039;a, b, ...&amp;#039;&amp;#039;. For &amp;#039;&amp;#039;t&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039; use the same letter as &amp;#039;&amp;#039;t&amp;#039;&amp;#039; in the components that are in S&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;i&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt; but subscript the letter with &amp;#039;&amp;#039;i&amp;#039;&amp;#039; if the component is not in S&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;i&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt;. Then, &amp;#039;&amp;#039;t&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039; will agree with &amp;#039;&amp;#039;t&amp;#039;&amp;#039; if it is in S&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;i&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt; and will have a unique value otherwise.&lt;br /&gt;
&lt;br /&gt;
The chase process is [[confluence (rewriting system)|confluent]]. There exist implementations of the chase algorithm,&amp;lt;ref&amp;gt;[[Michael Benedikt (computer scientist)|Michael Benedikt]], [[George Konstantinidis]], [[Giansalvatore Mecca]], [[Boris Motik]], [[Paolo Papotti]], [[Donatello Santoro]], [[Efthymia Tsamoura]]: &amp;#039;&amp;#039;Benchmarking the Chase&amp;#039;&amp;#039;. In Proc. of PODS, 2017.&amp;lt;/ref&amp;gt; some of them are also open-source.&amp;lt;ref&amp;gt;{{cite web |url=https://github.com/donatellosantoro/Llunatic |title=The Llunatic Mapping and Cleaning Chase Engine|date=6 April 2021}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
Let &amp;#039;&amp;#039;R&amp;#039;&amp;#039;(&amp;#039;&amp;#039;A&amp;#039;&amp;#039;, &amp;#039;&amp;#039;B&amp;#039;&amp;#039;, &amp;#039;&amp;#039;C&amp;#039;&amp;#039;, &amp;#039;&amp;#039;D&amp;#039;&amp;#039;) be a relation schema known to obey the set of functional dependencies &amp;#039;&amp;#039;F&amp;#039;&amp;#039; = {&amp;#039;&amp;#039;A&amp;#039;&amp;#039;→&amp;#039;&amp;#039;B&amp;#039;&amp;#039;, &amp;#039;&amp;#039;B&amp;#039;&amp;#039;→&amp;#039;&amp;#039;C&amp;#039;&amp;#039;, &amp;#039;&amp;#039;CD→A&amp;#039;&amp;#039;}. Suppose &amp;#039;&amp;#039;R&amp;#039;&amp;#039; is decomposed into three relation schemas S&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; = {&amp;#039;&amp;#039;A&amp;#039;&amp;#039;, &amp;#039;&amp;#039;D&amp;#039;&amp;#039;}, S&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; = {&amp;#039;&amp;#039;A&amp;#039;&amp;#039;, &amp;#039;&amp;#039;C&amp;#039;&amp;#039;} and S&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt; = {&amp;#039;&amp;#039;B&amp;#039;&amp;#039;, &amp;#039;&amp;#039;C&amp;#039;&amp;#039;, &amp;#039;&amp;#039;D&amp;#039;&amp;#039;}. Determining whether this decomposition is lossless can be done by performing a chase as shown below.&lt;br /&gt;
&lt;br /&gt;
The initial tableau for this decomposition is:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! &amp;#039;&amp;#039;A&amp;#039;&amp;#039; !! &amp;#039;&amp;#039;B&amp;#039;&amp;#039; !! &amp;#039;&amp;#039;C&amp;#039;&amp;#039; !! &amp;#039;&amp;#039;D&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;a&amp;#039;&amp;#039; || &amp;#039;&amp;#039;b&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;c&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;d&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;a&amp;#039;&amp;#039; || &amp;#039;&amp;#039;b&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;c&amp;#039;&amp;#039; || &amp;#039;&amp;#039;d&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;a&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;b&amp;#039;&amp;#039; || &amp;#039;&amp;#039;c&amp;#039;&amp;#039; || &amp;#039;&amp;#039;d&amp;#039;&amp;#039;&lt;br /&gt;
|} &lt;br /&gt;
The first row represents S&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;. The components for attributes &amp;#039;&amp;#039;A&amp;#039;&amp;#039; and &amp;#039;&amp;#039;D&amp;#039;&amp;#039; are unsubscripted and those for attributes &amp;#039;&amp;#039;B&amp;#039;&amp;#039; and &amp;#039;&amp;#039;C&amp;#039;&amp;#039; are subscripted with &amp;#039;&amp;#039;i&amp;#039;&amp;#039; = 1. The second and third rows are filled in the same manner with S&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; and S&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt; respectively.&lt;br /&gt;
&lt;br /&gt;
The goal for this test is to use the given &amp;#039;&amp;#039;F&amp;#039;&amp;#039; to prove that &amp;#039;&amp;#039;t&amp;#039;&amp;#039; = (&amp;#039;&amp;#039;a&amp;#039;&amp;#039;, &amp;#039;&amp;#039;b&amp;#039;&amp;#039;, &amp;#039;&amp;#039;c&amp;#039;&amp;#039;, &amp;#039;&amp;#039;d&amp;#039;&amp;#039;) is really in &amp;#039;&amp;#039;R&amp;#039;&amp;#039;. To do so, the tableau can be chased by applying the FDs in &amp;#039;&amp;#039;F&amp;#039;&amp;#039; to equate symbols in the tableau. A final tableau with a row that is the same as &amp;#039;&amp;#039;t&amp;#039;&amp;#039; implies that any tuple &amp;#039;&amp;#039;t&amp;#039;&amp;#039; in the join of the projections is actually a tuple of &amp;#039;&amp;#039;R&amp;#039;&amp;#039;.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
To perform the chase test, first decompose all FDs in &amp;#039;&amp;#039;F&amp;#039;&amp;#039; so each FD has a single attribute on the right hand side of the &amp;quot;arrow&amp;quot;. (In this example, &amp;#039;&amp;#039;F&amp;#039;&amp;#039; remains unchanged because all of its FDs already have a single attribute on the right hand side: &amp;#039;&amp;#039;F&amp;#039;&amp;#039; = {&amp;#039;&amp;#039;A&amp;#039;&amp;#039;→&amp;#039;&amp;#039;B&amp;#039;&amp;#039;, &amp;#039;&amp;#039;B&amp;#039;&amp;#039;→&amp;#039;&amp;#039;C&amp;#039;&amp;#039;, &amp;#039;&amp;#039;CD&amp;#039;&amp;#039;→&amp;#039;&amp;#039;A&amp;#039;&amp;#039;}.)&lt;br /&gt;
&lt;br /&gt;
When equating two symbols, if one of them is unsubscripted, make the other be the same so that the final tableau can have a row that is exactly the same as &amp;#039;&amp;#039;t&amp;#039;&amp;#039; = (&amp;#039;&amp;#039;a&amp;#039;&amp;#039;, &amp;#039;&amp;#039;b&amp;#039;&amp;#039;, &amp;#039;&amp;#039;c&amp;#039;&amp;#039;, &amp;#039;&amp;#039;d&amp;#039;&amp;#039;). If both have their own subscript, change either to be the other. However, to avoid confusion, all of the occurrences should be changed.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
First, apply &amp;#039;&amp;#039;A&amp;#039;&amp;#039;→&amp;#039;&amp;#039;B&amp;#039;&amp;#039; to the tableau.&lt;br /&gt;
The first row is (&amp;#039;&amp;#039;a&amp;#039;&amp;#039;, &amp;#039;&amp;#039;b&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;c&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;d&amp;#039;&amp;#039;) where &amp;#039;&amp;#039;a&amp;#039;&amp;#039; is unsubscripted and &amp;#039;&amp;#039;b&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039; is subscripted with 1. Comparing the first row with the second one, change &amp;#039;&amp;#039;b&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039; to &amp;#039;&amp;#039;b&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039;. Since the third row has &amp;#039;&amp;#039;a&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;b&amp;#039;&amp;#039; in the third row stays the same. The resulting tableau is:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! &amp;#039;&amp;#039;A&amp;#039;&amp;#039; !! &amp;#039;&amp;#039;B&amp;#039;&amp;#039; !! &amp;#039;&amp;#039;C&amp;#039;&amp;#039; !! &amp;#039;&amp;#039;D&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;a&amp;#039;&amp;#039; || &amp;#039;&amp;#039;b&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;c&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;d&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;a&amp;#039;&amp;#039; || &amp;#039;&amp;#039;b&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;c&amp;#039;&amp;#039; || &amp;#039;&amp;#039;d&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;a&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;b&amp;#039;&amp;#039; || &amp;#039;&amp;#039;c&amp;#039;&amp;#039; || &amp;#039;&amp;#039;d&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Then consider &amp;#039;&amp;#039;B&amp;#039;&amp;#039;→&amp;#039;&amp;#039;C&amp;#039;&amp;#039;. Both first and second rows have &amp;#039;&amp;#039;b&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039; and notice that the second row has an unsubscripted &amp;#039;&amp;#039;c&amp;#039;&amp;#039;. Therefore, the first row changes to (&amp;#039;&amp;#039;a&amp;#039;&amp;#039;, &amp;#039;&amp;#039;b&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;c&amp;#039;&amp;#039;, &amp;#039;&amp;#039;d&amp;#039;&amp;#039;). Then the resulting tableau is:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! &amp;#039;&amp;#039;A&amp;#039;&amp;#039; !! &amp;#039;&amp;#039;B&amp;#039;&amp;#039; !! &amp;#039;&amp;#039;C&amp;#039;&amp;#039; !! &amp;#039;&amp;#039;D&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;a&amp;#039;&amp;#039; || &amp;#039;&amp;#039;b&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;c&amp;#039;&amp;#039; || &amp;#039;&amp;#039;d&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;a&amp;#039;&amp;#039; || &amp;#039;&amp;#039;b&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;c&amp;#039;&amp;#039; || &amp;#039;&amp;#039;d&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;a&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;b&amp;#039;&amp;#039; || &amp;#039;&amp;#039;c&amp;#039;&amp;#039; || &amp;#039;&amp;#039;d&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Now consider &amp;#039;&amp;#039;CD&amp;#039;&amp;#039;→&amp;#039;&amp;#039;A&amp;#039;&amp;#039;. The first row has an unsubscripted &amp;#039;&amp;#039;c&amp;#039;&amp;#039; and an unsubscripted &amp;#039;&amp;#039;d&amp;#039;&amp;#039;, which is the same as in third row. This means that the A value for row one and three must be the same as well. Hence, change &amp;#039;&amp;#039;a&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039; in the third row to &amp;#039;&amp;#039;a&amp;#039;&amp;#039;. The resulting tableau is:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! &amp;#039;&amp;#039;A&amp;#039;&amp;#039; !! &amp;#039;&amp;#039;B&amp;#039;&amp;#039; !! &amp;#039;&amp;#039;C&amp;#039;&amp;#039; !! &amp;#039;&amp;#039;D&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;a&amp;#039;&amp;#039; || &amp;#039;&amp;#039;b&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;c&amp;#039;&amp;#039; || &amp;#039;&amp;#039;d&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;a&amp;#039;&amp;#039; || &amp;#039;&amp;#039;b&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;c&amp;#039;&amp;#039; || &amp;#039;&amp;#039;d&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;a&amp;#039;&amp;#039; || &amp;#039;&amp;#039;b&amp;#039;&amp;#039; || &amp;#039;&amp;#039;c&amp;#039;&amp;#039; || &amp;#039;&amp;#039;d&amp;#039;&amp;#039;&lt;br /&gt;
|} &lt;br /&gt;
At this point, notice that the third row is (&amp;#039;&amp;#039;a&amp;#039;&amp;#039;, &amp;#039;&amp;#039;b&amp;#039;&amp;#039;, &amp;#039;&amp;#039;c&amp;#039;&amp;#039;, &amp;#039;&amp;#039;d&amp;#039;&amp;#039;) which is the same as &amp;#039;&amp;#039;t&amp;#039;&amp;#039;. Therefore, this is the final tableau for the chase test with given &amp;#039;&amp;#039;R&amp;#039;&amp;#039; and &amp;#039;&amp;#039;F&amp;#039;&amp;#039;. Hence, whenever &amp;#039;&amp;#039;R&amp;#039;&amp;#039; is projected onto S&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;, S&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; and S&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt; and rejoined, the result is in &amp;#039;&amp;#039;R&amp;#039;&amp;#039;. Particularly, the resulting tuple is the same as the tuple of &amp;#039;&amp;#039;R&amp;#039;&amp;#039; that is projected onto {&amp;#039;&amp;#039;B&amp;#039;&amp;#039;, &amp;#039;&amp;#039;C&amp;#039;&amp;#039;, &amp;#039;&amp;#039;D&amp;#039;&amp;#039;}.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
* [[Serge Abiteboul]], [[Richard B. Hull]], [[Victor Vianu]]: Foundations of Databases. Addison-Wesley, 1995.&lt;br /&gt;
* [[Alfred Aho|A. V. Aho]], C. Beeri, and [[Jeffrey Ullman|J. D. Ullman]]: &amp;#039;&amp;#039;The Theory of Joins in Relational Databases&amp;#039;&amp;#039;. ACM Transactions on Database Systems 4(3): 297-314, 1979.&lt;br /&gt;
* [[Jeffrey Ullman|J. D. Ullman]]: &amp;#039;&amp;#039;Principles of Database and Knowledge-Base Systems, Volume I&amp;#039;&amp;#039;. Computer Science Press, New York, 1988.&lt;br /&gt;
* [[Jeffrey Ullman|J. D. Ullman]], [[Jennifer Widom|J. Widom]]: &amp;#039;&amp;#039;A First Course in Database Systems&amp;#039;&amp;#039; (3rd ed.). pp.&amp;amp;nbsp;96–99. Pearson Prentice Hall, 2008.&lt;br /&gt;
* [[Michael Benedikt (computer scientist)|Michael Benedikt]], [[George Konstantinidis]], [[Giansalvatore Mecca]], [[Boris Motik]], [[Paolo Papotti]], [[Donatello Santoro]], [[Efthymia Tsamoura]]: &amp;#039;&amp;#039;Benchmarking the Chase&amp;#039;&amp;#039;. In Proc. of PODS, 2017.&lt;br /&gt;
&lt;br /&gt;
== Further reading ==&lt;br /&gt;
* {{cite book|author1=Sergio Greco|author2=Francesca Spezzano|author3=Cristian Molinaro|title=Incomplete Data and Data Dependencies in Relational Databases|year=2012|publisher=Morgan &amp;amp; Claypool Publishers|isbn=978-1-60845-926-1}}&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:Chase (Algorithm)}}&lt;br /&gt;
[[Category:Database theory]]&lt;br /&gt;
[[Category:Database algorithms]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Jac16888</name></author>
	</entry>
</feed>