pdf (1820 Kb) - Fachgebiet Datenbanken und Informationssysteme ...
pdf (1820 Kb) - Fachgebiet Datenbanken und Informationssysteme ...
pdf (1820 Kb) - Fachgebiet Datenbanken und Informationssysteme ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Ausdruck ist, wird in der SQL-Anfrage statt einem Tabellennamen eine Unteranfrage<br />
eingetragen. Hierdurch hätte man einen sehr einfachen Algorithmus, der mit beliebig verschachtelten<br />
Relationenalgebra-Ausdrücken umgehen kann. Als Beispiel soll die folgende<br />
Übersetzung betrachtet werden.<br />
Anfrage:<br />
Übersetzung:<br />
PROJ[B,C](SEL[A>1]()R) NJOIN PROJ[C,D](S)<br />
SELECT ∗<br />
FROM (SELECT B,C<br />
FROM (SELECT ∗<br />
FROM R<br />
WHERE A>1))<br />
NATURAL JOIN (SELECT C,D<br />
FROM S)<br />
Das Problem bei diesem Verfahren ist die stark verschachtelte Struktur. Die Anfragen<br />
werden dadurch sehr schlecht lesbar <strong>und</strong> in den meisten Fällen weniger effizient.<br />
Entwurf einer verbesserten Übersetzung<br />
SQL bietet in jedem SQL-Block sechs Klauseln, die für eine Anfrage benutzt werden<br />
können. Bei der oben angegeben Übersetzung der Relationenalgebra-Ausdrücke werden<br />
jedoch nur zwei bis drei Klauseln von einer Operation benutzt <strong>und</strong> jede weitere Operation<br />
erzeugt eine neue Unteranfrage der From-Klausel. Sinnvoller wäre es mit mehreren Operationen<br />
die Klauseln eines SQL-Blocks zu füllen. Hierzu soll folgendes Beispiel betrachtet<br />
werden.<br />
Anfrage:<br />
Übersetzung 1:<br />
Übersetzung 2:<br />
PROJ[B](SEL[A>1](R))<br />
SELECT B<br />
FROM (SELECT ∗<br />
FROM R<br />
WHERE A>1)<br />
SELECT B<br />
FROM R<br />
WHERE A>1<br />
Die zweite Übersetzungs-Variante kommt ohne Unteranfrage aus <strong>und</strong> ist deshalb der ersten<br />
vorzuziehen. Für die beiden Übersetzungen war keine Umformung der ursprünglichen<br />
Anfrage nötig. Da sich in einem SQL-Block mehr als eine Operation unterbringen lässt,<br />
ist keine eindeutige Abbildung eines Relationenalgebra-Ausdrucks auf eine SQL-Anfrage<br />
möglich. Beide Übersetzungen können daher als SQL-seitige Interpretation des selben<br />
Relationenalgebra-Ausdrucks betrachtet werden.<br />
Der gesuchte Algorithmus soll eine Übersetzung liefern die äquivalent zur eingegebenen<br />
Anfrage ist, also nicht auf Umformungen beruht, also nur auf Basis unterschiedlicher<br />
Interpretationen arbeiten.<br />
Geht man nun davon aus, dass die Anfrage nicht weiter umgeformt werden darf, so muss<br />
zum Beispiel die Anfrage<br />
40