2010-08-11 4 views
34

Что такое проекция с точки зрения теории базы данных и NHibernate при использовании SetProjection()?Что такое проекция?

+0

Возможный дубликат [Что такое проекция в NHibernate?] (Http://stackoverflow.com/questions/4746995/what-is-a-projection-in-nhibernate) – philipxy

ответ

29

Очень просто, это функция, которая принимает вход (например, строку базы данных) и производит вывод (например, один из столбцов из строки или, возможно, некоторый расчет на основе нескольких столбцов).

+0

В Hibernate, где выполняется функция, которая производит вывод (например, столбец) выполняется? Случается ли это на сервере базы данных SQL или происходит ли это на сервере application/hibernate после получения результатов полной строки? Благодарю. – KyleM

+0

@KyleM: Слишком давно я использовал NHibernate, чтобы сказать наверняка, но я ожидаю, что он будет выполнен как часть SQL. –

+0

Спасибо .. вот что я думаю. Я просто вспомнил еще один способ проверить (спящий журнал запросов, который мы обычно не используем ..), поэтому я проверю и отправлю отчет. – KyleM

29

Проекция является одной из основных операций реляционной алгебры. Он принимает отношение и (возможно, пустой) список атрибутов этого отношения в качестве входных данных. Он выводит отношение, содержащее только указанный список атрибутов с удаленными дублирующими кортежами. Другими словами, выход должен также быть отношением.

Пример: если отношение R {A, B} содержит три набора {1,10}, {2,10}, {3,20}, то проекция R над списком атрибутов {B} будет содержать 2 кортежа: {10}, {20}.

Короче говоря, проекция более или менее эквивалентна SELECT DISTINCT в SQL (исключая случаи с нулями и дублирующимися столбцами).

2

С точки зрения спящего режима, это как указать, какие столбцы выбрать. В отличие от того, чтобы сопоставления определяли, какие столбцы извлекаются. Это означает, что вы можете указать sql-функции, подзапросы, один столбец или, возможно, все вышеперечисленное с помощью ProjectionList. Например, если вы хотите подсчитать строки в таблице SetProjection(Projections.RowCount()).

7

Проецирование означает подмножество столбцов в запросе.

select x, y, z from YourTable 

x, y, z здесь проекция.

+5

Разве это не означает «подмножество столбцов», а не «количество столбцов», ? – CoDEmanX

2

Если вы знакомы с таблицами SQL или базы данных: Проецирование относится к числу возвращаемых полей/столбцов/атрибутов. Выбор относится к количеству строк/записей для возврата. Есть хорошее видео объяснение here и here

+0

Хотя эти ссылки могут ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылки для справки.Ответные ссылки могут стать недействительными, если связанная страница изменится. – Cleb

-1

also call projection

Это также называет проекцию, пожалуйста, проверьте диаграмму

Проекции реагирует на события в системе

Проект прост слушатель.

+0

Нет, проекция не является слушателем, это отображение. Хорошая картина, неправильная интерпретация. –

Смежные вопросы