Worauf bezieht sich der Begriff „Projektion“ in einer SQL-Abfrage (oder Sichtdefinition)?

15

Im Oracle-Dokument The Query Optimizer habe ich unter View Merging die folgenden Informationen gefunden

Die Optimierung für das Zusammenführen von Ansichten gilt für Ansichten, die nur Auswahlen, Projektionen und Verknüpfungen enthalten. Zusammenführbare Ansichten enthalten also keine Mengenoperatoren, Aggregatfunktionen, DISTINCT, GROUP BY, CONNECT BY usw. (Hervorhebung von mir)

Ich kann jedoch nur raten, worauf sich eine solche Projektion tatsächlich bezieht.

René Nyffenegger
quelle

Antworten:

17

In der relationalen Algebra bedeutet Projektion das Sammeln einer Teilmenge von Spalten zur Verwendung in Operationen, dh eine Projektion ist die Liste der ausgewählten Spalten.

In einem Abfrageoptimierungsschritt manifestiert sich die Projektion als Puffer- oder Spoolbereich einer Beschreibung, die eine Teilmenge der Spalten aus der zugrunde liegenden Tabelle oder dem zugrunde liegenden Operator oder eine logische Ansicht auf der Grundlage der Spalten enthält, die von nachfolgenden Operationen verwendet werden.

In einer Ansicht entspricht eine Projektion der Liste der Spalten, die in der der Ansicht zugrunde liegenden Abfrage ausgewählt wurden.

Betroffen vonTunbridgeWells
quelle
13

Die Projektion bezieht sich auf die Teilmenge der Menge aller in einer Tabelle gefundenen Spalten, die Sie zurückgeben möchten. Sie kann von 0 ** bis zum kompletten Satz reichen.

In einer Tabelle gibt es zwei "Mengen", die den beiden Dimensionen einer Tabelle entsprechen. Jede Tabelle enthält eine Reihe von Spalten sowie eine Reihe von Zeilen . Jeder einzelne Wert in einer Tabelle befindet sich an einem bestimmten Schnittpunkt dieser beiden * Mengen **. Ihr Wert wird jedoch nicht gefunden, wenn Sie wie in Excel zu einer Adresse wie T60 "gehen" .

Relationale Tabellen haben keine inhärente Reihenfolge . Das ist wichtig zu bedenken. Um Ihren Einzelwert abzurufen, wählen Sie stattdessen eine Teilmenge der Spalten (in diesem Fall eine) und eine Teilmenge der Zeilen (in diesem Fall eine) aus. Um eine Teilmenge einer Spalte aus allen verfügbaren auszuwählen, müssen Sie nur ihren Namen sowie den Tabellennamen kennen. Der Spaltenname ist in seiner Tabelle eindeutig.

Sobald Sie die Spalte ausgewählt haben, in der sich Ihr Wert befindet, müssen Sie die bestimmte Zeile auswählen, in der er sich befindet. Zeilen haben jedoch keine Namen wie Spalten. Die Art, wie wir eine Zeile angeben, ist. . . Nun, wir wissen nicht genau. . . Wir spezifizieren etwas, das wir über den Wert wissen, den wir suchen. Sie müssen etwas wissen, das (buchstäblich) mit dem Wert zusammenhängt, den Sie suchen. Wenn Sie genügend verwandte Informationen angeben können, können Sie möglicherweise die Anzahl der zurückgegebenen Zeilen auf die gesuchte reduzieren.

Stellen Sie sich das vor, als hätte ein Student seinen Rucksack verloren. Nehmen wir an, ein Typ hat es verloren. Er ruft Fundbüro an, und die anwesende Frau sagt: "Ja, wir haben ein paar Dutzend Rucksäcke. Können Sie das beschreiben?" Du sagst "Nun, es ist blau?". Worauf sie antwortet: "Fragst du mich oder sagst du es mir?" Sie sagen: "Mal sehen, ähm, oh ja! Es hatte mein Mathe-1010-Buch drin." "Gut, jetzt bist du bis vier." Dann erinnerst du dich, dass du deine Freundin Lucy in 15 Minuten treffen solltest, und das löste eine weitere Erinnerung aus - von der Zeit, als du in Mathe 1010 gelangweilt warst und schriebst: "Ich liebe Lucy ".Ricky . "

Projektion könnte man damit vergleichen, dass man sagt, was man verloren hat - einen Rucksack. Die Auswahl kann mit der Beschreibung ihrer Attribute verglichen werden : Sie ist blau, enthält ein Mathe-1010-Buch und unten steht "Ich liebe Lucy".

Sie machen dasselbe mit SQL. Erstens, welche Art von Informationen möchten Sie sehen. Zweitens Kriterien, die beschreiben, welche Sie sehen möchten. Diese werden Prädikate oder Wahrheitserklärungen genannt . Sie gelten für ein oder mehrere Mitglieder der Gruppe. Wenn dies nicht der Fall ist, werden keine Werte zurückgegeben.

* Einige SQL-Implementierungen von Anbietern bieten Möglichkeiten, diese Regeln zu brechen, z. B. geschachtelte Tabellen in Oracle. Standardmäßige zweidimensionale Tabellen sind jedoch immer noch die vorherrschende Form.

** CJ Date hat einen sehr interessanten Artikel mit dem Titel "Eine Tabelle ohne Spalten" geschrieben. Ich fand es sehr lesenswert, da ich die meisten seiner vielen "Writings" -Artikel mache. Ich kann sie nur empfehlen!

user6612
quelle