Что означает термин «проекция» в запросе SQL (или в определении представления)


15

В документе Oracle « Оптимизатор запросов» в разделе « Просмотр слияния» я нашел следующую информацию

Оптимизация слиянием представлений применяется к представлениям, которые содержат только выборки, проекции и объединения. То есть объединяемые представления не содержат операторов множеств, агрегатных функций, DISTINCT, GROUP BY, CONNECT BY и т. Д. (акцент мой)

Тем не менее, я могу только догадываться, что такое проекция на самом деле относится.

Ответы:


17

В реляционной алгебре проекция означает сбор поднабора столбцов для использования в операциях, т.е. проекция - это список выбранных столбцов.

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

В представлении проекция соответствует списку столбцов, выбранных в запросе, лежащем в основе представления.


13

Проекция относится к тому подмножеству набора всех столбцов, найденных в таблице, которое вы хотите вернуть. Может варьироваться от 0 ** до полной комплектации.

В таблице есть два «набора», которые соответствуют двум измерениям таблицы. Каждая таблица имеет набор столбцов, а также набор строк . Каждое отдельное значение в таблице можно найти на конкретном пересечении этих двух * наборов **. Тем не менее, ваше значение не найдено при переходе по адресу, например, T60 , как в Excel.

Нет никакого порядка, присущего реляционным таблицам . Это важно помнить. Вместо этого, чтобы получить ваше единственное значение, вы должны выбрать для подмножества столбцов (один в данном случае) и подмножество строк (один в этом случае). Чтобы выбрать подмножество одного столбца из всех доступных, вам нужно знать только его имя, а также имя таблицы. Имя столбца будет уникальным в пределах его таблицы.

После того, как вы выбрали столбец, в котором находится ваше значение, вам нужно будет выбрать конкретную строку, в которой он находится. Однако строки не имеют имен, как столбцы. То, как мы указываем строку, , , ну, мы не совсем. , , Мы указываем что-то, что мы знаем о ценности, которую мы ищем. Вы должны знать что-то, связанное (буквально) с ценностью, которую вы ищете. Если вы можете указать достаточно связанной информации, вы сможете сократить набор возвращаемых строк до того, который вы ищете.

Думайте об этом, как будто студент колледжа потерял свой рюкзак. Допустим, парень потерял его. Он звонит потерянному и найденному, и присутствующая женщина говорит: «Да, у нас есть пара дюжин рюкзаков. Вы можете это описать?» Вы говорите «Ну, это синий?». На что она отвечает: «Ты спрашиваешь меня или рассказываешь мне», а затем говорит: «У меня восемь синих, мне придется справиться лучше, а ты не слишком уверен в этом». Вы говорите: «Давайте посмотрим, хм, ах! В нем была моя книга по математике 1010». «Хорошо, теперь ты до четырех». Потом вы вспоминаете, что должны были встретиться со своей девушкой Люси через 15 минут, и это вызвало еще одно воспоминание - о том времени, когда вы скучали по математике 1010 и писали - настоящими маленькими буквами на дне рюкзака: «Я люблю Люси ".Рики . "

Проецирование можно сравнить с тем, что вы потеряли - рюкзак. Выделение может быть уподоблено описанию его атрибутов : оно синее, внутри находится книга по математике 1010, а внизу написано «Я люблю Люси».

Вы делаете то же самое с SQL. Во-первых, какую информацию вы хотите увидеть. Во-вторых, критерии, описывающие, какой из них вы хотите видеть. Они называются предикатами или утверждениями об истине . Они верны для одного или нескольких участников набора. Если это не так, они не возвращают никаких значений.

* Реализации SQL некоторых поставщиков предоставляют средства для нарушения этих правил, такие как Вложенные таблицы в Oracle. Однако стандартные двумерные таблицы по-прежнему являются преобладающей формой.

** CJ Date написал очень интересную статью под названием «Таблица без столбцов». Я нашел это очень стоящим для чтения, так как я делаю большинство из его многочисленных статей "Писаний". Я очень рекомендую их!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.