Введение

Операция, ограничивающая отношение к указанному набору атрибутов.
В реляционной алгебре проекция — это унарная операция, записываемая как Π<sub>A</sub>(R), где R — отношение, а A — имена атрибутов. Её результат определяется как множество, полученное при ограничении компонентов кортежей в R набором A — остальные атрибуты отбрасываются (или исключаются). Практически, если отношение рассматривать как таблицу, то проекцию можно представить как выбор подмножества её столбцов. Например, если атрибуты — (имя, возраст), то проекция отношения {(Алиса, 5), (Боб, 8)} на список атрибутов (возраст) даст {5, 8} — мы отбросили имена и знаем только, какие возрасты присутствуют. Проекции также могут изменять значения атрибутов. Например, если R имеет атрибуты A, B, C, где значения A — числа, то Π<sub>A/2</sub>(R) эквивалентно Π<sub>A</sub>(R), но со всеми значениями A, уменьшенными вдвое.

Связанные понятия

Тесно связанная концепция в теории множеств (см.: проекция (теория множеств)) отличается от концепции реляционной алгебры тем, что в теории множеств проекция выполняется на упорядоченные компоненты, а не на атрибуты. Например, проекция на второй компонент дает 7. Проекция является аналогом экзистенциальной квантификации в предикатной логике в реляционной алгебре. Атрибуты, не включенные в проекцию, соответствуют экзистенциально квантифицированным переменным в предикате, расширением которого является отношение операнда. Приведенный ниже пример иллюстрирует это. В силу соответствия экзистенциальной квантификации, некоторые специалисты предпочитают определять проекцию с точки зрения исключенных атрибутов. В языке программирования, разумеется, можно предоставить обозначения для обоих подходов, и это было сделано в ISBL и ряде языков, ориентировавшихся на ISBL. Почти идентичная концепция встречается в категории моноидов, называемая проекцией строки, которая заключается в удалении из строки всех символов, не принадлежащих заданному алфавиту. При реализации в стандарте SQL "проекция по умолчанию" возвращает мультимножество, а для получения множества необходимо добавить ключевое слово DISTINCT, чтобы исключить дубликаты.