Do czego odnosi się termin „projekcja” w zapytaniu SQL (lub definicji widoku)

15

W dokumencie Oracle The Query Optimizer , w View Scalanie , znalazłem następujące informacje

Optymalizacja łączenia widoków dotyczy widoków, które zawierają tylko selekcje, rzuty i sprzężenia. Oznacza to, że scalane widoki nie zawierają operatorów ustawiania, funkcji agregujących, DISTINCT, GROUP BY, CONNECT BY itd. (moje podkreślenie)

Mogę tylko zgadywać, do czego tak naprawdę odnosi się taka projekcja.

René Nyffenegger
źródło

Odpowiedzi:

17

W algebrze relacyjnej rzutowanie oznacza zebranie podzbioru kolumn do użycia w operacjach, tj. Rzut jest listą wybranych kolumn.

W kroku optymalizatora zapytania projekcja przejawia się jako bufor lub obszar buforowania w pewnym opisie zawierającym podzbiór kolumn z podstawowej tabeli lub operatora lub widok logiczny oparty na tych kolumnach, które są używane w kolejnych operacjach.

W widoku rzut jest równy liście kolumn wybranych w zapytaniu leżącym u podstaw widoku.

ConcernedOfTunbridgeWells
źródło
13

Rzutowanie odnosi się do tego podzbioru zestawu wszystkich kolumn znalezionych w tabeli, który ma zostać zwrócony. Może wynosić od 0 ** do kompletnego zestawu.

W tabeli znajdują się dwa „zestawy”, które odpowiadają dwóm wymiarom tabeli. Każda tabela ma zestaw kolumn, a także zestaw wierszy . Każdą indywidualną wartość w tabeli można znaleźć na określonym skrzyżowaniu tych dwóch * zestawów **. Jednak wartość nie zostanie znaleziona przez „przejście do” adresu, takiego jak T60 , tak jak w programie Excel.

W tabelach relacyjnych nie ma żadnego porządku . To ważne, aby pamiętać. Zamiast tego, aby odzyskać pojedynczą wartość, należy wybrać podzbiór kolumn (w tym przypadku jedną) i podzbiór wierszy (w tym przypadku jedną). Aby wybrać podzestaw jednej kolumny ze wszystkich dostępnych, musisz tylko znać jego nazwę, a także nazwę tabeli. Nazwa kolumny będzie unikalna w obrębie tabeli.

Po wybraniu kolumny, w której znajduje się twoja wartość, musisz wybrać konkretny wiersz, w którym się ona znajduje. Jednak wiersze nie mają nazw tak jak kolumny. Sposób, w jaki określamy wiersz, jest. . . nie do końca. . . Podajemy coś, co wiemy o wartości, której szukamy. Musisz wiedzieć coś związanego (dosłownie) z wartością, której szukasz. Jeśli możesz podać wystarczającą liczbę powiązanych informacji, możesz być w stanie zredukować zestaw zwracanych wierszy do tylko tego, którego szukasz.

Pomyśl o tym, jakby student zgubił plecak. Powiedzmy, że facet go zgubił. Dzwoni zgubiony i znaleziony, a kobieta biorąca udział mówi: „Tak, mamy kilkadziesiąt plecaków. Czy możesz to opisać?” Mówisz „Cóż, jest niebieski?”. Na co ona odpowiada: „Pytasz mnie, czy mówisz”, a potem mówi: „Mam osiem niebieskich, będę musiał zrobić coś więcej, a ty nie brzmiałeś zbyt pewnie”. Mówicie: „Zobaczmy, umm, och tak! To była moja książka z matematyki 1010”. „Dobrze, teraz masz już cztery lata.” Potem pamiętasz, że powinieneś spotkać swoją dziewczynę, Lucy, za 15 minut, i to wywołało kolejne wspomnienie - o tym, jak nudziłeś się w Math 1010 i pisałem - prawdziwymi małymi literami na dole plecaka: „Ja kocham Lucy ”.Ricky . ”

Projekcję można porównać do powiedzenia tego , co straciłeś - plecaka. Wybór można przyrównać do opisu jego atrybutów : jest niebieski, ma w sobie książkę z matematyki 1010 i napis „I love Lucy” na dole.

To samo robisz z SQL. Po pierwsze, jakie informacje chcesz zobaczyć. Po drugie, kryteria opisujące, które z nich chcesz zobaczyć. Są to tak zwane orzeczenia lub stwierdzenia prawdy . Są prawdziwe dla jednego lub więcej członków zestawu. Jeśli nie są, nie zwracają żadnych wartości.

* Implementacje SQL niektórych dostawców zapewniają sposoby na złamanie tych zasad, takie jak tabele zagnieżdżone w Oracle. Jednak standardowe dwuwymiarowe tabele są nadal dominującą formą.

** CJ Date napisał bardzo interesujący artykuł zatytułowany „Tabela bez kolumn”. Uważam, że warto przeczytać, ponieważ robię większość jego licznych artykułów z „Pism”. Bardzo je polecam!

user6612
źródło