it-swarm.it

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

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. (sottolineatura mia)

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

15

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 certa 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.

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 uno specifico intersezione di questi due * set **. Tuttavia, il tuo valore non viene trovato "andando a" un indirizzo, come T6, 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 l'insieme delle 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 ti 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 ​​matematica 1010 e scrivevi, - in vere e proprie piccole lettere sul fondo dello zaino, "I amo Lucy ". Li gira e abbastanza sicuro, dice "il terzo dice" Adoro Lucy ". Vieni a prenderlo, Ricky ."

Proiezione potrebbe essere paragonato a dire cosa hai perso - uno zaino. Selezione può essere paragonato a descrivere i suoi attributi : è blu, contiene un libro di matematica 1010 e ha "I love Lucy "scritto sul fondo.

Fai la stessa cosa con SQL. Innanzitutto, che tipo di informazioni vuoi vedere. Secondo, i criteri che descrivono quale o quelli che vuoi 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.

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

13
user6612