2010-08-11 8 views
34

¿Qué es una proyección, en términos de teoría de base de datos y NHibernate cuando se usa SetProjection()?¿Qué es una proyección?

+0

posible duplicado de [¿Qué es una proyección en NHibernate?] (Http://stackoverflow.com/questions/4746995/what-is-a-projection-in-nhibernate) – philipxy

Respuesta

29

Muy simple, es una función que toma una entrada (por ejemplo, una fila de base de datos) y produce una salida (por ejemplo, una de las columnas de la fila, o quizás un cálculo basado en varias columnas).

+0

En Hibernate, ¿dónde funciona la función que produce la salida (por ejemplo, la columna) se ejecuta? ¿Sucede en el servidor de la base de datos SQL o sucede en el servidor de la aplicación/hibernación después de que se devuelven los resultados de la fila completa? Gracias. – KyleM

+0

@KyleM: Ha pasado mucho tiempo desde que utilicé NHibernate para decirlo con seguridad, pero esperaba que se ejecutara como parte del SQL. –

+0

Gracias ... eso es lo que creo también. Acabo de recordar otra forma de verificar (hibernar el registro de consultas, que normalmente no usamos ...), así que verifico e informo. – KyleM

29

La proyección es una de las operaciones básicas de Algebra Relacional. Toma una relación y una lista (posiblemente vacía) de atributos de esa relación como entrada. Genera una relación que contiene solo la lista de atributos especificada con tuplas duplicadas eliminadas. En otras palabras, la salida también debe ser una relación.

Ejemplo, si la relación R {A, B}, contiene tres tuplas {1,10}, {2,10}, {3,20}, entonces la proyección de R sobre la lista de atributos {B} contendría 2 tuplas: {10}, {20}.

En resumen, la proyección es más o menos equivalente a SELECT DISTINCT en SQL (excluyendo casos con nulos y columnas duplicadas).

2

En términos de hibernación, es como especificar qué columnas seleccionar. A diferencia de dejar que las asignaciones determinen qué columnas se obtienen. Esto significa que puede especificar funciones sql, subconsultas, una sola columna, o tal vez todo lo anterior a través de una ProjectionList. Por ejemplo, si desea contar las filas en una tabla SetProjection(Projections.RowCount()).

7

Proyección significa subconjunto de columnas en una consulta.

select x, y, z from YourTable 

x, y, z es la proyección aquí.

+5

¿No significa "subconjunto de columnas" en lugar de "número de columnas" ? – CoDEmanX

2

Si está familiarizado con SQL o tablas de base de datos: Proyección se refiere a la cantidad de campos/columnas/atributos a devolver. La selección se refiere al número de filas/registros que se devolverán. Hay buenas explicaciones de vídeo here y here

+0

Si bien estos enlaces pueden responder a la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar los enlaces para referencia.Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia. – Cleb

-1

also call projection

También se llama proyección, por favor, compruebe el diagrama de

proyección reacciona a eventos en el sistema

proyecto es sencilla oyente.

+0

No, la proyección no es un oyente, es un mapeo. Buena foto, mala interpretación. –

Cuestiones relacionadas