Mein Lieblingsbeispiel ist ein klassisches 1977er Ergebnis von Ashok Chandra und Philip Merlin. Sie zeigten, dass das Problem der Eingrenzung von Abfragen für konjunktive Abfragen entschieden werden kann. Das Conjunctive-Query-Containment-Problem stellt sich als äquivalent zur Entscheidung heraus, ob es einen Homomorphismus zwischen den beiden Eingabeabfragen gibt. Dies formuliert ein Semantikproblem, das die Quantifizierung über eine unendliche Menge beinhaltet, in ein syntaktisches Problem um, bei dem nur eine endliche Anzahl möglicher Homomorphismen überprüft werden muss. Das Homomorphismuszertifikat hat nur eine lineare Größe und das Problem liegt in NP.
Dieser Satz liefert eine der Grundlagen der Theorie der Datenbankabfrageoptimierung. Die Idee ist, eine Abfrage in eine andere, schnellere umzuwandeln. Man möchte jedoch die Gewissheit haben, dass durch den Optimierungsprozess keine neue Abfrage erstellt wird, die in einigen Datenbanken, in denen die ursprüngliche Abfrage Ergebnisse erbracht hat, keine Antworten liefert.
Formal ist eine Datenbankabfrage ein Ausdruck der Form , wobei eine Liste freier Variablen ist, ist eine Liste gebundener Variablen, und ist eine Formel erster Ordnung mit den Variablen und einer Sprache mit Beziehungssymbolen. Die Abfrage kann existenzielle und universelle Quantifizierer enthalten, die Formel kann Konjunktion und Disjunktion von relationalen Atomen enthalten, und es kann auch Negation auftreten. Eine Abfrage wird auf eine Datenbankinstanz angewendet , bei der es sich um eine Reihe von Beziehungen handelt. Das Ergebnis ist eine Menge von Tupeln; wenn Tupelx.Q(x,y)xyQ(x,y)xyQIt im Ergebnis wird durch dann kann die Formel erfüllt werden. Man kann dann zwei Abfragen vergleichen: ist in Wenn auf eine beliebige Datenbankinstanz angewendet wird und einige Ergebnisse , wird auf dieselbe Instanz angewendet und erzeuge auch einige Ergebnisse. (Es ist in Ordnung, wenn keine Ergebnisse liefert, jedoch, aber für die Eindämmung muss die Implikation für jede mögliche Instanz gelten.) Das Problem mit der Eindämmung von Abfragen : Bei zwei DatenbankabfragenxQ(t,y)Q1Q2Q1IQ2IQ1Q2Q1und , ist in ?Q2Q1Q2
Es war vor Chandra-Merlin überhaupt nicht klar, dass das Problem entschieden werden konnte. Mit nur der Definition muss man über die unendliche Menge aller möglichen Datenbanken quantifizieren. Wenn die Abfragen uneingeschränkt sind, ist das Problem tatsächlich nicht zu entscheiden: Sei eine Formel, die immer wahr ist, dann ist in wenn gültig ist. (Dies ist Hilberts Entscheidungsproblem , das 1936 von Church and Turing als unentscheidbar erwiesen wurde.)Q1Q1Q2Q2
Um Unentscheidbarkeit zu vermeiden, hat eine Konjunktivabfrage eine eher eingeschränkte Form: enthält nur existenzielle Quantifizierer, und Negation und Disjunktion sind nicht zulässig. So ist eine positive Existenz Formel mit nur Verbindung relationaler Atom. Dies ist ein winziges Fragment der Logik, aber es reicht aus, um einen großen Anteil nützlicher Datenbankabfragen auszudrücken. Die klassische Anweisung in SQL drückt konjunktive Abfragen aus. Die meisten Suchmaschinenabfragen sind konjunktive Abfragen.QQSELECT ... FROM
Man kann Homomorphismen zwischen Abfragen auf einfache Weise definieren (ähnlich dem Diagrammhomomorphismus mit ein wenig zusätzlicher Buchhaltung). Das Chandra-Merlin-Theorem besagt: Bei zwei konjunktiven Abfragen und ist in wenn es einen Abfrage-Homomorphismus von bis . Dies begründet die Mitgliedschaft in NP, und es ist unkompliziert zu zeigen, dass dies auch NP-schwer ist.Q1Q2Q1Q2Q2Q1
- Ashok K. Chandra und Philip M. Merlin, Optimale Implementierung konjunktiver Abfragen in relationalen Datenbanken , STOC '77 77–90. doi: 10.1145 / 800105.803397
Die Entscheidbarkeit der Abfrageeinschließung wurde später auf Vereinigungen von konjunktiven Abfragen (existentielle positive Abfragen, bei denen die Disjunktion zulässig ist) erweitert, obwohl das Zulassen der Disjunktion die Komplexität auf -complete erhöht. Entscheidbarkeits- und Unentscheidbarkeitsergebnisse wurden auch für eine allgemeinere Form der Abfragebegrenzung festgelegt , bei der es sich um Zwischenbewertungen handelt, die beim Zählen der Anzahl der Antworten, beim Kombinieren von Anmerkungen in der Provenienz oder beim Kombinieren der Ergebnisse von Abfragen in probabilistischen Datenbanken auftreten.ΠP2