A cosa si riferisce il termine "proiezione" in una query SQL (o vista definizione)


15

Nel documento Oracle Lo Strumento per ottimizzare le query , in Visualizza unione , ho trovato le seguenti informazioni

L'ottimizzazione della fusione delle viste si applica alle viste che contengono solo selezioni, proiezioni e join. In altre parole, le viste unibili non contengono operatori set, funzioni aggregate, DISTINCT, GROUP BY, CONNECT BY e così via. (enfatizzare il mio)

Tuttavia, posso solo immaginare a cosa si riferisca effettivamente una tale proiezione.

Risposte:


17

Nell'algebra relazionale, proiezione significa raccogliere un sottoinsieme di colonne da utilizzare nelle operazioni, ovvero una proiezione è l'elenco delle colonne selezionate.

In un passaggio di Query Optimizer, la proiezione si manifesterà come un buffer o un'area di spooling di una descrizione contenente un sottoinsieme delle colonne dalla tabella o operatore sottostante o una vista logica basata su quelle colonne utilizzate dalle operazioni successive.

In una vista, una proiezione equivale all'elenco di colonne selezionate nella query sottostante alla vista.


13

La proiezione si riferisce a quel sottoinsieme dell'insieme di tutte le colonne trovate in una tabella, che si desidera restituire. Può variare da 0 ** fino al set completo.

Esistono due "set" in una tabella che corrispondono alle due dimensioni di una tabella. Ogni tabella ha un set di colonne e un set di righe . Ogni singolo valore in una tabella può essere trovato in una specifica intersezione di questi due * set **. Tuttavia, il tuo valore non viene trovato "andando a" un indirizzo, come T60 , come faresti con Excel.

Non esiste un ordine inerente alle tabelle relazionali . È importante ricordare. Invece, per recuperare il tuo singolo valore, devi selezionare un sottoinsieme delle colonne (uno in questo caso) e un sottoinsieme delle righe (uno in questo caso). Per selezionare un sottoinsieme di una colonna tra tutti quelli disponibili, è necessario solo conoscerne il nome e il nome della tabella. Il nome della colonna sarà univoco nella sua tabella.

Dopo aver scelto la colonna in cui si trova il tuo valore, dovrai scegliere la riga in cui si trova. Tuttavia, le righe non hanno nomi come le colonne. Il modo in cui specifichiamo una riga è. . . bene, non esattamente. . . Specifichiamo qualcosa che sappiamo del valore che stiamo cercando. Devi sapere qualcosa che riguarda (letteralmente) il valore che stai cercando. Se riesci a specificare abbastanza informazioni correlate, potresti essere in grado di ridurre il set di righe restituite a quello che stai cercando.

Pensalo come se uno studente universitario avesse perso il suo zaino. Diciamo che un ragazzo l'ha perso. Chiama smarrito e la donna che frequenta dice "Sì, abbiamo un paio di dozzine di zaini. Puoi descriverlo?" Dici "Beh, è ​​blu?". Al che lei risponde "Mi stai chiedendo o mi stai dicendo", e poi dice "Ne ho otto blu, dovrò fare di meglio, e non ne sei molto sicuro." Dici "Vediamo, umm, oh sì! Aveva dentro il mio libro di matematica 1010". "Bene, ora sei in quattro." Poi ricordi che dovresti incontrare la tua ragazza, Lucy, tra 15 minuti, e questo ha scatenato un altro ricordo - del tempo in cui ti annoiavi in ​​Math 1010 e scrivevi, - in vere e proprie piccole lettere sul fondo dello zaino, "I amo Lucy ".Ricky ".

La proiezione potrebbe essere paragonata a dire ciò che hai perso: uno zaino. La selezione può essere paragonata a descriverne gli attributi : è blu, ha un libro di matematica 1010 all'interno e ha "I love Lucy" scritto sul fondo.

Fai la stessa cosa con SQL. Innanzitutto, che tipo di informazioni vuoi vedere. In secondo luogo, i criteri che descrivono quale o quelli che si desidera vedere. Questi sono chiamati predicati o dichiarazioni di verità . Sono veri per uno o più membri del set. In caso contrario, non restituiscono alcun valore.

* Le implementazioni SQL di alcuni fornitori forniscono mezzi per violare queste regole, come le tabelle nidificate in Oracle. Tuttavia, le tabelle bidimensionali standard sono ancora la forma predominante.

** CJ Date ha scritto un articolo molto interessante chiamato "Una tabella senza colonne". Ho trovato molto degno di leggere, dato che faccio la maggior parte dei suoi numerosi articoli su "Scritti". Li consiglio vivamente!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.