2010-08-11 16 views
34

Che cos'è una proiezione, in termini di teoria del database e NHibernate quando si utilizza SetProjection()?Che cos'è una proiezione?

+0

possibile duplicato di [Che cos'è una proiezione in NHibernate?] (Http://stackoverflow.com/questions/4746995/che-is-a-proiezione-in-negreto) – philipxy

risposta

29

Molto semplicemente, è una funzione che accetta un input (ad esempio una riga di database) e produce un output (ad esempio una delle colonne dalla riga o forse un calcolo basato su più colonne).

+0

In Hibernate, da dove viene la funzione che produce l'output (ad es. la colonna) viene eseguito? Accade sul server di database SQL o si verifica sul server di applicazione/ibernazione dopo che i risultati della riga completa vengono restituiti? Grazie. – KyleM

+0

@KyleM: È passato troppo tempo da quando ho usato NHibernate per dire con certezza, ma mi aspetto che venga eseguito come parte di SQL. –

+0

Grazie .. è quello che penso anch'io. Ho appena ricordato un altro modo per controllare (hibernate query logging, che di solito non usiamo ..), quindi controllerò e riferirò. – KyleM

29

La proiezione è una delle operazioni di base dell'algebra relazionale. Ci vuole una relazione e una (possibilmente vuota) lista di attributi di quella relazione come input. Emette una relazione contenente solo l'elenco specificato di attributi con tuple duplicate rimosse. In altre parole, l'output deve anche essere una relazione.

Esempio, se la relazione R {A, B}, contiene tre tuple {1,10}, {2,10}, {3,20}, la proiezione di R sull'elenco di attributi {B} conterrà 2 tuple: {10}, {20}.

In breve, la proiezione è più o meno equivalente a SELECT DISTINCT in SQL (esclusi i casi con valori null e colonne duplicate).

2

In termini di sospensione, è come specificare quali colonne selezionare. Al contrario di lasciare che i mapping determinino quali colonne vengono recuperate. Ciò significa che è possibile specificare funzioni SQL, sottoquery, una singola colonna o forse tutto quanto sopra tramite ProjectionList. Ad esempio, se si desidera contare le righe in una tabella SetProjection(Projections.RowCount()).

7

Proiezione significa sottoinsieme di colonne in una query.

select x, y, z from YourTable 

x, y, z è la proiezione qui.

+5

Non significa "sottoinsieme di colonne" piuttosto che "numero di colonne" ? – CoDEmanX

2

Se si ha familiarità con le tabelle SQL o database: La proiezione si riferisce al numero di campi/colonne/attributi da restituire. La selezione riguarda il numero di righe/record da restituire. Ci sono buoni video di spiegazioni here e here

+0

Sebbene questi collegamenti possano rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire i collegamenti per riferimento.Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia. – Cleb

-1

also call projection

viene anche chiamata la proiezione, si prega di consultare il diagramma

proiezione reagisce agli eventi nel sistema

progetto è semplice ascoltatore.

+0

No, la proiezione non è un listener, è una mappatura. Bella foto, interpretazione sbagliata. –

Problemi correlati