В реляционной алгебре проекция — это унарная операция, записываемая как , где — отношение , а — имена атрибутов. Ее результат определяется как набор , полученный, когда компоненты кортежей в ограничиваются набором — он отбрасывает (или исключает ) другие атрибуты. [1]
На практике, если отношение рассматривается как таблица, то проекцию можно рассматривать как выбор подмножества ее столбцов. Например, если атрибуты — (имя, возраст), то проекция отношения {(Алиса, 5), (Боб, 8)} на список атрибутов (возраст) дает {5,8} — мы отбросили имена и знаем только, какие возрасты присутствуют.
Проекции также могут изменять значения атрибутов. Например, если имеет атрибуты , , , где значения являются числами, то это похоже на , но все -значения уменьшены вдвое. [2]
Тесно связанное понятие в теории множеств (см.: проекция (теория множеств) ) отличается от понятия реляционной алгебры тем, что в теории множеств проецирование осуществляется на упорядоченные компоненты, а не на атрибуты. Например, проецирование на второй компонент дает 7.
Проекция — это аналог экзистенциальной квантификации в логике предикатов в реляционной алгебре . Невключенные атрибуты соответствуют экзистенциально квантифицированным переменным в предикате, расширение которого представляет отношение операнда. Приведенный ниже пример иллюстрирует этот момент.
Из-за соответствия с экзистенциальной квантификацией некоторые авторитеты предпочитают определять проекцию в терминах исключенных атрибутов. В компьютерном языке, конечно, можно предоставить обозначения для обоих, и это было сделано в ISBL и нескольких языках, которые взяли пример с ISBL.
Почти идентичная концепция встречается в категории моноидов , называемая строковой проекцией , которая заключается в удалении всех букв в строке , которые не принадлежат данному алфавиту .
При реализации в стандарте SQL «проекция по умолчанию» возвращает мультимножество вместо набора, а проекция π получается путем добавления DISTINCT
ключевого слова для устранения дублирующихся данных.
В качестве примера рассмотрим отношения, изображенные в следующих двух таблицах, которые представляют собой отношение « Человек» и его проекцию на (некоторые говорят «над») атрибуты Возраст и Вес :
Предположим, что предикат Человека — « Имя имеет возраст лет и весит вес ». Тогда данная проекция представляет предикат: «Существует Имя, такое что Имя имеет возраст лет и весит вес ».
Обратите внимание, что у Гарри и Питера одинаковый возраст и вес, но поскольку результат является отношением, а значит, множеством, эта комбинация появляется в результате только один раз.
Более формально семантика проекции определяется следующим образом:
где ограничение кортежа на множество так, что
где — значение атрибута, — имя атрибута, а — элемент домена этого атрибута — см. Отношение (база данных) .
Результат проекции определяется только в том случае, если является подмножеством заголовка .
Проекция по никаким атрибутам возможна, что дает отношение степени ноль . В этом случае мощность результата равна нулю, если операнд пустой, в противном случае — единице. Два отношения степени ноль — единственные, которые нельзя изобразить в виде таблиц.