<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Konjunktive_Anfrage</id>
	<title>Konjunktive Anfrage - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Konjunktive_Anfrage"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Konjunktive_Anfrage&amp;action=history"/>
	<updated>2026-06-26T22:17:52Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Konjunktive_Anfrage&amp;diff=1496721&amp;oldid=prev</id>
		<title>imported&gt;Invisigoth67: typo, form</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Konjunktive_Anfrage&amp;diff=1496721&amp;oldid=prev"/>
		<updated>2024-07-09T14:20:00Z</updated>

		<summary type="html">&lt;p&gt;typo, form&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Konjunktive Anfragen&amp;#039;&amp;#039;&amp;#039; sind eine Einschränkung von Anfragen der [[Prädikatenlogik]] und haben eine Reihe an wünschenswerten Eigenschaften, die in der [[Relationale Datenbank|Datenbanktheorie]] intensiv untersucht worden sind. Viele Anfragen an [[Relationale Datenbank|relationale Datenbanken]] – und damit auch viele [[SQL]]-Anfragen – sind konjunktive Anfragen.&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
&lt;br /&gt;
Die Klasse der konjunktiven Anfragen entspricht der [[Prädikatenlogik]] ohne [[Allquantor]]en &amp;lt;math&amp;gt;\forall&amp;lt;/math&amp;gt;, [[Disjunktion]] &amp;lt;math&amp;gt;\vee&amp;lt;/math&amp;gt;, [[Negation]]&amp;lt;math&amp;gt;\neg&amp;lt;/math&amp;gt;, also eingeschränkt auf atomare Formeln, [[Konjunktion (Logik)|Konjunktion]] &amp;lt;math&amp;gt;\wedge&amp;lt;/math&amp;gt; und&lt;br /&gt;
[[Existenzquantor]]en &amp;lt;math&amp;gt;\exists&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Jede konjunktive Anfrage kann leicht in [[Pränexnormalform]] umgeschrieben werden, welche oftmals implizit angenommen wird. Konjunktive Anfragen in Pränexnormalform haben die folgende allgemeine Form:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;(x_1, \ldots, x_k).\exists x_{k+1}, \ldots x_m. A_1 \wedge \ldots \wedge A_r&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hierbei werden &amp;lt;math&amp;gt;x_1, \ldots, x_k&amp;lt;/math&amp;gt; ausgezeichnete Variablen genannt, &amp;lt;math&amp;gt;x_{k+1}, \ldots x_m&amp;lt;/math&amp;gt; dagegen als nicht ausgezeichnet. &amp;lt;math&amp;gt;A_1, \ldots, A_r&amp;lt;/math&amp;gt; sind atomare Formeln. Konjunktive Anfragen ohne ausgezeichnete Variable heißen boolesche konjunktive Anfragen.&lt;br /&gt;
&lt;br /&gt;
Ein großer Teil der weit verbreiteten SQL Anfragen an relationale Datenbanken können als konjunktive Anfragen formuliert werden. Betrachten wir als Beispiel eine Datenbank über Studenten mit Adressen, von ihnen besuchten Vorlesungen und Geschlecht. Mit der folgenden konjunktiven Anfrage kann man all diejenigen Studenten finden, welche Vorlesungen besuchen, in der mindestens eine weibliche Teilnehmerin ist:&lt;br /&gt;
&lt;br /&gt;
  (student, adresse) . &amp;lt;math&amp;gt;\exists&amp;lt;/math&amp;gt;(student2, kurs) .&lt;br /&gt;
     besucht(student, kurs)  &amp;lt;math&amp;gt;\wedge&amp;lt;/math&amp;gt; geschlecht(student, &amp;#039;männlich&amp;#039;) &amp;lt;math&amp;gt;\wedge&amp;lt;/math&amp;gt;&lt;br /&gt;
     besucht(student2, kurs) &amp;lt;math&amp;gt;\wedge&amp;lt;/math&amp;gt; geschlecht(student2, &amp;#039;weiblich&amp;#039;) &amp;lt;math&amp;gt;\wedge&amp;lt;/math&amp;gt;&lt;br /&gt;
     wohnt(student, adresse)&lt;br /&gt;
&lt;br /&gt;
Da nur nach den Studenten und ihren Adressen gefragt ist, sind &amp;lt;code&amp;gt;student&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;adresse&amp;lt;/code&amp;gt; die einzigen ausgezeichneten Variablen in obiger Anfrage, wohingegen die Variablen &amp;lt;code&amp;gt;kurs&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;student2&amp;lt;/code&amp;gt; nur existentiell quantifiziert sind, also nicht ausgezeichnet.&lt;br /&gt;
&lt;br /&gt;
== Konjunktive Anfragen versus Relationale Algebra ==&lt;br /&gt;
&lt;br /&gt;
Konjunktive Anfragen entsprechen Selektions-Projektions-Join-Anfragen in der [[Relationenalgebra]] und Select-From-Where-Anfragen in [[SQL]], wobei in der Where-Bedingung nur Konjunktionen atomarer Gleichheitsbedingungen vorkommen dürfen. Die Where-Bedingung muss also von der Form &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;Spaltenname&amp;gt;=Konstante and &amp;lt;Spaltenname1&amp;gt;=&amp;lt;Spaltenname2&amp;gt; and ...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; sein. Insbesondere dürfen hier keine [[Aggregation (Informatik)|Aggregationen]] und Subanfragen vorkommen. Die obige Anfrage könnte in SQL wie folgt geschrieben werden:&lt;br /&gt;
&lt;br /&gt;
  select l.student, l.adresse&lt;br /&gt;
  from besucht b1, geschlecht g1,&lt;br /&gt;
       besucht b2, geschlecht g2,&lt;br /&gt;
       wohnt l&lt;br /&gt;
  where b1.student=g1.student&lt;br /&gt;
  and   b2.student=g2.student&lt;br /&gt;
  and   l.student=g1.student&lt;br /&gt;
  and   b1.kurs=b2.kurs&lt;br /&gt;
  and   g1.gender=&amp;#039;male&amp;#039;&lt;br /&gt;
  and   g2.gender=&amp;#039;female&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
== Konjunktive Anfragen und Datalog ==&lt;br /&gt;
&lt;br /&gt;
Konjunktive Anfragen können auch als [[Datalog]]-Regeln geschrieben werden. So entspricht obige Anfrage folgender Datalog-Regel.&lt;br /&gt;
&lt;br /&gt;
  ergebnis(student, address) :- besucht(student, kurs),  geschlecht(student, männlich),&lt;br /&gt;
                              besucht(student2, kurs), geschlecht(student2, weiblich),&lt;br /&gt;
                              wohnt(student, adresse).&lt;br /&gt;
&lt;br /&gt;
In Datalog Regeln werden keine Quantoren angegeben, die Variablen im Kopf der Regel werden jedoch implizit als universell quantifiziert, die Variablen, welche nur im Rumpf vorkommen, als existentiell quantifiziert angenommen.&lt;br /&gt;
&lt;br /&gt;
Es kann zwar jede konjunktive Anfrage als Regel in Datalog geschrieben werden, aber nicht jedes Datalog Programm als konjunktive Anfrage. Genauer gesagt können nur einzelne Regeln über extensionale Prädikate in konjunktive Anfragen umgeschrieben werden. Im Allgemeinen ist es nicht entscheidbar, ob für ein Datalogprogramm ein äquivalentes nicht-rekursives Programm -- in anderen Worten eine positive Anfrage der relationalen Algebra oder eine Formel der positiven existentiellen Prädikatenlogik existiert. Dieses Problem wird als das [[Datalog Boundedness]] Problem bezeichnet.&amp;lt;ref&amp;gt;Gerd G. Hillebrand, Paris C. Kanellakis, Harry G. Mairson, Moshe Y. Vardi: &amp;#039;&amp;#039;Undecidable Boundedness Problems for Datalog Programs.&amp;#039;&amp;#039; In: &amp;#039;&amp;#039;J. Log. Program.&amp;#039;&amp;#039; Band 25, Nr. 2, 1995, S. 163–190.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Datenbanktheorie]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Invisigoth67</name></author>
	</entry>
</feed>